Ottimizza le prestazioni dei pod Autopilot scegliendo una serie di macchine


Questa pagina mostra come posizionare i carichi di lavoro su serie di macchine Compute Engine specifiche per ottenere prestazioni ottimali dei carichi di lavoro nei cluster Google Kubernetes Engine (GKE) Autopilot.

Assicurati di conoscere i seguenti aspetti:

Come funziona la selezione delle serie di macchine

Puoi aggiungere un selettore di nodi cloud.google.com/machine-family alla specifica del pod per Autopilot per allocare hardware Compute Engine specifico per il pod. Ad esempio, puoi scegliere la serie di macchine C3 per i pod che richiedono più potenza della CPU o la serie di macchine N1 per i pod che richiedono più memoria. Autopilot esegue il provisioning di uno dei tipi di macchina predefinita della serie di macchine selezionata per un'esecuzione ottimale del carico di lavoro.

Oltre a un rendimento ottimale del pod, la scelta di una serie di macchine specifica offre i seguenti vantaggi:

  • Utilizzo efficiente dei nodi: per impostazione predefinita, Autopilot ottimizza l'utilizzo delle risorse dei nodi pianificando il maggior numero possibile di pod che richiedono la stessa serie di macchine su ogni nodo. Questo approccio ottimizza l'utilizzo delle risorse sul nodo, migliora il rapporto prezzo-prestazioni. Se il carico di lavoro deve accedere a tutte le risorse sul nodo, puoi configurarlo in modo che richieda un pod per ogni nodo.

  • Carichi di lavoro con picchi: puoi configurare i pod in modo che esplodano nella capacità di risorse inutilizzata sul nodo impostando i limiti di risorse più elevati delle richieste. Per maggiori dettagli, consulta Configurare il bursting dei pod in GKE.

Richiedi un nodo dedicato per ogni pod

Se hai carichi di lavoro ad alta intensità di CPU che necessitano di un accesso affidabile a tutte le risorse del nodo, facoltativamente, puoi configurare il pod per fare in modo che Autopilot metta un pod che richiede di una serie di macchine sul proprio nodo.

I nodi dedicati per pod sono consigliati quando esegui carichi di lavoro su larga scala con uso intensivo di CPU, come i carichi di lavoro di addestramento IA/ML o i carichi di lavoro batch di computing ad alte prestazioni (HPC).

Scegli tra la pianificazione per più pod e per un singolo pod

Utilizza le seguenti indicazioni per scegliere un comportamento di pianificazione dei pod in base ai tuoi requisiti:

Prezzi

Ti vengono addebitati i costi per la VM sottostante e l'eventuale hardware collegato da Compute Engine, più un'offerta 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 operazioni:

  • Attiva l'API Google Kubernetes Engine.
  • Attiva l'API Google Kubernetes Engine
  • Se vuoi utilizzare Google Cloud CLI per questa attività, installa e poi inizializza gcloud CLI. Se hai già installato gcloud CLI, scarica la versione più recente eseguendo gcloud components update.
  • Assicurati di avere un cluster Autopilot esistente che esegue la versione 1.30.1-gke.1396000 o successive. Per creare un cluster, consulta Creare un cluster Autopilot.

Seleziona una serie di macchine

Questa sezione mostra come selezionare una macchina Compute Engine specifica in un pod.

  1. Salva il seguente manifest come machine-series-pod.yaml:

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

    Sostituisci MACHINE_SERIES con la macchina Compute Engine per il tuo pod, ad esempio c3. Per i valori supportati, vedi Serie di macchine supportate in questa pagina.

  2. Esegui il deployment del pod:

    kubectl apply -f machine-series-pod.yaml
    

Questo manifest consente ad Autopilot di ottimizzare l'utilizzo delle risorse del nodo pianificando in modo efficiente altri pod che selezionano la stessa serie di macchine sullo stesso nodo, se è disponibile la capacità.

Utilizzare le unità SSD locali

