高可用拓撲選項

本頁面解釋了配置高可用(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:調整並清理四個 kubeadm 檔案 (67c5917e32)