Kubernetes微服务实战
上QQ阅读APP看书,第一时间看更新

1.3.1 控制平面

控制平面由以下几个组件组成:

·API服务器

·etcd元数据存储

·调度器

·控制器管理器

·云控制器管理器

让我们依次查看每个组件的角色和作用。

1.API服务器

kube API服务器是一个庞大的REST服务器,对外公开Kubernetes API。你可以在控制平面中部署多个API服务器实例以实现高可用。API服务器会将集群状态保留在etcd存储中。

2.etcd存储

Kubernetes集群信息都存储在etcdhttps://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访问令牌对新的命名空间进行初始化。