1.3.1 控制平面
控制平面由以下几个组件组成:
·API服务器
·etcd元数据存储
·调度器
·控制器管理器
·云控制器管理器
让我们依次查看每个组件的角色和作用。
1.API服务器
kube API服务器是一个庞大的REST服务器,对外公开Kubernetes API。你可以在控制平面中部署多个API服务器实例以实现高可用。API服务器会将集群状态保留在etcd存储中。
2.etcd存储
Kubernetes集群信息都存储在etcd(https://coreos.com/etcd/)中——一个具有一致性和可靠性的分布式键值存储。etcd存储是一个开源项目,最初由CoreOS开发。
为了保证冗余性,通常由三个或五个etcd实例组成一个集群。如果你丢失了etcd存储中的数据,那么你会丢掉整个集群。
3.调度器
kube调度器负责将Pod调度到工作节点。它实现了一种复杂的调度算法,该算法考虑到多个维度的信息,例如每个节点上的资源可用性、用户指定的各种约束、可用节点的类型、资源限制和配额以及其他因素,例如亲和性、反亲和性、容忍和污点等。
4.控制器管理器
kube控制器管理器是包含多个控制器的单个进程,这些控制器监控着集群事件和对集群的更改并做出响应。
·节点控制器(node controller):负责在节点出现故障时进行通知和响应。
·副本控制器(replication controller):确保每个副本集(replica set)或副本控制器(replication controller)对象中有正确数量的Pod。
·端点控制器(endpoints controller):为每个服务分配一个列出该服务的Pod的端点对象。
·服务账户(service account)和令牌控制器(token controller):它们使用默认服务账户和相应的API访问令牌对新的命名空间进行初始化。