Esegui carichi di lavoro ad alta intensità di CPU con prestazioni ottimali


Questa pagina mostra come ottimizzare le prestazioni dei carichi di lavoro ad alta intensità di CPU chiedendo a Google Kubernetes Engine (GKE) di posizionare ciascun pod sul proprio nodo, con accesso completo a tutte le risorse del nodo. Per utilizzare questo modello di posizionamento dei pod, richiedi la classe di calcolo delle prestazioni nei carichi di lavoro Autopilot.

Vantaggi della classe di computing delle prestazioni

I nodi dedicati per pod sono ideali quando esegui carichi di lavoro su larga scala ad alta intensità di CPU che potrebbero richiedere l'accesso alle funzionalità sulla macchina virtuale (VM) sottostante. Ad esempio, carichi di lavoro per l'addestramento AI/ML ad alta intensità di CPU o carichi di lavoro batch per computing ad alte prestazioni (HPC).

I pod su questi nodi dedicati presentano i seguenti vantaggi:

  • Prestazioni prevedibili: accedi a tutte le risorse dei nodi in qualsiasi momento.
  • Carichi di lavoro burstable: se non imposti limiti di risorse nei manifest, i pod della classe Performance possono eseguire il bursting di tutta la capacità inutilizzata del nodo con un rischio minimo di rimozione forzata dalla pressione dei nodi Kubernetes.

Come funzionano i pod della classe Performance

Esegui il deployment di un pod che ha le seguenti caratteristiche:

  • Seleziona la classe Performance e una serie di macchine Compute Engine
  • Specifica le richieste di risorse e, idealmente, non specifica i limiti delle risorse

GKE esegue le seguenti operazioni:

  • Garantisce che il pod di cui è stato eseguito il deployment richieda almeno le risorse minime per la classe di computing
  • Calcola le richieste di risorse totali del pod di cui è stato eseguito il deployment e di eventuali DaemonSet nel cluster
  • Esegue il provisioning di un nodo supportato dalla serie di macchine selezionata
  • Modifica il manifest del pod con una combinazione di selettori e tolleranze dei nodi per garantire che il pod venga eseguito

Compatibilità con altre funzionalità di GKE

Puoi utilizzare i pod di classe Performance con le seguenti capacità e caratteristiche di GKE:

I pod spot e i pod con tempo di esecuzione esteso si escludono a vicenda. GKE non applica richieste di risorse minime più elevate per pod di classe Performance che utilizzano la separazione dei carichi di lavoro.

Prezzi

Il tuo pod può utilizzare in qualsiasi momento l'intera VM sottostante e qualsiasi hardware collegato. Questo hardware ti verrà addebitato da Compute Engine, con un premium per la gestione e la scalabilità dei nodi Autopilot. Per maggiori dettagli, consulta i prezzi di GKE.

Prima di iniziare

Prima di iniziare, assicurati di aver eseguito le seguenti attività:

  • Abilita l'API Google Kubernetes Engine.
  • Abilita l'API Google Kubernetes Engine
  • Se vuoi utilizzare Google Cloud CLI per questa attività, installa e initialize gcloud CLI. Se hai già installato gcloud CLI, scarica la versione più recente eseguendo gcloud components update.

Connessione al tuo cluster

Utilizza Google Cloud CLI per connetterti al tuo cluster Autopilot:

gcloud container clusters get-credentials CLUSTER_NAME \
    --location=LOCATION

Sostituisci quanto segue:

  • CLUSTER_NAME: il nome del tuo cluster.
  • LOCATION: la località di Compute Engine del cluster.

Esegui il deployment di un pod di classe Performance

  1. Salva il seguente manifest come perf-class-pod.yaml:

    apiVersion: v1
    kind: Pod
    metadata:
      name: performance-pod
    spec:
      nodeSelector:
        cloud.google.com/compute-class: Performance
        cloud.google.com/machine-family: MACHINE_SERIES
      containers:
      - name: my-container
        image: "k8s.gcr.io/pause"
        resources:
          requests:
            cpu: 20
            memory: "100Gi"
    

    Sostituisci MACHINE_SERIES con la serie di macchine di Compute Engine per il tuo pod, ad esempio c3. Per i valori supportati, consulta Serie di macchine supportate in questo documento.

  2. Esegui il deployment del pod:

    kubectl apply -f perf-class-pod.yaml
    

Utilizza SSD locali nei pod di classe Prestazioni

I pod della classe di prestazioni possono utilizzare gli SSD locali per l'archiviazione temporanea se selezioni una serie di macchine che include un SSD locale. GKE considera le richieste di archiviazione temporanee durante il provisioning di un nodo per il pod della classe Performance.

  1. Salva il seguente manifest come perf-class-ssd-pod.yaml:

    apiVersion: v1
    kind: Pod
    metadata:
      name: performance-pod
    spec:
      nodeSelector:
        cloud.google.com/compute-class: Performance
        cloud.google.com/machine-family: MACHINE_SERIES
        cloud.google.com/gke-ephemeral-storage-local-ssd: "true"
      containers:
      - name: my-container
        image: "k8s.gcr.io/pause"
        resources:
          requests:
            cpu: 12
            memory: "50Gi"
            ephemeral: "200Gi"
    

    Sostituisci MACHINE_SERIES con una serie di macchine supportata che supporti anche le SSD locali. Se la serie di macchine specificata non supporta le SSD locali, il deployment non va a buon fine e viene generato un errore.

  2. Esegui il deployment del pod:

    kubectl apply -f perf-class-pod.yaml
    

Serie di macchine supportate

La classe di computing delle prestazioni supporta le seguenti serie di macchine:

Serie macchina Selezione degli SSD locali in Autopilot
Serie di macchine C3 (c3)
Serie di macchine C3D (c3d)
Serie di macchine H3 (h3)
Serie di macchine C2 (c2)
Serie di macchine C2D (c2d)
Serie di macchine T2D (t2d)
Serie di macchine T2A (t2a)

Per confrontare queste serie di macchine e i relativi casi d'uso, consulta Confronto delle serie di macchine nella documentazione di Compute Engine.

In che modo GKE seleziona una dimensione della macchina

Per selezionare una dimensione della macchina nella serie di macchine specificata, GKE calcola la CPU totale, la memoria totale e le richieste di archiviazione temporanea totali del pod della classe Performance e degli eventuali DaemonSet che verranno eseguiti sul nuovo nodo. GKE arrotonda questi valori al tipo di macchina Compute Engine disponibile più vicino che supporta tutti questi totali.

  • Esempio 1: considera un pod di classe Performance che seleziona la serie di macchine C3. Le richieste di risorse totali, inclusi i DaemonSet, sono le seguenti:

    • 70 vCPU
    • 200 GiB di memoria

    GKE posiziona il pod su un nodo supportato dal tipo di macchina c3-standard-88, che ha 88 vCPU e 352 GB di memoria.

  • Esempio 2: prendi in considerazione un pod di classe Performance che seleziona la serie di macchine C3D e le unità SSD locali per l'archiviazione temporanea. Le richieste totali di risorse, inclusi i DaemonSet, sono le seguenti:

    • 12 vCPU
    • 50 GiB di memoria
    • 200 GiB di spazio di archiviazione temporaneo

    GKE posiziona il pod su un nodo che utilizza il tipo di macchina c3d-standard-16-lssd, con 16 vCPU, 64 GiB di memoria e 365 GiB di capacità SSD locale.

Passaggi successivi