建議的叢集架構
有三種可以指派給節點的角色:etcd、controlplane 和 worker。
將 Worker 節點與具有其他角色的節點分離
在設計你的叢集時,你有兩個選項:
- 為每個角色使用專用節點。這可以確保為指定角色所需的元件提供資源可用性。它還根據連接埠需求嚴格隔離每個角色之間的網路流量。
- 將
etcd和controlplane角色指派給相同的節點。這些節點必須滿足兩個角色的硬體需求。
在任何情況下,worker 角色都不應在具有 etcd 或 controlplane 角色的節點上使用或新增。
因此,每個節點應該具有以下角色配置之一:
etcdcontrolplane- 同時具有
etcd和controlplane worker
每個角色的建議節點數量
叢集應該具有:
- 至少三個具有
etcd角色的節點,以便在遺失一個節點時仍能存活。增加此數量以提高節點容錯能力,並將它們分散到各個(可用性)區域,以提供更好的容錯能力。 - 至少兩個具有
controlplane角色的節點,以實現主要元件的高可用性。 - 至少兩個具有
worker角色的節點,以便在節點故障時重新排程工作負載。
有關每個角色用途的更多資訊,請參閱 Kubernetes 中節點角色章節。
Controlplane 節點數量
新增多個具有 controlplane 角色的節點可以使每個主要元件都具有高可用性。
etcd 節點數量
在維持叢集可用性的情況下,你可以一次遺失的節點數量取決於指派了 etcd 角色的節點數量。對於具有 n 個成員的叢集,最小值為 (n/2)+1。因此,我們建議在一個區域內的 3 個不同可用性區域中建立 etcd 節點,以便在遺失一個可用性區域時仍能存活。如果你只使用兩個區域,則只能在沒有遺失大多數節點的區域遺失時才能存活。
具有 etcd 角色的節點 | 多數 | 容錯能力 |
|---|---|---|
| 1 | 1 | 0 |
| 2 | 2 | 0 |
| 3 | 2 | 1 |
| 4 | 3 | 1 |
| 5 | 3 | 2 |
| 6 | 4 | 2 |
| 7 | 4 | 3 |
| 8 | 5 | 3 |
| 9 | 5 | 4 |
參考資料:
Worker 節點數量
新增多個具有 worker 角色的節點將確保在節點故障時可以重新排程你的工作負載。
為什麼 Rancher 叢集和執行應用程式的叢集的正式環境需求不同
你可能已經注意到,我們的 Kubernetes 安裝說明不符合我們對正式環境就緒叢集的定義,因為沒有 worker 角色的專用節點。然而,對於你的 Rancher 安裝,這個三節點叢集是有效的,因為:
- 它允許一個
etcd節點故障。 - 它透過擁有多個
controlplane節點來維護主要元件的多個實例。 - 除了 Rancher 本身之外,不應該在此叢集上建立其他工作負載。