Rancher版本:v2.5
本節描述 Kubernetes 中的 etcd 節點、 controlplane 節點和 worker 節點的角色,以及這些角色如何在集群中協同工作。
線條顯示了組件之間的通信。顏色純粹用於視覺輔助。
etcd
etcd 角色的節點將運行 etcd,etcd 是一個擁有一致性和高可用性的鍵值對存儲,它用於存儲 Kubernetes 集群中的所有數據。etcd 會將數據復制到每個 etcd 節點上。
注意: 在 UI 中如果具有 etcd 角色的節點顯示為 不可調度,這意味着在默認情況下,不會將 pod 調度到這些節點。
Control Plane
在具有 controlplane 角色的節點上運行 Kubernetes 的 master 組件(不包括etcd,因為它是一個單獨的角色)。
注意: 在 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 組件。