為高可用性 RKE Kubernetes 叢集設定基礎架構
RKE1 已達到生命週期終止,不再受到支援。對於新的部署,請使用 RKE2 或 K3s。
本教學旨在幫助您建立一個高可用性 RKE 叢集,該叢集可用於安裝 Rancher 伺服器。
這些節點必須位於同一區域。您可以將這些伺服器放置在不同的可用區(資料中心)。
要在高可用性 RKE 叢集上安裝 Rancher 管理伺服器,我們建議設定以下基礎架構:
- 三個 Linux 節點,通常是虛擬機器,位於基礎架構提供者(例如 Amazon 的 EC2、Google Compute Engine 或 vSphere)上。
- 一個負載平衡器,將前端流量導向三個節點。
- 一個 DNS 記錄,將 URL 對應到負載平衡器。這將成為 Rancher 伺服器 URL,下游 Kubernetes 叢集需要能夠連接到它。
這些節點必須位於同一區域/資料中心。您可以將這些伺服器放置在不同的可用區。
為什麼需要三個節點?
在 RKE 叢集中,Rancher 伺服器資料儲存在 etcd 上。此 etcd 資料庫在所有三個節點上執行。
etcd 資料庫需要奇數個節點,以便它能夠始終以 etcd 叢集的多數票選舉領導者。如果 etcd 資料庫無法選舉領導者,etcd 可能會遭受腦裂,需要從備份還原叢集。如果三個 etcd 節點中的一個故障,剩餘的兩個節點可以選舉領導者,因為它們擁有 etcd 節點總數的多數。
1. 設定 Linux 節點
確保您的節點符合作業系統、容器執行時期、硬體和網路的一般安裝需求。
有關設定 Linux 節點的一種方式的範例,請參閱此教學,了解如何在 Amazon EC2 中將節點設定為執行個體。
2. 設定負載平衡器
您還需要設定一個負載平衡器,將流量導向三個節點中任何一個上的 Rancher 副本。這將防止任何單一節點的中斷導致與 Rancher 管理伺服器的通訊中斷。
當 Kubernetes 在稍後的步驟中設定時,RKE 工具將部署 NGINX Ingress 控制器。此控制器將監聽 worker 節點的連接埠 80 和 443,回應目標為特定主機名稱的流量。
當 Rancher 安裝完成後(也在稍後的步驟中),Rancher 系統會建立一個 Ingress 資源。該 Ingress 會告訴 NGINX Ingress 控制器監聽目標為 Rancher 主機名稱的流量。NGINX Ingress 控制器在收到目標為 Rancher 主機名稱的流量時,會將該流量轉發到叢集中正在執行的 Rancher Pod。
對於您的實作,請考慮是否要或需要使用第 4 層或第 7 層負載平衡器:
- 第 4 層負載平衡器是兩者中較簡單的選擇,您可以將 TCP 流量轉發到您的節點。我們建議將您的負載平衡器配置為第 4 層平衡器,將流量轉發到 Rancher 管理叢集節點的 TCP/80 和 TCP/443 連接埠。叢集上的 Ingress 控制器會將 HTTP 流量重新導向至 HTTPS,並在 TCP/443 連接埠上終止 SSL/TLS。Ingress 控制器會將 TCP/80 連接埠的流量轉發到 Rancher 部署中的 Ingress Pod。
- 第 7 層負載平衡器稍微複雜一些,但可以提供您可能需要的功能。例如,第 7 層負載平衡器能夠在負載平衡器上處理 TLS 終止,而不是由 Rancher 自行處理 TLS 終止。如果您想在基礎架構中集中管理 TLS 終止,這可能會很有幫 助。第 7 層負載平衡還提供了讓您的負載平衡器根據 HTTP 屬性(例如 Cookie 等)做出決策的能力,而第 4 層負載平衡器無法處理這些問題。如果您決定在第 7 層負載平衡器上終止 SSL/TLS 流量,您需要在稍後安裝 Rancher 時使用
--set tls=external選項。如需更多資訊,請參閱 Rancher Helm chart 選項。
有關如何設定 NGINX 負載平衡器的範例,請參閱此頁面。
有關設定 Amazon ELB Network Load Balancer 的操作指南,請參閱此頁面。
安裝後,請勿使用此負載平衡器(即 local 叢集 Ingress)來負載平衡 Rancher 以外的其他應用程式。與其他應用程式共享此 Ingress 可能會在為其他應用程式重新載入 Ingress 配置後導致 Rancher 的 WebSocket 錯誤。我們建議將 local 叢集專門用於 Rancher,而不要用於其他應用程式。
3. 設定 DNS 記錄
設定好負載平衡器後,您需要建立一個 DNS 記錄,將流量發送到此負載平衡器。
根據您的環境,這可能是指向負載平衡器 IP 的 A 記錄,也可能是指向負載平衡器主機名稱的 CNAME。無論哪種情況,請確保此記錄是您希望 Rancher 回應的主機名稱。
在稍後安裝 Rancher 時,您需要指定此主機名稱,並且稍後無法更改。請確保您的決定是最終決定。
有關設定 DNS 記錄以將網域流量路由到 Amazon ELB 負載平衡器的操作指南,請參閱 AWS 官方文件。