跳至主要内容

為高可用性 K3s Kubernetes 叢集設定基礎架構

本教學旨在幫助您為 Rancher 管理伺服器配置底層基礎架構。

針對僅供 Rancher 使用的 Kubernetes 叢集,建議的基礎架構會因 Rancher 將安裝在 K3s Kubernetes 叢集、RKE Kubernetes 叢集或單一 Docker 容器而有所不同。

有關每個安裝選項的更多資訊,請參閱此頁面。

重要:

這些節點必須位於同一區域。您可以將這些伺服器放置在不同的可用區(資料中心)。

要在高可用性 K3s 叢集上安裝 Rancher 管理伺服器,我們建議設定以下基礎架構:

  • 兩個 Linux 節點,通常是虛擬機器,位於您選擇的基礎架構提供者上。
  • 一個外部資料庫,用於儲存叢集資料。我們建議使用 MySQL。
  • 一個負載平衡器,將流量導向兩個節點。
  • 一個 DNS 記錄,將 URL 對應到負載平衡器。這將成為 Rancher 伺服器 URL,下游 Kubernetes 叢集需要能夠連接到它。

1. 設定 Linux 節點​

確保您的節點符合作業系統、容器執行時期、硬體和網路的一般安裝需求。

有關設定 Linux 節點的一種方式的範例,請參閱此教學,了解如何在 Amazon EC2 中將節點設定為執行個體。

2. 設定外部資料存儲​

K3s 能夠使用 etcd 以外的資料存儲來執行 Kubernetes,這使 K3s 與其他 Kubernetes 發行版不同。此功能為 Kubernetes 管理員提供了靈活性。可用的選項讓您可以選擇最適合您使用案例的資料存儲。

對於高可用性 K3s 安裝,您需要設定一個 MySQL 外部資料庫。Rancher 已在使用 MySQL 5.7 版本作為資料存儲的 K3s Kubernetes 叢集上進行了測試。

當您使用 K3s 安裝腳本安裝 Kubernetes 時,您將傳入 K3s 連接到資料庫的詳細資訊。

有關設定 MySQL 資料庫的一種方式的範例,請參閱此教學,了解如何在 Amazon 的 RDS 服務上設定 MySQL。

有關配置 K3s 叢集資料存儲可用選項的完整清單,請參閱 K3s 文件。

3. 設定負載平衡器​

您還需要設定一個負載平衡器,將流量導向兩個節點上的 Rancher 副本。這將防止任何單一節點的中斷導致與 Rancher 管理伺服器的通訊中斷。

當 Kubernetes 在稍後的步驟中設定時,K3s 工具將部署 Traefik Ingress 控制器。此控制器將監聽 worker 節點的連接埠 80 和 443,回應目標為特定主機名稱的流量。

當 Rancher 安裝完成後(也在稍後的步驟中),Rancher 系統會建立一個 Ingress 資源。該 Ingress 會告訴 Traefik Ingress 控制器監聽目標為 Rancher 主機名稱的流量。Traefik 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,而不要用於其他應用程式。

4. 設定 DNS 記錄​

設定好負載平衡器後,您需要建立一個 DNS 記錄,將流量發送到此負載平衡器。

根據您的環境,這可能是指向負載平衡器 IP 的 A 記錄,也可能是指向負載平衡器主機名稱的 CNAME。無論哪種情況,請確保此記錄是您希望 Rancher 回應的主機名稱。

在稍後安裝 Rancher 時,您需要指定此主機名稱,並且稍後無法更改。請確保您的決定是最終決定。

有關設定 DNS 記錄以將網域流量路由到 Amazon ELB 負載平衡器的操作指南,請參閱 AWS 官方文件。