高可用性拓撲的選項

本頁說明配置高可用性 (HA) Kubernetes 叢集拓撲的兩個選項。

您可以設定 HA 叢集

  • 使用堆疊式控制平面節點,其中 etcd 節點與控制平面節點共置
  • 使用外部 etcd 節點,其中 etcd 在與控制平面不同的節點上執行

在設定 HA 叢集之前,您應仔細考慮每個拓撲的優點和缺點。

堆疊式 etcd 拓撲

堆疊式 HA 叢集是一種 拓撲,其中由 etcd 提供的分散式資料儲存叢集堆疊在由 kubeadm 管理的節點所形成的叢集之上,這些節點執行控制平面元件。

每個控制平面節點都執行 kube-apiserverkube-schedulerkube-controller-manager 的執行個體。kube-apiserver 使用負載平衡器向工作節點公開。

每個控制平面節點都會建立一個本機 etcd 成員,而此 etcd 成員僅與此節點的 kube-apiserver 通訊。本機 kube-controller-managerkube-scheduler 實例也適用相同情況。

此拓撲將控制平面和 etcd 成員耦合在相同的節點上。相較於具有外部 etcd 節點的叢集,此拓撲設定更簡單,且更容易管理複寫。

然而,堆疊式叢集會面臨耦合失敗的風險。如果一個節點故障,則 etcd 成員和控制平面實例都會遺失,而備援性會受到影響。您可以透過新增更多控制平面節點來降低此風險。

因此,對於 HA 叢集,您應至少執行三個堆疊式控制平面節點。

這是 kubeadm 中的預設拓撲。當使用 kubeadm initkubeadm join --control-plane 時,會在控制平面節點上自動建立本機 etcd 成員。

Stacked etcd topology

外部 etcd 拓撲

具有外部 etcd 的 HA 叢集是一種拓撲,其中由 etcd 提供的分散式資料儲存叢集位於執行控制平面元件的節點所組成的叢集外部。

與堆疊式 etcd 拓撲一樣,外部 etcd 拓撲中的每個控制平面節點都會執行 kube-apiserverkube-schedulerkube-controller-manager 的實例。且 kube-apiserver 會透過負載平衡器暴露給工作節點。然而,etcd 成員會在個別主機上執行,且每個 etcd 主機都會與每個控制平面節點的 kube-apiserver 通訊。

此拓撲將控制平面和 etcd 成員解耦合。因此,它提供了一個 HA 設定,其中遺失控制平面實例或 etcd 成員的影響較小,且不如堆疊式 HA 拓撲那樣影響叢集備援性。

然而,此拓撲需要兩倍於堆疊式 HA 拓撲的主機數量。對於具有此拓撲的 HA 叢集,至少需要三個控制平面節點的主機和三個 etcd 節點的主機。

External etcd topology

下一步

上次修改時間:2024 年 10 月 16 日上午 9:28 PST:Tweak and clean up four kubeadm files (67c5917e32)