管理負載平衡器

本總覽頁面說明如何在 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-aus-virginia1-bus-virginia1-ceu-ams1-aeu-ams1-beu-ams1-c

區域負載平衡器的範圍僅限於建立時指定的區域。每個區域都是獨立的災害網域。區域會管理使用本機控制層的基礎架構、服務、API 和工具。

如要進一步瞭解 GDC 宇宙中的全域和區域資源,請參閱多區域總覽

您可以使用下列方法建立全域負載平衡器:

您可以使用下列方法建立區域負載平衡器:

  • 使用 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 的後端。

  • 全域負載平衡器自訂資源 (ForwardingRuleExternalForwardingRuleInternalBackendServiceHealthCheck) 的名稱不得與這些區域負載平衡器自訂資源相同。

    後續步驟

  • 設定內部負載平衡器

  • 設定外部負載平衡器