Kubernetes - 跨 3 個辦公地點的 HA 分散式設置

Kubernetes - 跨 3 個辦公地點的 HA 分散式設置

我想透過 3 個控制平面、3 個工作節點叢集跨 3 個辦公地點擴展我的內部本地堆疊 HA Kubernetes。因此,每個辦公室都有每個控制平面和 1 名工作人員。每個控制平面都有自己的靜態 IP。

如果假設辦公室 1 停電,我無法理解負載平衡器(我正在使用 Metallb)如何完成其​​工作。流量如何重定向到辦公室 2 和 3?

例如,存取在office-1-node 上執行的nextcloud 的外部、公用使用者可能會使用與office-1-node 靜態IP 關聯的fqdn cloud.company.com。 (雖然,nextcloud可能運行在office-2-node或office-3-node的worker或master上......但就用戶而言,這不是一個問題。)

如果office-1-node停電,如何將cloud.company.com導向office-2-node或office-3-node的靜態IP?

我還在學習中,所以請在回答時牢記這一點。

答案1

我可以看到 Metal LB 已部署(https://metalb.universe.tf/installation/)作為控制器(處理 IP 分配)和守護程序集(組件 - 揚聲器 -> 這是我認為按照以下方式處理外部公告https://metalb.universe.tf/concepts/)。所以這個LB基本上是作為Kubernetes資源來部署的。

現在回答您的問題,如果 office-1-node 發生中斷,其他節點的 daemonset 中的 pod 將按要求運行(進行外部公告並使服務可存取),並且其他主節點的控制器將繼續處理 IP 分配。

資源:

  1. Kubernetes 控制器https://kubernetes.io/docs/concepts/architecture/controller/
  2. Kubernetes 守護程式集https://kubernetes.io/docs/concepts/workloads/controllers/daemonset/
  3. Kubernetes Metallb 清單 -https://github.com/metalb/metalb/blob/main/manifests/metalb.yaml

編輯:回答第二條評論中的問題。首先,您需要購買一個網域(來自 godaddy、bigrock、AWS Route53 等)。其次建立一個 CNAME 將該網域指向您的負載平衡器的 IP(可選連接埠)(在您的情況下,office-1,2,3 的 IP 可以以循環方式使用以確保正常運行時間)。這種循環方式稱為DNS負載平衡。或者你可以實施DNS 故障轉移就像在 AWS Route53 中一樣,透過在負載平衡器中實施運行狀況檢查。完成後,外部使用者將繼續可以存取 kubernetes 中的服務(從 office-2 和 3)

相關內容