設定水平自動調度 Pod 資源


本頁面說明如何在 Google Kubernetes Engine (GKE) 中,使用資源分配、負載平衡器流量、自訂指標或多個指標等指標,自動調整資源,進而調度部署作業。本頁面也提供逐步操作說明,引導您設定水平 Pod 自動配置器 (HPA) 設定檔,包括如何查看、刪除、清除及排解 HPA 物件問題。Deployment 是 Kubernetes API 物件,可讓您執行多個 Pod 副本,並將這些副本分散到叢集的節點中。

本頁適用於管理 GKE 應用程式資源調度的營運人員和開發人員,說明如何透過水平 Pod 自動調度功能,動態提升效能並維持成本效益。如要進一步瞭解內容中提及的常見角色和範例工作,請參閱「常見的 GKE 使用者角色和工作」。 Google Cloud

事前準備

開始之前,請確認您已完成下列工作:

  • 啟用 Google Kubernetes Engine API。
  • 啟用 Google Kubernetes Engine API
  • 如要使用 Google Cloud CLI 執行這項工作,請安裝初始化 gcloud CLI。如果您先前已安裝 gcloud CLI,請執行 gcloud components update,取得最新版本。

適用於 HorizontalPodAutoscaler 物件的 API 版本

當您使用 Google Cloud 控制台時,系統會使用 autoscaling/v2 API 建立 HorizontalPodAutoscaler 物件。

當您使用 kubectl 建立或查看水平 Pod 自動調度資源相關資訊時,可以指定 autoscaling/v1 API 或 autoscaling/v2 API。

  • 預設使用 apiVersion: autoscaling/v1,可讓您僅依據 CPU 使用率進行自動調度資源。如要依據其他指標自動調度資源,建議您使用 apiVersion: autoscaling/v2建立 Deployment 範例中的範例使用的是 apiVersion: autoscaling/v1

  • 建議使用 apiVersion: autoscaling/v2 建立新的 HorizontalPodAutoscaler 物件。這個 API 可讓您依據多項指標 (包括自訂或外部指標) 進行自動調度資源。本頁面中的其他範例都是使用 apiVersion: autoscaling/v2

如要檢查有支援哪些 API 版本,請使用 kubectl api-versions 指令。

您可以指定在查看使用 apiVersion: autoscaling/v2 的水平 Pod 自動調度資源詳細資料時要使用的 API。

建立 Deployment 範例

必須先建立 HPA 要監控的工作負載,才能建立該 HPA。本頁面的範例會針對下列 nginx Deployment 套用不同的水平 Pod 自動配置器設定。不同的範例會依據資源使用率自訂或外部指標,以及多項指標來顯示水平 Pod 自動調度器。

請將以下內容儲存為 nginx.yaml 檔案:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx
  namespace: default
spec:
  replicas: 3
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:1.7.9
        ports:
        - containerPort: 80
        resources:
          # You must specify requests for CPU to autoscale
          # based on CPU utilization
          requests:
            cpu: "250m"

此資訊清單指定了 CPU 要求數的值。如要依據資源的使用率百分比自動調度資源,您必須指定該資源的要求數。如果您沒有指定要求數,則系統僅會依據資源使用率的絕對值 (CPU 使用率的 milliCPU) 進行自動調度資源。

如要建立 Deployment,請套用 nginx.yaml 資訊清單:

kubectl apply -f nginx.yaml

Deployment 已將 spec.replicas 設為 3,表示會部署三個 Pod。 您可以使用 kubectl get deployment nginx 指令進行驗證。

本頁面中的每個範例,都會將不同的水平 Pod 自動調度器套用到 nginx Deployment 範例。

依據資源使用率自動調度資源

這個範例所建立的 HorizontalPodAutoscaler 物件,用於 CPU 使用率超過 50% 時自動調度 nginx Deployment,並確保有最少 1 個至最多 10 個備用資源。

您可以使用 Google Cloud 控制台、kubectl apply 指令或僅適用平均 CPU 的 kubectl autoscale 指令,建立以 CPU 為目標的水平 Pod 自動調度器。

控制台

  1. 前往 Google Cloud 控制台的「Workloads」(工作負載) 頁面。

    前往「Workloads」(工作負載)

  2. 按一下 nginx Deployment 的名稱。

  3. 依序點選 「動作」>「自動調度資源」

  4. 指定下列值:

    • 備用資源數量下限:1
    • 副本數量上限:10
    • 自動調度資源指標:CPU
    • 目標:50
    • 單位: %
  5. 按一下 [完成]

  6. 按一下 [Autoscale] (自動調度資源)