I pod che selezionano una serie di macchine possono utilizzare SSD locali per lo spazio di archiviazione temporaneo se specifichi una serie di macchine che offre SSD locali. Autopilot considera temporanea di archiviazione quando si sceglie un tipo di macchina Compute Engine per il pod.

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

      apiVersion: v1
      kind: Pod
    metadata:
      name: local-ssd-pod
    spec:
      nodeSelector:
        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: 6
            memory: "25Gi"
            ephemeral: "100Gi"
          limits:
            cpu: 12
            memory: "50Gi"
            ephemeral: "200Gi"
    

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

  2. Esegui il deployment del pod:

    kubectl apply -f local-ssd-pod.yaml
    

Richiedi un nodo dedicato per un pod

Se il tuo pod ha requisiti di prestazioni specifici, ad esempio ha bisogno di accesso affidabile a tutte le risorse del nodo, puoi richiedere un nodo dedicato per ogni pod specificando il selettore di nodi cloud.google.com/compute-class: Performance insieme al selettore di nodi della serie di macchine. Questo indica ad Autopilot di posizionare il pod nuovo nodo che utilizza la serie di macchine specificata ed è dedicato per quel pod. Inoltre, questo selettore di nodi impedisce ad Autopilot di pianificare altri pod su quel nodo.

  1. Salva il seguente manifest come dedicated-node-pod.yaml:

    apiVersion: v1
    kind: Pod
    metadata:
      name: dedicated-node-pod
    spec:
      nodeSelector:
        cloud.google.com/machine-family: MACHINE_SERIES
        cloud.google.com/compute-class: Performance
      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 la pianificazione di un pod per nodo. Se la serie di macchine specificata non supporta la pianificazione di un pod per nodo, il deployment non va a buon fine e viene visualizzato un errore.

  2. Esegui il deployment del pod:

    kubectl apply -f dedicated-node-pod.yaml
    

Quando esegui il deployment di questo manifest, Autopilot esegue le seguenti operazioni:

  • Garantisce che il pod di cui è stato eseguito il deployment richieda almeno le risorse minime per il nodo ottimizzato per le prestazioni.
  • Calcola le richieste di risorse totali del pod di cui è stato eseguito il deployment e degli 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 di nodi e tolleranze per garantire che il pod venga eseguito sul proprio nodo.

Serie di macchine supportate

Il selettore machine-family supporta le seguenti serie di macchine:

(sempre in bundle)

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

Compatibilità con altre funzionalità di GKE

Puoi utilizzare i pod che selezionano serie di macchine con il seguente caratteristiche e funzionalità:

I pod Spot e i pod con tempo di esecuzione esteso sono mutuamente esclusivi. GKE non applica richieste di risorse minime più elevate per Pod per nodo, anche se utilizzano la separazione dei carichi di lavoro.

In che modo GKE seleziona un tipo di macchina

Per selezionare un tipo di macchina nella serie di macchine specificata, GKE calcola le richieste totali di CPU, memoria e spazio di archiviazione temporaneo dei pod e di eventuali DaemonSet che verranno eseguiti sul nuovo nodo. GKE arrotonda questi valori per eccesso al tipo di macchina Compute Engine disponibile più vicino che supporta tutti questi totali.

  • Esempio 1: considera un deployment con quattro repliche che seleziona la serie di macchine C3D. Non sono richiesti nodi dedicati per pod. Le richieste di risorse di ogni replica sono le seguenti:

    • 500 m vCPU
    • 1 GiB di memoria

    Autopilot posiziona tutti i pod su un nodo supportato tipo di macchina c3d-standard-4, con 4 vCPU e 16 GB di memoria.

  • Esempio 2: considera un pod che seleziona la serie di macchine C3D e gli SSD locali per l'archiviazione temporanea. Richiedi un nodo dedicato per il pod. Le richieste di risorse totali, inclusi i DaemonSet, sono le seguenti:

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

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

Passaggi successivi