在 Rancher 中設定負載平衡器和 Ingress 控制器
在 Rancher 中,您可以設定負載平衡器和 Ingress 控制器來重新導向服務請求。
負載平衡器
啟動應用程式後,該應用程式僅在叢集內可用。無法從叢集外部存取。
如果您希望應用程式可從外部存取,則必須在叢集中新增負載平衡器或 Ingress。負載平衡器為外部連線建立通道以存取您的叢集,前提是使用者知道負載平衡器的 IP 位址和應用程式的連接埠號碼。
Rancher 支援兩種類型的負載平衡器:
有關更多資訊,請參閱負載平衡器。
負載平衡器限制
負載平衡器有幾個您應該注意的限制:
-
負載平衡器每個服務只能處理一個 IP 位址,這意味著如果您在叢集中執行多個服務,則必須為每個服務配置一個負載平衡器。執行多個負載平衡器可能會很昂貴。
-
如果您想在託管的 Kubernetes 叢集(即託管在 GKE、EKS 或 AKS 中的叢集)中使用負載平衡器,則負載平衡器必須在該雲端提供者的基礎設施中執行。請根據您佈建叢集的方式查看有關負載平衡器支援的相容性表格:
Ingress
如上述限制所述,使用負載平衡器的缺點是:
- 負載平衡器每個服務只能處理一個 IP 位址。
- 如果您在叢集中執行多個服務,則必須為每個服務配置一個負載平衡器。
- 為每個服務配置負載平衡器可能會很昂貴。
相比之下,當使用 Ingress 作為進入叢集的入口點時,Ingress 可以更靈活地將流量路由到多個服務。它可以將多個 HTTP 請求對應到服務,而無需為每個服務配置個別的 IP 位址。
因此,如果您希望使用相同的 IP 位址、相同的第 7 層協定或相同的特權節點連接埠(80 和 443)公開多個服務,則使用 Ingress 會很有用。
Ingress 與一個或多個 Ingress 控制器協同工作,以動態路由服務請求。當 Ingress 收到請求時,叢集中的 Ingress 控制器會根據您設定的服務子網域或路徑規則將請求導向到正確的服務。
每個 Kubernetes Ingress 資源大致對應於 /etc/nginx/sites-available/ 中包含 server{} 設定區塊的檔案,其中設定了對特定檔案和資料夾的請求。
您的 Ingress(類似於負載平衡器,為叢集建立進入連接埠)可以駐留在叢集內或外部。駐留在 RKE 啟動的叢集中的 Ingress 和 Ingress 控制器由 Nginx 提供支援。
Ingress 還可以提供其他功能,例如 SSL 終止、基於名稱的虛擬主機等。
請勿將 Ingress 新增到 local 叢集。Rancher 使用的 Nginx Ingress Controller 充當 Rancher 管理的_所有_叢集(包括 local 叢集)的全域進入點。因此,當使用者嘗試存取應用程式時,由於 Nginx 設定正在重新載入,您的 Rancher 連線可能會中斷。我們建議透過 僅在您使用 Rancher 啟動的叢集中部署應用程式來解決此問題。
- 有關如何在 Rancher 中設定 Ingress 的更多資訊,請參閱 Ingress。
- 有關 Ingress 和 Ingress 控制器的完整資訊,請參閱 Kubernetes Ingress 文件。
- 在專案中使用 Ingress 時,您可以透過設定 Global DNS 項目將 Ingress 主機名稱程式化到外部 DNS。