kubectl apply

請將以下 YAML 資訊清單內容儲存為 nginx-hpa.yaml 檔案:

apiVersion: autoscaling/v1
kind: HorizontalPodAutoscaler
metadata:
  name: nginx
spec:
  scaleTargetRef:
    apiVersion: apps/v1
    kind: Deployment
    name: nginx
  minReplicas: 1
  maxReplicas: 10
  targetCPUUtilizationPercentage: 50

如要建立 HPA,請使用下列指令套用資訊清單:

kubectl apply -f nginx-hpa.yaml

kubectl autoscale

如要建立僅以平均 CPU 使用率為目標的 HorizontalPodAutoscaler 物件,您可以使用 kubectl autoscale 指令:

kubectl autoscale deployment nginx --cpu-percent=50 --min=1 --max=10

如要取得叢集中的水平 Pod 自動調度器清單,請使用下列指令:

kubectl get hpa

輸出結果會與下列內容相似:

NAME    REFERENCE          TARGETS   MINPODS   MAXPODS   REPLICAS   AGE
nginx   Deployment/nginx   0%/50%    1         10        3          61s

如要取得水平 Pod 自動調度資源的詳細資料,您可以使用 Google Cloud 控制台或 kubectl 指令。

控制台

  1. 前往 Google Cloud 控制台的「Workloads」(工作負載) 頁面。

    前往「Workloads」(工作負載)

  2. 按一下 nginx Deployment 的名稱。

  3. 在「Autoscaler」(自動配置器) 區段中查看水平 Pod 自動配置器設定。

  4. 如要進一步瞭解如何自動調度資源事件,請前往「Events」(事件) 分頁標籤。

kubectl get

如要取得水平 Pod 自動配置器的詳細資料,您可以使用 kubectl get hpa 搭配 -o yaml 旗標。status 欄位中包含目前備用資源數和所有最新的自動調度資源事件等相關資訊。

kubectl get hpa nginx -o yaml

輸出結果會與下列內容相似:

apiVersion: autoscaling/v1
kind: HorizontalPodAutoscaler
metadata:
  annotations:
    autoscaling.alpha.kubernetes.io/conditions: '[{"type":"AbleToScale","status":"True","lastTransitionTime":"2019-10-30T19:42:59Z","reason":"ScaleDownStabilized","message":"recent
      recommendations were higher than current one, applying the highest recent recommendation"},{"type":"ScalingActive","status":"True","lastTransitionTime":"2019-10-30T19:42:59Z","reason":"ValidMetricFound","message":"the
      HPA was able to successfully calculate a replica count from cpu resource utilization
      (percentage of request)"},{"type":"ScalingLimited","status":"False","lastTransitionTime":"2019-10-30T19:42:59Z","reason":"DesiredWithinRange","message":"the
      desired count is within the acceptable range"}]'
    autoscaling.alpha.kubernetes.io/current-metrics: '[{"type":"Resource","resource":{"name":"cpu","currentAverageUtilization":0,"currentAverageValue":"0"}}]'
    kubectl.kubernetes.io/last-applied-configuration: |
      {"apiVersion":"autoscaling/v1","kind":"HorizontalPodAutoscaler","metadata":{"annotations":{},"name":"nginx","namespace":"default"},"spec":{"maxReplicas":10,"minReplicas":1,"scaleTargetRef":{"apiVersion":"apps/v1","kind":"Deployment","name":"nginx"},"targetCPUUtilizationPercentage":50}}
  creationTimestamp: "2019-10-30T19:42:43Z"
  name: nginx
  namespace: default
  resourceVersion: "220050"
  selfLink: /apis/autoscaling/v1/namespaces/default/horizontalpodautoscalers/nginx
  uid: 70d1067d-fb4d-11e9-8b2a-42010a8e013f
spec:
  maxReplicas: 10
  minReplicas: 1
  scaleTargetRef:
    apiVersion: apps/v1
    kind: Deployment
    name: nginx
  targetCPUUtilizationPercentage: 50
status:
  currentCPUUtilizationPercentage: 0
  currentReplicas: 3
  desiredReplicas: 3

請先刪除此 HPA,再按照本頁中的其他範例操作:

