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


Questa pagina mostra come ottimizzare le prestazioni dei carichi di lavoro che richiedono un uso intensivo della CPU indicando 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 computing Performance nei tuoi carichi di lavoro Autopilot.

Vantaggi della classe di computing delle prestazioni

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

I pod su questi nodi dedicati offrono i seguenti vantaggi:

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

Come funzionano i pod delle classi prestazioni

Devi eseguire il deployment di un pod con le seguenti caratteristiche:

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

GKE fa quanto segue:

  • Assicura 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 sul proprio

Compatibilità con altre funzionalità di GKE

Puoi utilizzare i pod di classe Performance con le seguenti funzionalità 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 i pod di classe Performance che usano la separazione dei carichi di lavoro.

Prezzi

Il tuo pod può utilizzare l'intera VM sottostante e qualsiasi hardware collegato in qualsiasi momento. Per questo hardware ti viene addebitato un costo da Compute Engine, con una tariffa premium per la gestione e la scalabilità dei nodi Autopilot. Per i 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 quindi initialize gcloud CLI. Se hai già installato gcloud CLI, ottieni 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à Compute Engine del cluster.

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, vedi Serie di macchine supportate in questo documento.

  2. Esegui il deployment del pod:

    kubectl apply -f perf-class-pod.yaml
    

Utilizzare gli SSD locali nei pod di classe Performance

I pod delle classi prestazioni possono utilizzare gli SSD locali per l'archiviazione temporanea se selezioni una serie di macchine che include un SSD locale. GKE prende in considerazione le richieste di archiviazione temporanee quando esegue 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 supporta anche gli SSD locali. Se la serie di macchine specificata non supporta gli SSD locali, il deployment non va a buon fine e si verifica 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:

Per confrontare queste serie di macchine e i relativi casi d'uso, consulta Confronto di 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 di qualsiasi DaemonSet che verrà eseguito sul nuovo nodo. GKE arrotonderà questi valori al tipo di macchina Compute Engine più vicino disponibile 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: considera un pod di classe Performance che seleziona la serie di macchine C3D e gli SSD locali per l'archiviazione temporanea. Le richieste di risorse totali, 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, che ha 16 vCPU, 64 GiB di memoria e 365 GiB di capacità SSD locale.

Passaggi successivi