為高可用性 RKE2 Kubernetes 叢集設定基礎架構
本教學旨在幫助您為 Rancher 管理伺服器配置底層基礎架構。
針對僅供 Rancher 使用的 Kubernetes 叢集,建議的基礎架構會因 Rancher 將安裝在 RKE2 Kubernetes 叢集、RKE Kubernetes 叢集或單一 Docker 容器而有所不同。
這些節點必須位於同一區域。您可以將這些伺服器放置在不同的可用區(資料中心)。
要在高可用性 RKE2 叢集上安裝 Rancher 管理伺服器,我們建議設定以下基礎架構:
- 三個 Linux 節點,通常是虛擬機器,位於您選擇的基礎架構提供者上。
- 一個負載平衡器,將流量導向節點。
- 一個 DNS 記錄,將 URL 對應到負載平衡器。這將成為 Rancher 伺服器 URL,下游 Kubernetes 叢集需要能夠連接到它。
1. 設定 Linux 節點
確保您的節點符合作業系統、容器執行時期、硬體和網路的一般安裝需求。
有關設定 Linux 節點的一種方式的範例,請參閱此教學,了解如何在 Amazon EC2 中將節點設定為執行個體。
2. 設定負載平衡器
您還需要設定一個負載平衡器,將流量導向所有節點上的 Rancher 副本。這將防止任何單一節點的中斷導致與 Rancher 管理伺服器的通訊中斷。
當 Kubernetes 在稍後的步驟中設定時,RKE2 工具將部署 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 官方文件。