kubectl delete hpa nginx

刪除水平 Pod 自動調度器時,Deployment 的備用資源數會保持不變。Deployment 不會自動還原到套用水平 Pod 自動配置器之前的狀態。

您可以進一步瞭解如何刪除水平 Pod 自動調度器

根據負載平衡器流量自動調度資源

GKE 的流量型自動調度資源功能會整合負載平衡器的流量使用率信號,自動調度 Pod 的資源。

使用流量做為自動調度資源信號可能很有幫助,因為流量是負載的領先指標,可補足 CPU 和記憶體。內建與 GKE 的整合功能可確保設定簡單,且自動調度功能會快速因應流量尖峰,滿足需求。

流量型自動調度資源功能是由 Gateway 控制器及其全域流量管理功能啟用。詳情請參閱根據流量自動調度資源

根據負載平衡器流量自動調度資源的功能,僅適用於 Gateway 工作負載

需求條件

以流量為準的自動調度資源功能須符合下列條件:

  • 適用於 GKE 1.31 以上版本。
  • 在 GKE 叢集中啟用 Gateway API。
  • 支援透過 Gateway API 部署的負載平衡器,以及 gke-l7-global-external-managedgke-l7-regional-external-managedgke-l7-rilbgke-l7-gxlb GatewayClass 傳輸的流量。

限制

以流量為準的自動調度資源功能有以下限制:

  • 多叢集 GatewayClasses 不支援 (gke-l7-global-external-managed-mcgke-l7-regional-external-managed-mcgke-l7-rilb-mcgke-l7-gxlb-mc)。
  • 不支援使用 LoadBalancer 類型服務的流量。
  • 參與流量自動調度程序的元件之間,必須有明確且獨立的關係。一個水平 Pod 自動調度器必須專用於調度單一服務公開的單一部署作業 (或任何可調度的資源)。
  • 使用 maxRatePerEndpoint 欄位設定服務容量後,請等待足夠時間 (通常為一分鐘,但大型叢集可能需要最多 15 分鐘),讓負載平衡器更新這項變更,再使用流量指標設定水平 Pod 自動調度器。這可確保叢集不會根據仍在設定中的負載平衡器發出的指標,嘗試自動調度資源,導致服務暫時發生問題。
  • 如果多個負載平衡器 (例如 Ingress 和 Gateway,或兩個 Gateway) 為某項服務提供服務,且該服務使用以流量為準的自動調度功能,則 Horizontal Pod Autoscaler 可能會根據個別負載平衡器的最高流量值做出調度決策,而不是所有負載平衡器的流量值總和。

部署以流量為準的自動調度資源功能

在下列練習中,您會使用 HorizontalPodAutoscaler,根據 store-autoscale 部署接收到的流量自動調度資源。閘道會接受來自網際網路的 Pod 傳入流量。自動調度器會比較 Gateway 的流量信號與 store-autoscale 服務資源上設定的每個 Pod 的流量容量。產生傳輸閘道流量時,您會影響部署的 Pod 數量。

下圖說明以流量為準的自動調整功能運作方式:

HorizontalPodAutoscaler 會根據流量調整部署的資源配置。

