在 GKE 叢集中啟用節點健康狀態預測功能

建立 AI 最佳化 Google Kubernetes Engine (GKE) 叢集後,即可啟用節點健康狀態預測。如果您打算使用 Topology Aware Scheduling (TAS) 和 Kueue 安排工作負載時程,啟用節點健康狀態預測功能後,叢集的排程器就能執行下列操作:

  1. 找出可能在接下來五小時內效能降低的節點。

  2. 避免在這些節點上排定新的工作負載。

這項做法有助於盡量減少重要工作負載和容易中斷的工作負載 (例如大規模訓練工作負載) 的中斷情形。

本文說明如何在 GKE 叢集中啟用節點健康狀態預測功能,該叢集使用 A4X Max、A4X、A4 或 A3 Ultra 節點。如要瞭解如何在 Cloud Monitoring 資訊主頁中使用節點健康狀態預測指標,例如排解 Slurm 叢集的效能問題,請參閱「監控 Compute Engine 執行個體和 Slurm 叢集」。

限制

在 GKE 叢集中啟用節點健康狀態預測功能前,請先考量下列限制:

  • 節點必須使用 A4X Max、A4X、A4 或 A3 Ultra 機型。

  • 節點必須使用取決於預留項目佈建模式

瞭解節點健康狀態預測

在 GKE 叢集中啟用節點健康狀態預測功能後,CronJob 會將 gke.google.com/recommended-to-run-large-training-workload 標籤套用至叢集中的每個節點。CronJob 會將標籤值設為節點 GPU 健康狀態惡化的可能性,並每 10 分鐘更新這些值。如果標籤值為 true,則節點健康狀態良好。否則,如果標籤值為 false,節點可能會在接下來五小時內降級。標籤值可能會根據節點的 GPU 健康狀態隨時間變更。

如果發現節點可能發生效能下降問題,可以採取下列任一做法或同時完成兩者:

  • 避免在節點上排定工作負載。您可以設定 Kueue,避免在顯示 false 值的節點上排定工作負載,詳情請參閱本文。

  • 回報節點故障。如果節點發生 GPU 溫度過高或效能緩慢等問題,可以回報節點故障。這項動作會啟動節點的主機維護事件,讓節點在維護完成後再次可用於執行工作負載。如需操作說明,請參閱「透過 GKE 檢舉故障主機」。

事前準備

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

  • 啟用 Google Kubernetes Engine API。
  • 啟用 Google Kubernetes Engine API
  • 如要使用 Google Cloud CLI 執行這項工作,請安裝初始化 gcloud CLI。如果您先前已安裝 gcloud CLI,請執行 gcloud components update 指令,取得最新版本。較舊的 gcloud CLI 版本可能不支援執行本文件中的指令。
  • 如要連線至叢集,請執行下列指令:

    gcloud container clusters get-credentials CLUSTER_NAME
    

    CLUSTER_NAME 替換為叢集名稱。

啟用節點健康狀態預測功能

準備好使用 TAS 在 GKE 叢集上排定工作負載後,即可完成下列步驟,啟用節點健康狀態預測功能:

  1. 部署自動節點標籤

  2. 更新工作設定

  3. 驗證節點標籤

部署自動節點標籤功能

如要在 GKE 叢集中部署節點健康狀態預測的節點自動標籤,請完成下列步驟:

  1. 複製 GKE Git 存放區中的硬體加速器:

    git clone https://github.com/GoogleCloudPlatform/container-engine-accelerators.git
    
  2. 前往 topology-scheduler 目錄:

    cd container-engine-accelerators/gpudirect-tcpxo/topology-scheduler
    
  3. 建立包含 Python 指令碼的 Kubernetes ConfigMap,schedule-daemon.pylabel-nodes-daemon.py 會查詢健康分數:

    kubectl create configmap predictor-scheduler-scripts \
        --namespace=kube-system \
        --from-file=schedule-daemon.py=schedule-daemon.py \
        --from-file=label-nodes-daemon.py=label-nodes-daemon.py
    
  4. 套用服務帳戶設定,將必要權限 (讀取 Monitoring 指標和修補節點物件) 授予 CronJob:

    kubectl apply -f service-account.yaml
    
  5. 部署排定節點標籤工作時間表的 DaemonSet:

    kubectl apply -f label-nodes-daemon.yaml
    

更新工作設定

如要在使用 Kueue 時啟用節點健康狀態預測功能,您必須更新 Job 設定,在啟動工作負載前檢查健康狀態預測值,以及拓撲需求 (如支援)。

如要更新 Job 設定並啟用節點健康狀態預測功能,請在 spec 欄位中新增下列欄位:

spec:
  affinity:
    nodeAffinity:
      requiredDuringSchedulingIgnoredDuringExecution:
        nodeSelectorTerms:
        - matchExpressions:
          - key: gke.google.com/recommended-to-run-large-training-workload
            operator: NotIn
            values:
            - "False"
...

驗證節點標籤

CronJob 首次執行後 (部署後約 10 分鐘),請確認是否已將 gke.google.com/recommended-to-run-large-training-workload 標籤套用至節點。

查看已套用 gke.google.com/recommended-to-run-large-training-workload 標籤的節點清單:

kubectl get nodes -L gke.google.com/recommended-to-run-large-training-workload

標籤值可以是下列其中一個:

  • true:預計節點在接下來五小時內會保持健康狀態。

  • false:節點可能在接下來五小時內效能降低。如果您按照本文說明設定工作設定,Kueue 就會避免在節點上排定新的工作負載。

後續步驟