Abilita la previsione dello stato di integrità dei nodi in un cluster GKE

Dopo aver creato un cluster Google Kubernetes Engine (GKE) ottimizzato per l'AI, puoi attivare la previsione dello stato dei nodi. Se prevedi di pianificare i carichi di lavoro utilizzando la pianificazione sensibile alla topologia (TAS) e Kueue, l'attivazione della previsione dello stato dei nodi consente allo scheduler del cluster di eseguire le seguenti operazioni:

  1. Identifica i nodi che probabilmente si degraderanno nelle prossime cinque ore.

  2. Evita di pianificare nuovi workload su questi nodi.

Questo approccio ti aiuta a ridurre al minimo le interruzioni nei workload critici e sensibili alle interruzioni, come i workload di addestramento su larga scala.

Questo documento spiega come attivare la previsione dell'integrità dei nodi in un cluster GKE che utilizza nodi A4X Max, A4X, A4 o A3 Ultra. Per scoprire come utilizzare la metrica di previsione dell'integrità dei nodi in una dashboard di Cloud Monitoring quando, ad esempio, vuoi risolvere i problemi di prestazioni di un cluster Slurm, consulta Monitorare le istanze Compute Engine e i cluster Slurm.

Limitazioni

Prima di abilitare la previsione dello stato di integrità dei nodi nel cluster GKE, tieni presente le seguenti limitazioni:

  • Il nodo deve utilizzare i tipi di macchina A4X Max, A4X, A4 o A3 Ultra.

  • Il nodo deve utilizzare il modello di provisioning con prenotazione.

Informazioni sulla previsione dello stato dei nodi

Quando abiliti la previsione dello stato di integrità dei nodi in un cluster GKE, il CronJob applica l'etichetta gke.google.com/recommended-to-run-large-training-workload a ogni nodo del cluster. CronJob imposta i valori delle etichette sulla probabilità che lo stato della GPU di un nodo peggiori e aggiorna questi valori ogni 10 minuti. Se il valore dell'etichetta è true, il nodo è integro. In caso contrario, se il valore dell'etichetta è false, è probabile che il nodo si degraderà entro le prossime cinque ore. Il valore dell'etichetta può cambiare nel tempo in base all'integrità della GPU del nodo.

Se noti che un nodo è in procinto di degradarsi, puoi eseguire una o entrambe le seguenti operazioni:

  • Evita di pianificare i carichi di lavoro sul nodo. Puoi configurare Kueue in modo da evitare la pianificazione dei workload sui nodi che mostrano un valore di false, come descritto in questo documento.

  • Segnala il nodo come difettoso. Se il nodo presenta problemi come temperatura della GPU elevata o prestazioni lente, puoi segnalarlo come difettoso. Questa azione avvia un evento di manutenzione dell'host per il nodo, rendendolo di nuovo disponibile per l'esecuzione dei workload al termine della manutenzione. Per istruzioni, vedi Segnala host difettosi tramite GKE.

Prima di iniziare

Prima di iniziare, assicurati di aver eseguito le seguenti operazioni:

  • Attiva l'API Google Kubernetes Engine.
  • Attiva l'API Google Kubernetes Engine
  • Se vuoi utilizzare Google Cloud CLI per questa attività, installala e poi inizializza gcloud CLI. Se hai già installato gcloud CLI, scarica l'ultima versione eseguendo il comando gcloud components update. Le versioni precedenti di gcloud CLI potrebbero non supportare l'esecuzione dei comandi in questo documento.
  • Per connetterti al cluster, esegui questo comando:

    gcloud container clusters get-credentials CLUSTER_NAME
    

    Sostituisci CLUSTER_NAME con il nome del tuo cluster.

Abilita la previsione dello stato di integrità dei nodi

Dopo aver preparato la pianificazione dei carichi di lavoro sul cluster GKE utilizzando TAS, puoi attivare la previsione dello stato dei nodi completando i seguenti passaggi:

  1. Esegui il deployment dell'etichettatura automatica dei nodi

  2. Aggiornare la configurazione del job

  3. Verificare l'etichettatura dei nodi

Esegui il deployment dell'etichettatura automatica dei nodi

Per eseguire il deployment dell'etichettatura automatica dei nodi per la previsione dell'integrità dei nodi nel cluster GKE, completa i seguenti passaggi:

  1. Clona gli acceleratori hardware nel repository Git di GKE:

    git clone https://github.com/GoogleCloudPlatform/container-engine-accelerators.git
    
  2. Vai alla directory topology-scheduler:

    cd container-engine-accelerators/gpudirect-tcpxo/topology-scheduler
    
  3. Crea ConfigMap Kubernetes contenente gli script Python,schedule-daemon.py e label-nodes-daemon.py, che eseguono query sui punteggi di integrità:

    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. Applica la configurazione del account di servizio per concedere le autorizzazioni necessarie (lettura delle metriche di Monitoring e applicazione di patch agli oggetti Node) a CronJob:

    kubectl apply -f service-account.yaml
    
  5. Esegui il deployment del DaemonSet che pianifica il job di etichettatura dei nodi:

    kubectl apply -f label-nodes-daemon.yaml
    

Aggiorna la configurazione del job

Per abilitare la previsione dell'integrità dei nodi quando utilizzi Kueue, devi aggiornare la configurazione del job per verificare i valori di previsione dell'integrità e, se supportati, i requisiti di topologia prima di avviare un workload.

Per aggiornare la configurazione del job e attivare la previsione dell'integrità dei nodi, aggiungi i seguenti campi nel campo spec:

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

Verifica dell'etichettatura dei nodi

Dopo la prima esecuzione di CronJob, che avviene circa 10 minuti dopo il deployment, verifica se è stata applicata l'etichetta gke.google.com/recommended-to-run-large-training-workload ai tuoi nodi.

Visualizza un elenco dei nodi a cui è stata applicata l'etichetta gke.google.com/recommended-to-run-large-training-workload:

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

Il valore dell'etichetta può essere uno dei seguenti:

  • true: è previsto che il nodo sia integro nelle prossime cinque ore.

  • false: è probabile che le prestazioni del nodo peggiorino nelle prossime cinque ore. Se hai configurato la configurazione del job come descritto in questo documento, Kueue evita di pianificare nuovi workload sul nodo.

Passaggi successivi