高可用性拓撲的選項
本頁說明配置高可用性 (HA) Kubernetes 叢集拓撲的兩個選項。
您可以設定 HA 叢集
- 使用堆疊式控制平面節點,其中 etcd 節點與控制平面節點共置
- 使用外部 etcd 節點,其中 etcd 在與控制平面不同的節點上執行
在設定 HA 叢集之前,您應仔細考慮每個拓撲的優點和缺點。
注意
kubeadm 靜態啟動 etcd 叢集。請閱讀 etcd 叢集指南 以取得更多詳細資訊。堆疊式 etcd 拓撲
堆疊式 HA 叢集是一種 拓撲,其中由 etcd 提供的分散式資料儲存叢集堆疊在由 kubeadm 管理的節點所形成的叢集之上,這些節點執行控制平面元件。
每個控制平面節點都執行 kube-apiserver
、kube-scheduler
和 kube-controller-manager
的執行個體。kube-apiserver
使用負載平衡器向工作節點公開。
每個控制平面節點都會建立一個本機 etcd 成員,而此 etcd 成員僅與此節點的 kube-apiserver
通訊。本機 kube-controller-manager
和 kube-scheduler
實例也適用相同情況。
此拓撲將控制平面和 etcd 成員耦合在相同的節點上。相較於具有外部 etcd 節點的叢集,此拓撲設定更簡單,且更容易管理複寫。
然而,堆疊式叢集會面臨耦合失敗的風險。如果一個節點故障,則 etcd 成員和控制平面實例都會遺失,而備援性會受到影響。您可以透過新增更多控制平面節點來降低此風險。
因此,對於 HA 叢集,您應至少執行三個堆疊式控制平面節點。
這是 kubeadm 中的預設拓撲。當使用 kubeadm init
和 kubeadm join --control-plane
時,會在控制平面節點上自動建立本機 etcd 成員。
外部 etcd 拓撲
具有外部 etcd 的 HA 叢集是一種拓撲,其中由 etcd 提供的分散式資料儲存叢集位於執行控制平面元件的節點所組成的叢集外部。
與堆疊式 etcd 拓撲一樣,外部 etcd 拓撲中的每個控制平面節點都會執行 kube-apiserver
、kube-scheduler
和 kube-controller-manager
的實例。且 kube-apiserver
會透過負載平衡器暴露給工作節點。然而,etcd 成員會在個別主機上執行,且每個 etcd 主機都會與每個控制平面節點的 kube-apiserver
通訊。
此拓撲將控制平面和 etcd 成員解耦合。因此,它提供了一個 HA 設定,其中遺失控制平面實例或 etcd 成員的影響較小,且不如堆疊式 HA 拓撲那樣影響叢集備援性。
然而,此拓撲需要兩倍於堆疊式 HA 拓撲的主機數量。對於具有此拓撲的 HA 叢集,至少需要三個控制平面節點的主機和三個 etcd 節點的主機。