Kubernetes架构由管理节点和工作节点,以及一个键值存储系统(etcd)组成,如图1-3所示。
图1-3 Kubernetes集群架构
管理节点(master node,以下简称Master)是Kubernetes集群的控制中心,负责监控整个集群的状态、资源调度和响应集群事件等。其主要组件如下所示。
(1)kube-apiserver:提供Kubernetes API服务,负责处理外部和内部组件的请求,并将这些操作存储到etcd中。
(2)etcd:一个分布式键值存储系统,用于存储Kubernetes集群的数据。etcd是由CoreOS开源的,它并不属于Kubernetes集群本身,因此etcd可以独立于集群进行部署。
(3)kube-controller-manager:负责管理多个控制器的程序。这些控制器包括但不限于以下控制器。
Node Controller(节点控制器):负责监控节点状态,并在节点出现故障时进行响应。
Replication Controller(副本控制器):负责确保在集群中运行特定数量的Pod副本。
Job Controller(任务控制器):负责监控Job对象,并生成相应的Pod来执行任务。
Endpoint Controller(端点控制器):负责管理与Service相应的Endpoint对象,确保Endpoint关联正确的Pod IP地址。
这些控制器负责维护集群的不同方面,确保整个集群的状态符合预期。
(4)kube-scheduler:根据预定的算法,将未指定节点的Pod分配到合适的节点上。
工作节点(worker node,以下简称Node)是Kubernetes集群的工作节点,它提供运行容器所需的资源和环境。它的主要组件如下所示。
kubelet:运行在每个节点上,负责管理Pod和容器的生命周期,如启动容器、挂载数据卷、获取容器状态以及向管理节点汇报等。
kube-proxy:也是运行在每个节点上,负责实现集群内部的网络代理和负载均衡器功能。
container-runtime(容器运行时):实际运行和管理容器的服务。Kubernetes支持多种容器运行时,如docker、containerd、cri-o等,以及其他支持Kubernetes CRI(Container Runtime Interface,容器运行时接口)的实现。