如要部署以流量為準的自動調度資源功能,請執行下列步驟:

  1. 如果是標準叢集,請確認叢集已安裝 GatewayClasses。如為 Autopilot 叢集,系統預設會安裝 GatewayClasses。

    kubectl get gatewayclass
    

    輸出內容會確認 GKE GatewayClass 資源已可在叢集中使用:

    NAME                               CONTROLLER                  ACCEPTED   AGE
    gke-l7-global-external-managed     networking.gke.io/gateway   True       16h
    gke-l7-regional-external-managed   networking.gke.io/gateway   True       16h
    gke-l7-gxlb                        networking.gke.io/gateway   True       16h
    gke-l7-rilb                        networking.gke.io/gateway   True       16h
    

    如果沒有看到這項輸出內容,請在 GKE 叢集中啟用 Gateway API

  2. 將範例應用程式和 Gateway 負載平衡器部署至叢集:

    kubectl apply -f https://raw.githubusercontent.com/GoogleCloudPlatform/gke-networking-recipes/master/gateway/docs/store-autoscale.yaml
    

    範例應用程式會建立:

    • 含有 2 個副本的 Deployment。
    • 服務的相關 GCPBackendPolicy 設定 maxRatePerEndpoint 設為 10。如要進一步瞭解 Gateway 功能,請參閱「GatewayClass 功能」。
    • 外部閘道,用於透過網際網路存取應用程式。 如要進一步瞭解如何使用閘道負載平衡器,請參閱「部署閘道」。
    • HTTPRoute 會比對所有流量,並傳送至 store-autoscale 服務。

    使用以流量為準的自動調度資源功能時,「服務容量」是重要元素,因為這會決定觸發自動調度資源事件的每個 Pod 流量。這項功能是透過與 Service 相關聯的 GCPBackendPolicy 上的 maxRatePerEndpoint 欄位設定,可定義每個 Pod 的 Service 每秒應接收的要求數上限。服務容量是應用程式專屬的。

    詳情請參閱「判斷服務容量」。

  3. 將下列資訊清單儲存為 hpa.yaml

    apiVersion: autoscaling/v2
    kind: HorizontalPodAutoscaler
    metadata:
      name: store-autoscale
    spec:
      scaleTargetRef:
        apiVersion: apps/v1
        kind: Deployment
        name: store-autoscale
      minReplicas: 1
      maxReplicas: 10
      metrics:
      - type: Object
        object:
          describedObject:
            kind: Service
            name: store-autoscale
          metric:
            name: "autoscaling.googleapis.com|gclb-capacity-fullness"
          target:
            averageValue: 70
            type: AverageValue
    

    這份資訊清單說明具有下列屬性的 HorizontalPodAutoscaler

    • minReplicasmaxReplicas:設定這個部署作業的副本數量下限和上限。在這個設定中,Pod 數量可從 1 個備用資源擴充至 10 個。
    • describedObject.name: store-autoscale:定義流量容量的 store-autoscale 服務參照。
    • scaleTargetRef.name: store-autoscale:參照 store-autoscale Deployment,定義由水平 Pod 自動調度資源功能調度的資源。
    • averageValue: 70:容量使用率的目標平均值。這會為水平 Pod 自動調度器提供成長幅度,讓執行中的 Pod 能夠處理多餘流量,同時建立新的 Pod。

水平 Pod 自動調度器會導致下列流量行為:

  • Pod 數量會調整為 1 到 10 個副本,以達到每個端點 70% 的最大速率。這會導致每個 Pod 的 RPS 為 7。maxRatePerEndpoint=10
  • 如果每個 Pod 的 RPS 超過 7,系統會擴大 Pod 規模,直到達到最多 10 個副本,或每個 Pod 的平均流量為 7 RPS 為止。
  • 如果流量減少,Pod 會使用水平 Pod 自動配置器演算法,將資源調降至合理比率。

您也可以部署流量產生器,驗證以流量為準的自動調度資源行為。

在 30 RPS 時,部署作業會擴充至 5 個副本,因此每個副本理想上會收到 6 RPS 的流量,也就是每個 Pod 的使用率為 60%。這低於 70% 的目標使用率,因此 Pod 會適當調整大小。視流量波動情況而定,自動調度的副本數量也可能會波動。如要進一步瞭解副本數的計算方式,請參閱「自動調度資源行為」。

依據自訂或或外部指標自動調度資源

如要為自訂指標和外部指標建立水平 Pod 自動調度器,請參閱「根據指標調整 Pod 自動調度器」。

依據多個指標自動調度資源

這個範例所建立的水平 Pod 自動調度器,是依據 CPU 使用率和名為 packets_per_second 的自訂指標自動調度資源。

如果您已按照上述範例指示操作,但名為 nginx 的水平 Pod 自動配置器仍存在,請先刪除該自動配置器,再按照這個範例操作。

這個範例需要執行 apiVersion: autoscaling/v2。如要進一步瞭解可用的 API,請參閱適用於 HorizontalPodAutoscaler 物件的 API 版本

將此 YAML 資訊清單儲存為名為 nginx-multiple.yaml 的檔案:

apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:
  name: nginx
spec:
  scaleTargetRef:
    apiVersion: apps/v1
    kind: Deployment
    name: nginx
  minReplicas: 1
  maxReplicas: 10
  metrics:
  - type: Resource
    resource:
      name: cpu
      target:
        type: Utilization
        averageUtilization: 50
  - type: Resource
    resource:
      name: memory
      target:
        type: AverageValue
        averageValue: 100Mi
  # Uncomment these lines if you create the custom packets_per_second metric and
  # configure your app to export the metric.
  # - type: Pods
  #   pods:
  #     metric:
  #       name: packets_per_second
  #     target:
  #       type: AverageValue
  #       averageValue: 100

