GKE 中的負載平衡簡介

本頁面提供一般總覽,說明 Google Kubernetes Engine (GKE) 如何建立及管理 Cloud Load Balancing。本頁假設您瞭解下列事項:

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

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

GKE 如何建立負載平衡器

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

閘道

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

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

最佳做法

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

輸入

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 您可以使用 NEG,透過 Compute Engine 虛擬機器 (VM) 的主要內部 IP 位址,或 VM 已設定別名 IP 範圍中的 IP 位址,指定後端端點。

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

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

摘要表格

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

選擇負載平衡器類型

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

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

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

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

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

後續步驟