Kubernetes 中节点的角色

本节描述 Kubernetes 中的 etcd 节点、 controlplane 节点和 worker 节点的角色,以及这些角色如何在集群中协同工作。

这个图适用于Rancher 通过 RKE 部署的 Kubernetes 集群

集群图片

线条显示了组件之间的通信。颜色纯粹用于视觉辅助。

etcd

etcd 角色的节点将运行 etcd,etcd 是一个拥有一致性和高可用性的键值对存储,它用于存储 Kubernetes 集群中的所有数据。etcd 会将数据复制到每个 etcd 节点上。

注意: 在 UI 中如果具有 etcd 角色的节点显示为 不可调度,这意味着在默认情况下,不会将 pod 调度到这些节点。

Control Plane

在具有 controlplane 角色的节点上运行 Kubernetes 的 master 组件(不包括etcd,因为它是一个单独的角色)。有关 master 组件的详细列表,请参阅Kubernetes: master 组件

注意: 在 UI 中如果具有 controlplane 角色的节点显示为 不可调度,这意味着在默认情况下,不会将 pod 调度到这些节点。

API Server

Kubernetes API Server( kube-apiserver )是可以水平扩展的。每个具有 controlplane 角色的节点都将被添加到集群中每个节点上的 NGINX 代理中,因为这些节点上都运行着需要访问 API Server 的组件。这意味着如果一个controlplane节点变得不可调度,集群中其他节点上的本地 NGINX 代理将把请求转发到列表中的另一个 Kubernetes API Server。

Kubernetes 控制器

Kubernetes 控制器使用了选举机制。也就是说如果有多个实例的kube-controller-manager组件,那么只有一个是处于业务逻辑运行状态。它是通过一个 Kubernetes endpoint 实现的。kube-controller-manager的一个实例会在这个 Kubernetes endpoint 中增加一个条目,并且在一个可配置的时间间隔内定期更新这个条目。其他的实例将可以看到当前的 leader 并且等待这个条目过期(例如节点没有响应),并重新进行选举。

Kubernetes 调度器

Kubernetes 调度器使用了选举机制。也就是说如果有多个kube-scheduler组件的实例,那么只有一个是处于业务逻辑运行状态。它是通过一个 Kubernetes endpoint 实现的。kube-scheduler的一个实例会在这个 Kubernetes endpoint 中增加一个条目,并且在一个可配置的时间间隔内定期更新这个条目。其他的实例将可以看到当前的 leader 并且等待这个条目过期(例如节点响应了),并重新进行选举。

工作节点

具有 worker 角色的节点运行 Kubernetes Node 组件。参见 Kubernetes: Node 组件 的详细列表。