使用 GCPBackendPolicy 範圍自訂後端設定

多叢集 Google Kubernetes Engine (GKE) 推論閘道環境中,您可以對部署在多個叢集中的服務套用不同的後端設定。舉例來說,您可以為不同區域或環境中的後端設定不同的要求速率上限或容量縮放比例。

如要瞭解本文內容,您應熟悉下列事項:

本文件適用於下列角色:

  • 機器學習 (ML) 工程師、平台管理員和營運人員,以及有興趣使用 Kubernetes 容器自動化調度管理功能,提供 AI/ML 工作負載服務的資料和 AI 專家。
  • 與 Kubernetes 網路互動的雲端架構師或網路專家。

如要進一步瞭解我們在Google Cloud 內容中提及的常見角色和範例工作,請參閱「常見的 GKE Enterprise 使用者角色和工作」。

GCPBackendPolicy 範圍的運作方式

GCPBackendPolicy 中的 scopes 欄位可讓您根據後端執行的特定叢集,調整後端設定。您可以對不同環境或區域中的後端套用不同設定,精細控管分散式 AI/機器學習工作負載。下列各節說明如何指定資源、定義政策範圍,以及處理衝突解決。

目標 Inference Gateway 資源

如要在多叢集 GKE 環境中使用 Inference Gateway 政策,GCPBackendPolicytargetRef 欄位必須參照 GCPInferencePoolImport 資源:

targetRef:
  group: networking.gke.io
  kind: GCPInferencePoolImport
  name: example

政策範圍定義

GCPBackendPolicy 中的 scopes 欄位可讓您為特定後端群組套用不同的後端設定。在 default.scopes 中定義設定物件,即可使用叢集標籤精確指定後端,並套用特定設定。舉例來說,您可以為不同區域或叢集的後端設定專屬容量限制或要求率。

您無法在主要 default 區段和 default.scopes 項目中,指定相同的後端層級欄位 (例如 maxRatePerEndpoint)。如果嘗試這麼做,系統會拒絕該政策,確保設定明確一致。

解決衝突

如果後端符合多個範圍,系統會套用下列規則,確保行為可預測:

  • 優先比對:如果後端在 scopes 清單中比對到多個選取器,系統只會套用第一個相符選取器的設定。請依範圍排序,從最具體的範圍到最一般的範圍,確保預期設定生效。
  • 精確指定目標:如果單一選取器包含多個標籤 (例如 gke.io/region: us-central1env: prod),後端必須滿足所有這些標籤,系統才會套用範圍的設定。這種做法可讓您根據多項條件精確指定後端。

支援的每個後端欄位

下表列出可自訂的後端層級欄位,用於控管不同環境或區域的後端行為。

欄位名稱 說明 設定範例
backendPreference 指定在多區域負載平衡的容量追蹤期間,後端是偏好 (PREFERRED) 或預設 (DEFAULT)。 backendPreference: PREFERRED
balancingMode 指定平衡演算法。支援的值為 RATEUTILIZATIONCUSTOM_METRICS balancingMode: CUSTOM_METRICS
capacityScalerPercent 根據容量設定流量分配。這個值是介於 0 到 100 的百分比,可做為後端設定目標容量的乘數。預設值為 100%。 capacityScalerPercent: 20
customMetrics balancingMode 設為 CUSTOM_METRICS 時,指定用於負載平衡的自訂指標。這個欄位是指標定義清單。 customMetrics: [{ name: "my-metric", value: 0.8 }]
maxInFlightPerEndpoint 設定每個端點的並行要求或連線數量上限。 maxInFlightPerEndpoint: 100
maxRatePerEndpoint 設定每個端點的要求速率上限,以每秒要求數 (RPS) 為單位。 maxRatePerEndpoint: 50

指定範圍選取器

各範圍中的 selectors 欄位可讓您控管哪些後端會收到特定政策設定。您可以根據叢集標籤 (內建 GKE 標籤或自訂標籤) 指定後端,為不同後端群組量身打造設定。

kind: GCPBackendPolicy
apiVersion: networking.gke.io/v1
metadata:
  name: echoserver-v2
spec:
  targetRef:
    group: "networking.gke.io"
    kind: GCPInferencePoolImport
    name: test-inference-pool
  default:
    balancingMode: IN_FLIGHT # IN_FLIGHT mode is set at the default level
    scopes:
    - selector:
        gke.io/zone: "us-central1-a"
      maxInFlightPerEndpoint: 100 # Invalid: maxInFlightPerEndpoint cannot be set within a scope when balancingMode is IN_FLIGHT at the default level

隱含 GKE 標籤

以下隱含標籤可用做選取器。 GKE 會自動將下列標籤套用至叢集:

標籤 說明 範例值
gke.io/cluster-name GKE 叢集名稱。 my-cluster
gke.io/region 叢集所在的區域。 us-central1
gke.io/zone 叢集所在的區域。 us-central1-a

自訂叢集標籤

自訂叢集標籤可讓您更靈活地分組及管理後端。在 GKE 叢集上定義自己的標籤,即可在 GCPBackendPolicy 中建立非常具體的選取器,套用獨特的設定。舉例來說,您可以根據不同環境 (devstagingprod) 或特定應用程式版本等條件,設定這些配置。

如要將自訂標籤 (例如 environment=production) 新增至 GKE 叢集,請執行下列指令:

gcloud container clusters update CLUSTER_NAME \
    --region=REGION \
    --update-labels=LABEL_KEY=LABEL_VALUE

更改下列內容:

  • CLUSTER_NAME:叢集名稱。
  • REGION:叢集所在的區域。
  • LABEL_KEY:自訂標籤的鍵,例如 environment
  • LABEL_VALUE:自訂標籤的值,例如 production

然後,您可以在政策中使用自訂標籤選取器,選取這個叢集中的後端。

含有範圍選取器的 GCPBackendPolicy 範例

以下範例定義的 GCPBackendPolicy 會以名為 experimentalGCPInferencePoolImport 為目標。這項政策會使用隱含和自訂標籤,為 backendPreferencemaxRatePerEndpointcapacityScalerPercent 設定值。

apiVersion: networking.gke.io/v1
kind: GCPBackendPolicy
metadata:
  name: backend-policy
spec:
  targetRef:
    kind: GCPInferencePoolImport
    name: experimental
  default:
    scopes:
      # Selector 1: Targets backends in us-west2, sets capacity to 50%
      - capacityScalarPercent: 50
        selector:
          gke.io/region: us-west2

      # Selector 2: Targets backends in clusters labeled 'env: prod'
      - maxRatePerEndpoint: 40
        selector:
          env: prod

      # Selector 3: Targets backends in a specific US-Central zone and marks them as PREFERRED
      - backendPreference: PREFERRED
        maxRatePerEndpoint: 50
        selector:
          gke.io/cluster-name: my-cluster
          gke.io/zone: us-central1-a

套用這項政策後,您會發現下列行為:

  • us-west2 地區內叢集的後端有效容量會縮減至 50%。
  • 標示為 env: prod 的叢集後端,每個端點每秒最多只能處理 40 個要求。
  • 位於 us-central1-a 可用區的叢集後端會在負載平衡期間獲得優先處理 (PREFERRED),且每個端點的速率上限為每秒 50 個要求。

後續步驟