本文說明如何將一或多個指標從 Pod 或工作負載傳送至自動調度器。
這些指標來自您執行的服務或應用程式。如需公開指標的範例,請參閱 vLLM 引擎公開的指標。
工作負載自動調度器隨後就能使用這項資料,更有效率地調度工作負載。舉例來說,您可以透過這項功能監控佇列深度或有效要求,然後允許自動調度器增加或減少 Pod 數量。以 vLLM 範例來說,vllm:gpu_cache_usage_perc 指標可用於追蹤使用率。
需求條件
Pod 的規定如下:
- GKE 1.35.1-gke.1396000 以上版本,且叢集位於搶鮮版。
- 使用水平自動調度 Pod 資源搭配效能設定檔。
指標的規定如下。
- 指標必須可透過 HTTP 端點存取。端點路徑預設為
/metrics。 - 指標格式必須符合 Prometheus 標準。
- 系統僅支援計量表指標。
- Pod 標籤選取器中的標籤名稱不得包含特殊字元。僅支援 a-z 字母 (小寫或大寫)、數字、連字號和底線。
- 使用依指標標籤篩選時,標籤鍵必須符合規則運算式
^[a-zA-Z_][a-zA-Z0-9_]*(開頭為英文字母或底線,且只能包含英文字母、數字或底線)。 - 每個叢集最多可公開 20 個不重複的指標。
公開自動調度資源的指標
選擇要公開的指標。您可以選擇工作負載公開的任何指標,但必須符合上一節列出的需求。
如果工作負載公開多個同名但標籤不同的指標,請新增標籤篩選條件,確保只選取一個指標。
新增下列自訂資源,並替換指標和 Pod 專屬的詳細資料:
apiVersion: autoscaling.gke.io/v1beta1 kind: AutoscalingMetric metadata: name: NAME namespace: NAMESPACE spec: metrics: - pod: selector: matchLabels: APP_LABEL_NAME: APP_LABEL_VALUE containers: - endpoint: port: METRIC_PORT path: METRIC_PATH metrics: - gauge: name: METRIC prometheusMetricName: METRIC_PROMETHEUS_NAME請根據工作負載替換下列項目:
NAME:AutoscalingMetric 物件的名稱。NAMESPACE:Pod 所在的命名空間。APP_LABEL_NAME和APP_LABEL_VALUE:與發出指標的 Pod 相符的標籤名稱和值。METRIC_PORT:通訊埠編號。METRIC_PATH:指標的路徑。確認服務或應用程式使用的路徑,這個路徑通常是/metrics。METRIC:要公開的指標名稱。名稱必須符合規則運算式^[a-z]([-a-z0-9]*[a-z0-9])?,且長度不得超過 63 個字元。也就是說,第一個字元必須是小寫字母,後續的所有字元則須由連字號、小寫字母或數字組成,但最後一個字元不得為連字號。選用:
METRIC_PROMETHEUS_NAME:Pod 公開的 Prometheus 指標名稱。您可以透過這個欄位重新命名指標,例如 Pod 公開的指標名稱不符合自動調度程式設定的名稱限制時,即可使用這個欄位。如要瞭解名稱限制的詳細資訊,請參閱水平自動調度 Pod 資源的限制。
使用下列指令套用資訊清單:
kubectl apply -f FILE_NAME_AUTOSCALING_METRIC.yaml將
FILE_NAME_AUTOSCALING_METRIC替換成 YAML 檔案的名稱。新增自訂資源後,指標會推送至自動調度資源 API。系統每隔幾秒就會讀取指標,並傳送至工作負載自動調整器。
現在您已向自動調度器公開指標,可以設定工作負載自動調度器來使用這些指標。如要這麼做,請新增下列自訂資源:
apiVersion: autoscaling/v2 kind: HorizontalPodAutoscaler metadata: name: NAME_HPA namespace: NAMESPACE spec: scaleTargetRef: apiVersion: apps/v1 kind: Deployment name: DEPLOYMENT minReplicas: MIN_REPLICAS maxReplicas: MAX_REPLICAS metrics: - type: Pods pods: metric: name: autoscaling.gke.io|NAME|METRIC target: type: AverageValue averageValue: AVERAGE_VALUE請根據工作負載替換下列項目:
NAME_HPA:HorizontalPodAutoscaler物件的名稱。NAMESPACE:Pod 所在的命名空間。DEPLOYMENT:您要指定的部署作業名稱。MIN_REPLICAS:Deployment 可擴充的備用資源數量下限。MAX_REPLICAS:Deployment 可擴充的副本數量上限。NAME:AutoscalingMetric 物件的名稱。METRIC:您要公開的指標名稱。AVERAGE_VALUE:指標的目標平均值。自動配置器會調整備用資源數量,讓所有 Pod 的平均指標值保持在指定範圍內。
使用下列指令套用資訊清單:
kubectl apply -f FILE_NAME_HPA.yaml將
FILE_NAME_HPA替換成 YAML 檔案的名稱。
使用指標標籤篩選指標
如要使用指標標籤篩選指標,請使用 GKE 1.36.0-gke.1759000 以上版本。
指標通常包含標籤。標籤是鍵/值組合,可讓您在值中加入維度。舉例來說,如果某項指標會計算 HTTP 端點的要求數量,並依方法和環境進行區隔,則可使用標籤指定這個環境。這個範例可能如下所示:
http_requests_total{method="GET", env="prod"} 11111
http_requests_total{method="PUT", env="staging"} 22222
您可以使用標籤篩選器,確保指標規格與一個指標完全相符。舉例來說,如要只選取上述範例中的第一個指標,請為 AutoscalingMetric gauge 指標使用下列規格:
apiVersion: autoscaling.gke.io/v1beta1
kind: AutoscalingMetric
metadata:
name: filter-sample
spec:
# Several lines are omitted here.
metrics:
- gauge:
name: http_requests_total
filter:
matchLabels:
method: GET
env: prod
matchLabels 鍵值組的鍵必須符合規則運算式 ^[a-zA-Z_][a-zA-Z0-9_]*,也就是開頭為英文字母或底線,且只能包含英文字母、數字或底線。
排解自動調度資源公開的指標問題
您可以查看 AutoscalingMetric 自訂資源的狀態,找出設定錯誤。方法如下:
執行下列指令,檢查 AutoscalingMetric 自訂資源:
kubectl describe autoscalingmetric NAME -n NAMESPACE查看
Status欄位,瞭解已設定的指標相關資訊,例如設定錯誤的警告,以及指標在HorizontalPodAutoscaler物件中顯示的確切名稱。
後續步驟
- 如要進一步瞭解如何根據指標自動調度工作負載,請參閱「根據指標自動調度工作負載」一文。
- 瞭解如何設定水平自動調度 Pod 資源。
- 如要進一步瞭解如何排解自動水平調度資源問題,請參閱「排解自動水平調度 Pod 資源問題」。