本頁面提供一般總覽,說明 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 網路負載平衡器
(所有類型) |
||||
直通式網路負載平衡器
(內部和外部) |
後續步驟
- 瞭解 GKE 中的 Gateway API。
- 瞭解 GKE Ingress。
- 瞭解 LoadBalancer Service。