關於 GKE 中的負載平衡


本頁面提供一般總覽,說明 Google Kubernetes Engine (GKE) 如何建立及管理 Google Cloud 負載平衡器。如要進一步瞭解 Google Cloud中可用的負載平衡器類型,請參閱負載平衡器類型 Google Cloud

本頁面適用於負責設計及建構貴機構網路的雲端架構師和網路專家。如要進一步瞭解 Google Cloud 內容中提及的常見角色和範例工作,請參閱常見的 GKE Enterprise 使用者角色和工作

本指南假設您熟悉下列項目:

  • 負載平衡器類型 Google Cloud
  • 第 4 層 (網路負載平衡器) 和第 7 層 (應用程式負載平衡器) 負載平衡器的差異

GKE 如何建立負載平衡器

如要讓應用程式可從叢集外部 (外部使用者) 或私人網路內 (內部使用者) 存取,您可以透過 Gateway、Ingress 和 Service API 佈建負載平衡器,公開應用程式。或者,您也可以自行建立負載平衡器元件,而 GKE 會管理網路端點群組 (NEG),將負載平衡器連線至叢集中的 Pod。

閘道

GKE Gateway 控制器是 Google 實作的 Kubernetes Gateway API,適用於 Cloud Load Balancing。Gateway API 是開放原始碼專案,旨在標準化服務網格和 Ingress 控制器在 Kubernetes 中公開應用程式的方式。這項資源的設計目標是取代 Ingress 資源,提供更豐富的表達能力、彈性和擴充性。

GKE Gateway 控制器用於設定第 7 層應用程式負載平衡器,將 HTTP(S) 流量公開給叢集中執行的應用程式。

最佳做法

使用 Gateway API 實作負載平衡器。

Ingress

GKE Ingress 控制器是 Google 實作的 Ingress API。您可以使用 Ingress API 管理叢集中執行的服務外部存取權。在 GKE 中建立 Ingress 資源時,控制器會自動設定第 7 層應用程式負載平衡器,允許 HTTP 或 HTTP(S) 流量連線至叢集中執行的應用程式。

對於需要進階流量管理、支援多種通訊協定或更完善的多租戶功能的新部署作業和應用程式,建議使用 GKE 閘道。不過,對於較簡單的 HTTP/HTTPS 轉送情境,GKE Ingress 仍是可行的選項,尤其是現有設定。在這種情況下,遷移至 Gateway API 的好處可能還不足以抵銷所花費的心力。

LoadBalancer 服務

Service API 可讓您將叢集中以 Pod 形式執行的應用程式,公開給外部或內部流量。建立 LoadBalancer 類型的 Service 時,GKE 會根據 Service 資訊清單的參數,自動建立第 4 層 (TCP/UDP) 直通網路負載平衡器。

在直通式網路負載平衡器中,當流量抵達後端 VM 時,原始來源和目的地 IP 位址、通訊協定 (例如 TCP 或 UDP) 和通訊埠號碼 (如果通訊協定使用這些號碼) 都會保持不變。也就是說,流量會直接傳送至後端 VM 或 Pod,負載平衡器不會終止連線。後端服務會處理連線終止作業,並確保流量從用戶端順暢地流向服務。

加權負載平衡

如果您設定了外部 LoadBalancer 服務,讓虛擬私人雲端網路外的用戶端和 Google Cloud 虛擬機器可以存取,則可以啟用加權負載平衡。加權負載平衡會根據每個 GKE 節點上提供服務的 Pod 數量分配流量,因此與 Pod 數量較少的節點相比,提供服務的 Pod 數量較多的節點會收到較大比例的流量。

獨立的 NEG

在 GKE 中管理負載平衡器的另一種方法,是自行建立負載平衡器元件,然後讓 GKE 管理 NEG。這類負載平衡器稱為 Proxy 網路負載平衡器。NEG 可用來代表負載平衡的後端端點群組 (例如 Pod)。

這種類型的負載平衡器僅適用於 TCP 流量。Proxy 網路負載平衡器會將 TCP 流量分配至 VPC 網路或其他雲端環境中的後端。流量會在負載平衡層終止。接著,負載平衡器會建立新的 TCP 連線,將流量轉送至最近的可用後端。

什麼是容器原生負載平衡?

容器原生負載平衡的做法是使用 GCE_VM_IP_PORT NEG,將流量平均分配到個別 Pod 的 IP 位址 (而非節點)。GCE_VM_IP_PORT 您可以使用 NEGs,透過 Compute Engine 虛擬機器 (VM) 的主要內部 IP 位址,或 VM 已設定別名 IP 範圍中的 IP 位址,指定後端端點。

容器原生負載平衡適用於所有 GKE 管理的第 7 層負載平衡器,包括 Gateway 和 Ingress,以及獨立的 NEG。LoadBalancer 服務不會使用容器原生負載平衡。不過,您可以啟用加權負載平衡,達到類似的功能。

容器原生負載平衡直接以 Pod 為目標,因此具有多項優點,包括提升網路效能和健康狀態檢查。詳情請參閱容器原生負載平衡

摘要表

請參考下表,規劃負載平衡設定。

選擇負載平衡器類型

下表顯示為特定資源 (閘道、Ingress 或 LoadBalancer 服務) 建立的負載平衡器類型:

Kubernetes 資源 建立的負載平衡器類型
應用程式負載平衡器 直通式網路負載平衡器
閘道
Ingress
LoadBalancer Service

選擇建立負載平衡器的方法

下表列出在 GKE 中建立所選負載平衡器的選項:

負載平衡器類型 建立所選負載平衡器的方法
閘道 Ingress LoadBalancer Service 獨立的 NEG
全域外部應用程式負載平衡器
傳統外部應用程式負載平衡器
區域性外部應用程式負載平衡器
區域性內部應用程式負載平衡器
跨區域內部應用程式負載平衡器
Proxy 網路負載平衡器
(所有類型)
直通式網路負載平衡器
(內部和外部)

後續步驟