本總覽頁面說明如何在 Google Distributed Cloud (GDC) 實體隔離環境中,設定區域和全域網路設定的內部和外部負載平衡器。
GDC 的負載平衡功能可確保流量有效分配到後端工作負載,進而提升應用程式可用性和效能。
本頁內容適用於平台管理員群組中的網路管理員,或應用程式運算子群組中的開發人員,負責管理所屬機構的網路流量。詳情請參閱 GDC 氣隙環境適用的目標對象說明文件。
負載平衡架構
Google Distributed Cloud 提供負載平衡器,可讓應用程式彼此公開服務。負載平衡器會分配穩定的虛擬 IP (VIP) 位址,在後端工作負載集區中平衡流量。GDC 中的負載平衡器會執行第 4 層 (L4) 負載平衡,也就是將一組設定的前端 TCP 或 UDP 連接埠對應至相應的後端連接埠。負載平衡器是在專案層級設定。
系統會為下列工作負載類型設定負載平衡器:
- 在 VM 上執行的工作負載。
- Kubernetes 叢集內的容器化工作負載。
在 GDC 中,您可以透過三種方式設定負載平衡器:
- 使用 Networking Kubernetes 資源模型 (KRM) API。您可以使用這個 API 建立全域或區域負載平衡器。
- 使用 gdcloud CLI。 您可以使用這項 API 建立全域或區域負載平衡器。
- 直接從 Kubernetes 叢集使用 Kubernetes 服務。這個方法只會建立區域負載平衡器。
負載平衡器元件
使用 KRM API 或 gdcloud CLI 設定負載平衡器時,請使用 L4 直通負載平衡器:
- L4 代表通訊協定為 TCP 或 UDP。
- 直通表示工作負載和用戶端之間沒有 Proxy。
負載平衡器包含下列可設定的元件:
轉送規則:指定要轉送的流量,以及轉送至哪個後端服務。轉送規則的規格如下:
- 包含三個元組:CIDR、通訊埠和通訊協定,供用戶端存取。
- 支援 TCP 和 UDP 通訊協定。
- 提供內部和外部轉送規則。用戶端可以從虛擬私有雲 (VPC) 存取內部轉送規則。用戶端可從 GDC 平台外部或內部存取外部轉送規則,但前提是工作負載已定義
EgressNAT
值。 - 轉送規則會連線至後端服務。您可以將多個轉送規則指向同一個後端服務。
後端服務:是負載平衡中樞,可將轉送規則、健康狀態檢查和後端連結在一起。後端服務會參照後端物件,該物件會識別負載平衡器轉送流量的目標工作負載。單一後端服務可參照的後端有以下限制:
- 每個可用區各有一個區域後端資源。
- 每個叢集一個叢集後端資源。這無法與專案後端混合使用。
後端:區域物件,用於指定做為所建立後端服務後端的端點。後端資源必須限定於某個區域。使用標籤選取端點。將選取器範圍設為專案或叢集:
專案後端是指未指定
ClusterName
欄位的後端。在這種情況下,指定的標籤會套用至特定專案中,區域特定 VPC 的所有工作負載。標籤會套用至多個叢集中的 VM 和 Pod 工作負載。如果後端服務使用專案後端,您就無法在該後端服務中,參照該可用區的其他後端。叢集後端是指指定
ClusterName
欄位的後端。在這種情況下,指定的標籤會套用至指定專案中具名叢集的所有工作負載。在單一後端服務中,每個叢集的每個區域最多可以指定一個後端。
健康狀態檢查:指定探測,判斷後端中特定工作負載端點的健康狀態是否良好。健康狀態不良的端點會從負載平衡器中移除,直到恢復健康狀態為止。健康狀態檢查僅適用於 VM 工作負載。Pod 工作負載可使用內建的 Kubernetes 探查機制,判斷特定端點是否正常運作。
直接從 Kubernetes 使用者叢集使用 Kubernetes 服務時,您會使用 Service
物件,而非先前列出的元件。您只能指定建立 Service
物件的叢集中的工作負載。
外部和內部負載平衡
GDC 應用程式可存取下列網路服務類型:
- 內部負載平衡器 (ILB):可讓您向機構內的其他叢集公開服務。
- 外部負載平衡器 (ELB):從可從外部工作負載路由傳送的範圍分配 VIP 位址,並在 GDC 機構外部公開服務,例如 GDC 執行個體內或外部的其他機構。使用 ELB 的工作階段相依性,確保來自用戶端的要求一律會轉送至相同的後端。
全域和可用區負載平衡器
您可以建立全域或區域負載平衡器。全域負載平衡器的範圍涵蓋整個 GDC 宇宙。每個 GDC 宇宙可由多個 GDC 區域組成,這些區域會劃分為相互連線並共用控制層的區域。舉例來說,如果宇宙包含兩個地區,每個地區有三個區域,則可能如下所示:us-virginia1-a
、us-virginia1-b
、us-virginia1-c
和 eu-ams1-a
、eu-ams1-b
、eu-ams1-c
。
區域負載平衡器的範圍僅限於建立時指定的區域。每個區域都是獨立的災害網域。區域會管理使用本機控制層的基礎架構、服務、API 和工具。
如要進一步瞭解 GDC 宇宙中的全域和區域資源,請參閱多區域總覽。
您可以使用下列方法建立全域負載平衡器:
- 使用 Networking Kubernetes 資源模型 (KRM) API。使用 API 版本
networking.global.gdc.goog
建立全域資源。 - 使用 gdcloud CLI。
使用 gdcloud CLI 指令時,請使用
--global
旗標指定全域範圍。
您可以使用下列方法建立區域負載平衡器:
- 使用 Networking Kubernetes 資源模型 (KRM) API。使用 API 版本
networking.gdc.goog
建立區域資源。 - 使用 gdcloud CLI。
使用 gdcloud CLI 指令時,請使用
--zone
標記指定要建立負載平衡器的區域。 - 直接從 Kubernetes 叢集使用 Kubernetes 服務。
服務虛擬 IP 位址
ILB 會分配僅供機構內部使用的 VIP 位址。這些 VIP 位址無法從機構外部連線,因此您只能使用這些位址,向機構內的其他應用程式公開服務。在同一個執行個體中,這些 IP 位址可能會在不同機構之間重疊。
另一方面,ELB 會分配可從機構外部連線的 VIP 位址。因此,ELB VIP 位址在所有機構中不得重複。通常機構可用的 ELB VIP 位址較少。
限制
BackendService
資源不得為 Pod 工作負載設定HealthCheck
資源。請注意,BackendService
規格中的HealthCheckName
為選用項目,使用 Pod 設定負載平衡器時必須省略。負載平衡器設定無法以涉及 Pod 和 VM 的混合工作負載為目標。因此,不允許在一個
BackendService
資源中混合使用 Pod 和 VM 的後端。全域負載平衡器自訂資源 (
ForwardingRuleExternal
、ForwardingRuleInternal
、BackendService
或HealthCheck
) 的名稱不得與這些區域負載平衡器自訂資源相同。後續步驟