套用此 YAML 資訊清單:

kubectl apply -f nginx-multiple.yaml

建立完成後,水平 Pod 自動調度器會監控 nginx Deployment 的平均 CPU 使用率、平均記憶體使用率,以及自訂 packets_per_second 指標 (取消註解的情況下)。對於會建立較大自動調度資源事件的指標值,水平 Pod 自動調度器會依據該指標來自動調度 Deployment。

設定 Performance HPA 設定檔

GKE 採用高效能架構進行水平 Pod 自動調度資源 (HPA),可更快做出調度資源決策,並在叢集中支援最多 1,000 個 HorizontalPodAutoscaler 物件。下列叢集設定預設會啟用「效能」HPA 設定檔:

  • 在 Rapid、Regular 和 Stable 發布版本中,搭載 1.32 以上版本的新 Autopilot 叢集,或升級至 1.32 以上版本的現有 Autopilot 叢集。
  • 快速版、一般版和穩定版發布管道中,版本 1.33 以上的新標準叢集。

如果現有叢集符合需求,您也可以啟用 Performance HPA 設定檔。

如果標準叢集符合下列所有條件,即可免除自動啟用 Performance HPA 設定檔:

  • 叢集要從 1.33 之前的版本升級至 1.33 以上版本。
  • 叢集至少有一個節點集區,且節點集區使用下列任一機型:e2-micro、e2-custom-micro、g1-small、f1-micro。
  • 未啟用節點自動佈建功能。

需求條件

如要啟用 Performance HPA 設定檔,請確認 Autopilot 和 Standard 叢集符合下列需求:

在新叢集中啟用 Performance HPA 設定檔

Autopilot

如要建立啟用 Performance HPA 設定檔的新 Autopilot 叢集,請使用下列指令:

gcloud container clusters create-auto CLUSTER_NAME \
    --location=LOCATION \
    --project=PROJECT_ID \
    --cluster-version=CLUSTER_VERSION \
    --hpa-profile=performance

取代:

  • CLUSTER_NAME:要建立的叢集名稱。
  • LOCATION:叢集的運算區域或地區 (例如 us-central1-a 或 us-central1)。
  • PROJECT_ID:您的 Google Cloud 專案 ID。
  • CLUSTER_VERSION:GKE 1.31 以上版本。

標準

如要建立啟用「效能」HPA 設定檔的新標準叢集,請使用下列指令:

gcloud container clusters create CLUSTER_NAME \
    --location=LOCATION \
    --project=PROJECT_ID \
    --cluster-version=CLUSTER_VERSION \
    --hpa-profile=performance

取代:

  • CLUSTER_NAME:要建立的叢集名稱。
  • LOCATION:叢集的運算區域或地區 (例如 us-central1-a 或 us-central1)。
  • PROJECT_ID:您的 Google Cloud 專案 ID。
  • CLUSTER_VERSION:GKE 1.31 以上版本。

在現有叢集中啟用 Performance HPA 設定檔

如要在現有叢集中啟用 Performance HPA 設定檔,請使用下列指令:

gcloud container clusters update CLUSTER_NAME \
    --location=LOCATION \
    --project=PROJECT_ID \
    --hpa-profile=performance

取代:

  • CLUSTER_NAME:叢集名稱。
  • LOCATION:叢集的運算區域或地區 (例如 us-central1-a 或 us-central1)。
  • PROJECT_ID:您的 Google Cloud 專案 ID。

停用 Performance HPA 設定檔

如要在叢集中停用 Performance HPA 設定檔,請使用下列指令:

gcloud container clusters update CLUSTER_NAME \
    --location=LOCATION \
    --project=PROJECT_ID \
    --hpa-profile=none

取代:

  • CLUSTER_NAME:叢集名稱。
  • LOCATION:叢集的運算區域或地區 (例如 us-central1-a 或 us-central1)。
  • PROJECT_ID:您的 Google Cloud 專案 ID。

查看水平 Pod 自動配置器的詳細資料

如要查看水平 Pod 自動調整程式的設定和統計資料,請使用下列指令:

kubectl describe hpa HPA_NAME

HPA_NAME 替換為 HorizontalPodAutoscaler 物件的名稱。

