高可用拓撲選項
本頁面解釋了配置高可用(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 節點主機。