跳至主要内容

第 4 層和第 7 層負載平衡

Kubernetes 支援兩種方式的負載平衡:第 4 層負載平衡和第 7 層負載平衡。

第 4 層負載平衡器​

第 4 層負載平衡器(或外部負載平衡器)將流量轉發到 Nodeports。第 4 層負載平衡器允許您轉發 HTTP 和 TCP 流量。

通常,第 4 層負載平衡器由底層雲端提供者支援,因此當您在裸機伺服器和 vSphere 叢集上部署 RKE 叢集時,不支援第 4 層負載平衡器。但是,可以使用單一全域管理的 config-map 在 NGINX 或第三方 Ingress 上公開服務。

備註

可以使用非雲端負載平衡器(例如 MetalLB)部署叢集。但是,該用例比雲端提供者支援的第 4 層負載平衡器更進階,並且無法在 Rancher 或 RKE 中設定。

第 4 層負載平衡的支援​

對第 4 層負載平衡器的支援因底層雲端提供者而異。

叢集部署第 4 層負載平衡器支援
Amazon EKS由 AWS 雲端提供者支援
Google GKE由 GCE 雲端提供者支援
Azure AKS由 Azure 雲端提供者支援
RKE on EC2由 AWS 雲端提供者支援
RKE on DigitalOcean有限的 NGINX 或第三方 Ingress*
RKE on vSphere有限的 NGINX 或第三方 Ingress*
RKE on Custom Hosts
(例如裸機伺服器)
有限的 NGINX 或第三方 Ingress*
第三方 MetalLB有限的 NGINX 或第三方 Ingress*

* 可以透過單一全域管理的 config-map 公開服務。

第 7 層負載平衡器​

第 7 層負載平衡器(或 Ingress 控制器)支援基於主機和路徑的負載平衡以及 SSL 終止。第 7 層負載平衡器僅轉發 HTTP 和 HTTPS 流量,因此僅監聽連接埠 80 和 443。Amazon 和 Google 等雲端提供者支援第 7 層負載平衡器。此外,RKE 叢集部署 Nginx Ingress Controller。

第 7 層負載平衡的支援​

對第 7 層負載平衡器的支援因底層雲端提供者而異。

叢集部署第 7 層負載平衡器支援
Amazon EKS由 AWS 雲端提供者支援
Google GKE由 GKE 雲端提供者支援
Azure AKS不支援
RKE on EC2Nginx Ingress Controller
RKE on DigitalOceanNginx Ingress Controller
RKE on vSphereNginx Ingress Controller
RKE on Custom Hosts
(例如裸機伺服器)
Nginx Ingress Controller

第 7 層負載平衡器中的主機名稱​

一些雲端管理的第 7 層負載平衡器(例如 AWS 上的 ALB Ingress 控制器)為 Ingress 規則公開 DNS 位址。您需要將(透過 CNAME)您的網域名稱對應到第 7 層負載平衡器產生的 DNS 位址。

其他第 7 層負載平衡器(例如 Google Load Balancer 或 Nginx Ingress Controller)直接公開一個或多個 IP 位址。Google Load Balancer 提供單一可路由的 IP 位址。Nginx Ingress Controller 公開所有執行 Nginx Ingress Controller 的節點的外部 IP。您可以執行以下任一操作:

  1. 設定您自己的 DNS 以將(透過 A 記錄)您的網域名稱對應到第 7 層負載平衡器公開的 IP 位址。
  2. 要求 Rancher 為您的 Ingress 規則產生 xip.io 主機名稱。Rancher 將取得您公開的 IP 之一(例如 a.b.c.d),並產生主機名稱 <ingressname>.<namespace>.a.b.c.d.xip.io。

使用 xip.io 的好處是,在您建立 Ingress 規則後,您可以立即取得可運作的進入點 URL。另一方面,設定您自己的網域名稱需要您設定 DNS 伺服器並等待 DNS 傳播。

相關連結​