如果水平 Pod 自動調度器使用 apiVersion: autoscaling/v2,且是依據多個指標,則 kubectl describe hpa 指令只會顯示 CPU 指標。如要查看所有指標,請改用下列指令:

kubectl describe hpa.v2.autoscaling HPA_NAME

HPA_NAME 替換為 HorizontalPodAutoscaler 物件的名稱。

每個水平 Pod 自動配置器的目前狀態顯示在 Conditions 欄位中,而自動調度資源事件則顯示在 Events 欄位中。

輸出結果會與下列內容相似:

Name:                                                  nginx
Namespace:                                             default
Labels:                                                <none>
Annotations:                                           kubectl.kubernetes.io/last-applied-configuration:
                                                         {"apiVersion":"autoscaling/v2","kind":"HorizontalPodAutoscaler","metadata":{"annotations":{},"name":"nginx","namespace":"default"},"s...
CreationTimestamp:                                     Tue, 05 May 2020 20:07:11 +0000
Reference:                                             Deployment/nginx
Metrics:                                               ( current / target )
  resource memory on pods:                             2220032 / 100Mi
  resource cpu on pods  (as a percentage of request):  0% (0) / 50%
Min replicas:                                          1
Max replicas:                                          10
Deployment pods:                                       1 current / 1 desired
Conditions:
  Type            Status  Reason              Message
  ----            ------  ------              -------
  AbleToScale     True    ReadyForNewScale    recommended size matches current size
  ScalingActive   True    ValidMetricFound    the HPA was able to successfully calculate a replica count from memory resource
  ScalingLimited  False   DesiredWithinRange  the desired count is within the acceptable range
Events:                                                <none>

刪除水平 Pod 自動配置器

您可以使用 Google Cloud 控制台或 kubectl delete 指令刪除水平 Pod 自動調度器。

控制台

如要刪除 nginx 水平 Pod 自動調度器,請執行下列操作:

  1. 前往 Google Cloud 控制台的「Workloads」(工作負載) 頁面。

    前往「Workloads」(工作負載)

  2. 按一下 nginx Deployment 的名稱。

  3. 依序點選 「動作」>「自動調度資源」

  4. 點選「刪除」。

kubectl delete

如要刪除 nginx 水平 Pod 自動調度器,請使用下列指令:

kubectl delete hpa nginx

刪除水平 Pod 自動調度資源功能後,Deployment (或其他 Deployment 物件) 將保持其現有規模,而不會還原為 Deployment 原始資訊清單中的備用資源數。如要手動將 Deployment 調整回三個 Pod,則可以使用 kubectl scale 指令:

kubectl scale deployment nginx --replicas=3

正在清除所用資源

  1. 若尚未刪除水平 Pod 自動配置器,請進行刪除:

    kubectl delete hpa nginx
    
  2. 刪除 nginx Deployment:

    kubectl delete deployment nginx
    
  3. 也可以選擇刪除叢集

疑難排解

本節說明如何排解使用 Pod 自動水平調度時發生的問題。

水平 Pod 自動配置器顯示 unable to fetch pod metrics for pod 錯誤

設定水平 Pod 自動調度器時,您可能會看到類似下列的警告訊息:

unable to fetch pod metrics for pod

指標伺服器啟動時,看到這則訊息是正常現象。不過,如果持續看到警告,且發現 Pod 未針對工作負載進行擴縮,請確認已為工作負載中的每個容器指定資源要求。如要搭配水平自動調度 Pod 資源使用資源用量百分比目標,您必須為工作負載中每個 Pod 執行的每個容器設定該資源的要求。否則,水平 Pod 自動調度資源無法執行所需計算,且不會針對該指標採取任何動作。

水平 Pod 自動配置器顯示 multiple services selecting the same target of... 事件

如果水平 Pod 自動調度器偵測到您使用以流量為準的自動調度功能,且有多項服務與水平 Pod 自動調度器的目標 (通常是 Deployment) 相關聯,就會顯示 multiple services selecting the same target of <hpa>: <services> 錯誤。

以流量為準的自動調度資源功能僅支援與自動調度資源相關聯的服務數量為一的設定,請參閱「根據負載平衡器流量自動調度資源」。錯誤訊息會列出找到的服務。

如要解決這個問題,請確認只有一項服務與水平 Pod 自動配置器相關聯。

後續步驟