什么是Kubernetes?
Kubernetes也被称为“k8s”。这个词来自希腊语,意思是飞行员或舵手。
Kubernetes是Google在2014年设计的可扩展,可移植的开源平台。它主要用于在节点集群中自动化基于容器的应用程序的部署,扩展和操作。它还旨在使用不同的方法来管理容器化应用程序的服务,这些方法可提供可伸缩性,可预测性和高可用性
实际上,它是“ Borg”的增强版本,用于管理长时间运行的流程和批处理作业。如今,许多云服务都提供了基于Kubernetes的基础架构,可以将其部署为平台提供的服务。此技术或概念可与许多容器工具(例如docker)一起使用,并遵循客户端-服务器体系结构。
Kubernetes的主要对象
Pod
它是Kubernetes应用程序中最小,最简单的基本单元。该节点标识集群中正在运行的进程。
Node
一个节点仅仅是一个主机,它被用来运行虚拟或物理机器。Kubernetes集群中的节点也称为仆从。
Service
Kubernetes中的服务是Pod的逻辑集合,它们可以一起工作。借助服务,用户可以轻松管理负载平衡配置。
ReplicaSet
kubernetes中的ReplicaSet用于标识在给定时间运行的Pod副本的特定数量。它取代了复制控制器,因为它功能更强大,并允许用户使用“基于集合”的标签选择器。
Namespace
Kubernetes支持各种虚拟集群,称为名称空间。这是在两个或多个用户之间分配群集资源的一种方法。
Kubernetes特性

Pod:它是Kubernetes中的一个部署单元,只有一个互联网协议地址
Horizontal Scaling:这是Kubernetes中的一个重要特性。该特性使用HorizontalPodAutoscalar来根据观察到的CPU利用率自动增加或减少部署、复制控制器、副本集或有状态集中的pods数量。
Automatic Bin Packing:Kubernetes帮助用户声明用于其容器的计算机的最大和最小资源
Service Discovery and load balancing:Kubernetes为一组容器分配IP地址和DNS名称,并在它们之间平衡负载
Automated rollouts and rollbacks:使用部署,Kubernetes将更改和更新分发到应用程序或其配置。如果系统中发生任何问题,则此技术会立即为您回滚这些更改。
Persistent Storage:Kubernetes提供了一个称为“持久存储”的基本特性来存储数据,在pod被杀死或重新调度后,它不会丢失。Kubernetes支持各种存储系统来存储数据,如谷歌计算引擎的持久磁盘(GCE PD)或Amazon弹性块存储(EBS)。它还提供分布式文件系统:NFS或GFS。
Self-Healing:这个特性在Kubernetes的概念中扮演着重要的角色。那些在执行过程中失败的容器,Kubernetes会自动重新启动它们。并且,对于那些没有回复用户定义的运行状况检查的容器,它将自动停止它们的工作
Kubernetes架构

Kubernetes的架构实际上遵循客户端-服务器架构。它由以下两个主要组件组成
Master Node (Control Plane)
Slave/worker node
Master Node or Kubernetes Control Plane
Kubernetes体系结构中的主节点用于管理集群的状态。它实际上是所有类型管理任务的入口点。在Kubernetes集群中,有多个主节点用于检查容错。
以下是主节点或Kubernetes控制平面中存在的四个不同组件
API Server
Scheduler
Controller Manager
ETCD
API Server
Kubernetes API服务器接收用户发送的REST命令。接收之后,它验证REST请求,处理,然后执行它们。在执行REST命令之后,集群的结果状态将作为分布式键值存储保存在'etcd'中。
Scheduler
主节点中的调度器将任务调度到工作节点。并且,对于每个工作节点,它用于存储资源使用信息。换句话说,它是一个负责将pods分配给可用工作节点的过程。
Controller Manager
控制器管理器也称为控制器。它是一个在非终止控制循环中执行的守护程序。主节点中的控制器执行任务并管理集群的状态。在Kubernetes中,控制器管理器执行各种类型的控制器来处理节点,端点等
ETCD
它是一种用于存储集群数据的开源、简单、分布式的键值存储。它是用GO编程语言编写的主节点的一部分。
Worker/Slave node
工作节点是使用pods执行应用程序的物理机器。它包含允许用户将资源分配给计划容器的所有基本服务。
Kubelet
该组件是一个代理服务,在集群中的每个工作节点上执行,他确保pods和其容器正常运行,每个工作程序节点中的每个kubelet与主节点通信。它还将启动,停止和维护由主节点直接组织为pod的容器。
Kube-proxy
它是Kubernetes的代理服务,只在集群中的每个工作节点上执行。此组件的主要目的是请求转发。每个节点通过Kube-proxy与Kubernetes服务交互
Pods
pod是一个或多个容器的组合,这些容器在节点上逻辑上一起执行。一个工作节点可以轻松地执行多个pods




