本文說明多叢集閘道在 Google Kubernetes Engine (GKE) 中的運作方式。多叢集閘道是強大的網路解決方案,可讓您管理部署在多個 GKE 叢集的服務流量。
本文適用於負責設計及建構組織網路的 Cloud 架構師和網路專家。如要進一步瞭解 Google Cloud 內容中提及的常見角色和範例工作,請參閱「常見的 GKE Enterprise 使用者角色和工作」。
總覽
多叢集閘道是使用 Kubernetes Gateway API 資源設定。GKE Gateway 控制器會監控這些資源 (Gateway、HTTPRoute 和 TLSRoute),並自動佈建及維護必要的Google Cloud 負載平衡基礎架構。這項基礎架構可為部署在機群內多個 GKE 叢集的服務,提供進階流量管理功能。多叢集閘道會使用 Google Cloud的負載平衡基礎架構,為應用程式提供單一、統一的進入點。這種做法有以下優點:
- 簡化管理作業
- 提高可靠性
- 提供進階流量管理功能
流量管理功能
多叢集閘道提供進階功能,可管理多個叢集的流量。您可以實作複雜的轉送策略,例如分階段推出和藍綠策略,安全地部署變更。如要進行精細控管,您可以使用標頭比對功能,以一小部分流量測試變更,或依權重分配流量,逐步在不同叢集後端之間轉移要求。
多叢集閘道也支援流量鏡像功能,可將即時使用者要求的副本傳送至新服務,以便測試效能,且不會影響使用者。為確保可靠性並防止超載,多叢集閘道支援依據健康狀態執行的容錯移轉,以及依據容量執行的負載平衡,可根據服務的定義容量分配要求。
如果 TLS 流量需要端對端加密,且不應在負載平衡器終止 TLS,多叢集閘道可支援使用 TLSRoute 進行 SNI 轉送。
多叢集閘道的運作方式
所有參與多叢集閘道設定的 GKE 叢集都必須註冊至機群。機群能提供叢集的邏輯群組,讓您在叢集之間進行一致的管理和通訊。機群中的一個 GKE 叢集會指定為設定叢集。
設定叢集是多叢集閘道設定的集中控管點。您只能將所有多叢集閘道 API 資源 (例如閘道、HTTPRoute 和 TLSRoute) 部署至這個指定叢集。GKE Gateway 控制器會監控設定叢集的 Kubernetes API 伺服器,尋找這些資源。
如要選擇設定叢集,請考慮區域叢集或其他高可用性 GKE 叢集。這有助於確保控制器能持續協調 Gateway API 資源的更新。
多叢集閘道控制器會使用多叢集 Service (MCS),探索及存取機群中多個 GKE 叢集的 Kubernetes Service。MCS 是 GKE 的功能,可讓機群中不同 GKE 叢集內執行的 Service 探索服務及連線。
MCG 會使用 MCS 找出哪些叢集提供哪些服務,以便將外部流量轉送至這些服務。MCG 控制器會使用 MCS API 資源,將 Pod 分組為單一 Service,該 Service 可定址且跨多個叢集。
GKE Gateway 控制器會根據您在 Gateway API 資源中定義的設定,提供外部或內部應用程式負載平衡器 (適用於 HTTPRoute),或 Proxy 網路負載平衡器 (適用於 TLSRoute)。這個負載平衡器會做為應用程式的前端,並直接將流量分配給機群中健康狀態良好的 Pod,無論其位置為何。
以下概略說明部署多叢集閘道的程序:
定義閘道:在多叢集閘道設定中,您會建立閘道資源,定義設定叢集中流量的進入點。Gateway 資源會指定 GatewayClass,這是特定類型負載平衡器的範本,例如全域外部應用程式負載平衡器或區域性內部應用程式負載平衡器。在 GKE 中,下列 GatewayClass 會部署多叢集閘道:
gke-l7-global-external-managed-mc:佈建全域外部應用程式負載平衡器。gke-l7-regional-external-managed-mc:佈建區域性外部應用程式負載平衡器,或區域性外部 Proxy 網路負載平衡器。gke-l7-cross-regional-internal-managed-mc:佈建跨區域內部應用程式負載平衡器,或跨區域內部 Proxy 網路負載平衡器。gke-l7-rilb-mc:佈建區域性內部應用程式負載平衡器,或區域性內部 Proxy 網路負載平衡器。gke-l7-gxlb-mc:佈建傳統版應用程式負載平衡器。
閘道也會指定要公開哪些網路監聽器 (通訊埠和通訊協定),定義負載平衡器監聽傳入流量的方式。如要進一步瞭解 GKE 支援的閘道類別,請參閱「多叢集服務」。
將路由資源附加至閘道:路由資源定義負載平衡器如何將傳入流量轉送至特定後端服務:
- HTTPRoute:定義負載平衡器如何根據主機名稱、路徑、標頭和查詢參數,轉送 HTTP 和 HTTPS 流量。支援流量拆分、要求重新導向和流量鏡像。
- TLSRoute:定義負載平衡器如何使用 TLS 直通,根據 SNI 主機名稱轉送加密的 TLS 流量 (
gke-l7-regional-external-managed-mc、gke-l7-rilb-mc和gke-l7-cross-regional-internal-managed-mcGatewayClass 支援)。負載平衡器會直接將流量轉送至後端 ServiceImports,不會在閘道解密酬載。
建立負載平衡器:部署閘道和路由資源時,GKE Gateway 控制器會解讀這些 API 物件,並動態設定必要的 Google Cloud 負載平衡基礎架構。接著,負載平衡器會將流量導向正確的 Pod,無論 Pod 位於哪個叢集。這個程序提供高效率且可擴充的流量轉送方式。
流量
下圖說明多叢集閘道如何做為集中式負載平衡器,為在不同區域的兩個 GKE 叢集上執行的應用程式提供服務:
負載平衡器的行為是根據 HTTPRoute 或 TLSRoute 資源中定義的規則設定。當使用者流量抵達佈建的 Google Cloud 負載平衡器 IP 位址 (由閘道資源定義) 時,負載平衡器 (由 Google 代管的 Proxy) 會轉送流量。這個 Proxy (Google Front End Proxy 或區域 Proxy) 會根據下列條件,將流量導向正確 GKE 叢集內適當的後端服務端點:
- 健康狀態檢查
- 流量拆分規則
- 容量
流量會直接傳送至所選叢集中的最佳 Pod。
後續步驟
- 瞭解如何部署外部多叢集閘道。
- 瞭解如何部署內部多叢集閘道。
- 瞭解如何部署 TLS 直通閘道。
- 瞭解如何啟用多叢集閘道。
- 閱讀總覽,瞭解閘道在 GKE 中的運作方式。