1. 設定基礎設施和私有鏡像倉庫
在本節中,您將為離線環境中的 Rancher 管理伺服器配置底層基礎設施。您還將設定 Rancher 節點必須能夠存取的私有容器映像檔鏡像倉庫。
離線環境是指 Rancher 伺服器在離線狀態或防火牆後方進行安裝的環境。
基礎設施取決於您是在 K3s Kubernetes 叢集、RKE Kubernetes 叢集還是單一 Docker 容器 上安裝 Rancher。有關各種安裝選項的詳細資訊,請參閱此頁面。
Rancher 可以安裝在任何 Kubernetes 叢集上。下面仍包含 RKE 和 K3s Kubernetes 基礎設施教學以供參考。
- K3s
- RKE
- Docker
我們建議為高可用性安裝設定以下基礎設施:
- 兩個 Linux 節點,通常是虛擬機器,位於您選擇的基礎設施提供者上。
- 外部資料庫,用於儲存叢集資料。支援 PostgreSQL、MySQL 和 etcd。
- 負載平衡器,用於將流量導向兩個節點。
- DNS 記錄,用於將 URL 對應到負載平衡器。這將成為 Rancher 伺服器 URL,下游 Kubernetes 叢集將需要能夠存取它。
- 私有鏡像倉庫,用於將容器映像檔分發到您的機器。
1. 設定 Linux 節點
這些主機將與網際網路斷開連接,但需要能夠連接到您的私有鏡像倉庫。
請確保您的節點符合 作業系統、容 器執行環境、硬體和網路的一般安裝要求。
有關設定 Linux 節點的一種方法範例,請參閱這篇教學,了解如何在 Amazon EC2 中將節點設定為實例。
2. 設定外部資料儲存
使用 etcd 以外的資料儲存來執行 Kubernetes 的能力使 K3s 與其他 Kubernetes 發行版有所不同。此功能為 Kubernetes 營運人員提供了彈性。可用的選項讓您可以選擇最適合您使用案例的資料儲存。
對於高可用性 K3s 安裝,您需要設定以下外部資料庫之一:
- PostgreSQL(已針對 10.7 和 11.5 版本進行認證)
- MySQL(已針對 5.7 版本進行認證)
- etcd(已針對 3.3.15 版本進行認證)
當您安裝 Kubernetes 時,您將傳入 K3s 連接到資料庫的詳細資訊。
有關設定資料庫的一種方法範例,請參閱這篇教學,了解如何在 Amazon 的 RDS 服務上設定 MySQL 資料庫。
有關設定 K3s 叢集資料儲存的完整可用選項清單,請參閱 K3s 文件。
3. 設定負載平衡器
您還需要設定負載平衡器,以將流量導向兩個節點上的 Rancher 副本。這將防止任何單一節點的故障導致與 Rancher 管理伺服器的通訊中斷。
當稍後步驟設定 Kubernetes 時,K3s 工具將部署 Traefik Ingress 控制器。此控制器將監聽工作節點的 80 和 443 連接埠,回應發往特定主機名稱的流量。
當安裝 Rancher 時(也在稍後的步驟中),Rancher 系統會建立一個 Ingress 資源。該 Ingress 告訴 Traefik Ingress 控制器監聽發往 Rancher 主機名稱的流量。Traefik Ingress 控制器在接收到發往 Rancher 主機名稱的流量時,會將該流量轉發到叢集中正在執行的 Rancher Pod。
對於您的實作,請考慮是否要使用或需要使用第 4 層或第 7 層負載平衡器:
- 第 4 層負載平衡器是兩者中較簡單的選擇,您將 TCP 流量轉發到您的節點。我們建議將您的負載平衡器設定為第 4 層負載平衡器,將流量轉發到 TCP/80 和 TCP/443 連接埠到 Rancher 管理叢集節點。叢集上的 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 官方文件。
5. 設定私有鏡像倉庫
Rancher 支援使用私有鏡像倉庫進行離線安裝。您必須有自己的私有鏡像倉庫或其他方式將容器映像檔分發到您的機器。
在稍後步驟設定 K3s Kubernetes 叢集時,您將使用此鏡像倉庫的詳細資訊建立私有鏡像倉庫設定檔案。
如果您需要建立私有鏡像倉庫,請參閱您各自執行環境的文件頁面:
要在高可用性 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 控制器。此控制器將監聽工作節點的 80 和 443 連接埠,回應發往特定主機名稱的流量。
當安裝 Rancher 時(也在稍後的步驟中),Rancher 系統會建立一個 Ingress 資源。該 Ingress 告訴 NGINX Ingress 控制器監聽發往 Rancher 主機名稱的流量。NGINX Ingress 控制器在接收到發往 Rancher 主機名稱的流量時,會將該流量轉發到叢集中正在執行的 Rancher Pod。
對於您的實作,請考慮是否要使用或需要使用第 4 層或第 7 層負載平衡器:
- 第 4 層負載平衡器是兩者中較簡單的選擇,您將 TCP 流量轉發到您的節點。我們建議將您的負載平衡器設定為第 4 層負載平衡器,將流量轉發到 TCP/80 和 TCP/443 連接埠到 Rancher 管理叢集節點。叢集上的 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 官方文件。
4. 設定私有鏡像倉庫
Rancher 支援使用安全的私有鏡像倉庫進行離線安裝。您必須有自己的私有鏡像倉庫或其他方式將容器映像檔分發到您的機器。
在稍後步驟設定 RKE Kubernetes 叢集時,您將使用此鏡像倉庫的詳細資訊建立私有鏡像倉庫設定檔案。
如果您需要建立私有鏡像倉庫,請參閱您各自執行環境的文件頁面:
-
Docker 安裝方式適用於想要測試 Rancher 的使用者。由於只有一個節點和一個 Docker 容器,如果該節點故障,您將遺失 Rancher 伺服器的所有資料。
-
Rancher 備份操作器可用於將 Rancher 從單一 Docker 容器安裝遷移到高可用性 Kubernetes 叢集上的安裝。有關詳細資訊,請參閱有關將 Rancher 遷移到新叢集的文件。
1. 設定 Linux 節點
此主機將與網際網路斷開連接,但需要能夠連接到您的私有鏡像倉庫。
請確保您的節點符合 作業系統、容器、硬體和網路的一般安裝要求。
有關設定 Linux 節點的一種方法範例,請參閱這篇教學,了解如何在 Amazon EC2 中將節點設定為實例。
2. 設定私有 Docker 鏡像倉庫
Rancher 支援在您的堡壘伺服器上使用私有鏡像倉庫進行離線安裝。您必須有自己的私有鏡像倉庫或其他方式將容器映像檔分發到您的機器。
如果您需要建立私有鏡像倉庫的協助,請參閱 Docker 官方文件。