Questo documento mostra come posizionare i workload su una serie di macchine Compute Engine specifica per ottenere prestazioni ottimali dei workload nei cluster Autopilot di Google Kubernetes Engine (GKE).
Assicurati di avere familiarità con quanto segue:
- Serie di macchine Compute Engine e casi d'uso
- Requisiti a livello di kernel per le tue applicazioni
Come funziona la selezione della serie di macchine
Puoi aggiungere un selettore di nodi cloud.google.com/machine-family alla specifica del pod per consentire ad Autopilot di allocare hardware Compute Engine specifico per quel 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.
Per eseguire in modo ottimale il tuo workload, Autopilot
esegue il provisioning di uno dei tipi di macchine predefinite
della serie di macchine selezionata.
Oltre alle prestazioni ottimali dei 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 su ogni nodo il maggior numero possibile di pod che richiedono la stessa serie di macchine. Questo approccio ottimizza l'utilizzo delle risorse sul nodo, migliorando il rapporto prezzo/prestazioni. Se il tuo workload richiede l'accesso a tutte le risorse del nodo, puoi configurarlo in modo che richieda un pod per ogni nodo.
Workload con possibilità di burst: puoi configurare i pod in modo che eseguano il burst nella capacità delle risorse inutilizzate sul nodo impostando limiti delle risorse superiori alle richieste. Per maggiori dettagli, consulta Configura il bursting dei pod in GKE.
Pianifica un nodo dedicato per ogni pod
Se hai workload ad alta intensità di CPU che richiedono un accesso affidabile a tutte le risorse del nodo, puoi facoltativamente configurare il pod in modo che Autopilot posizioni un pod che richiede una serie di macchine sul proprio nodo.
I nodi dedicati per pod sono consigliati quando esegui workload su larga scala che richiedono un uso intensivo della CPU, come i workload di addestramento AI/ML o i workload batch di computing ad alte prestazioni (HPC).
Scegli tra la pianificazione di più pod e di un singolo pod
Utilizza le seguenti indicazioni per scegliere un comportamento di pianificazione dei pod in base ai tuoi requisiti:
- Se hai pod che possono condividere risorse di computing con altri pod o se vuoi ottimizzare i costi durante l'esecuzione di pod su hardware specializzato, utilizza il comportamento di pianificazione predefinito di più pod per nodo.
- Se hai pod che richiedono un accesso affidabile alle risorse dei nodi completi o se vuoi ridurre al minimo la possibilità di interruzioni causate dalla condivisione delle risorse di computing, richiedi un nodo dedicato per ogni pod.
Prezzi
Compute Engine ti addebita il costo della VM sottostante e di qualsiasi hardware collegato, più un 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
- Per 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.
- Assicurati di avere un cluster Autopilot esistente che esegue la versione 1.30.1-gke.1396000 o successiva. Per creare un cluster, vedi Crea un cluster Autopilot.
Seleziona una serie di macchine
Questa sezione mostra come selezionare una serie di macchine Compute Engine specifica in un pod.
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: 100GiSostituisci
MACHINE_SERIEScon la serie di macchine Compute Engine per il tuo pod, ad esempioc3. Per i valori supportati, consulta Serie di macchine supportate in questa pagina.Esegui il deployment del pod:
kubectl apply -f machine-series-pod.yaml
Questo manifest consente ad Autopilot di ottimizzare l'utilizzo delle risorse dei nodi pianificando in modo efficiente altri pod che selezionano la stessa serie di macchine sullo stesso nodo, se è disponibile capacità.
Utilizza gli SSD locali
I pod che selezionano una serie di macchine possono utilizzare gli SSD locali per l'archiviazione temporanea se specifichi una serie di macchine che offre SSD locali. Autopilot prende in considerazione le richieste di archiviazione temporanea quando sceglie un tipo di macchina Compute Engine per il pod.
Per saperne di più, consulta Utilizza l'archiviazione temporanea supportata da SSD locali con i cluster Autopilot.
Richiedi un nodo dedicato per un pod
Se il pod ha requisiti di prestazioni specifici, ad esempio l'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. In questo modo, Autopilot posiziona il pod su un nuovo nodo che utilizza la serie di macchine specificata ed è dedicato a quel pod.
Questo selettore di nodi impedisce inoltre ad Autopilot di pianificare altri pod su quel nodo.
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_SERIEScon una serie di macchine supportata che supporta 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.Esegui il deployment del pod:
kubectl apply -f dedicated-node-pod.yaml
Quando esegui il deployment di questo manifest, Autopilot esegue le seguenti operazioni:
- Assicura 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 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 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:
Se non specifichi una serie di macchine quando selezioni la classe Performance, GKE utilizza la serie di macchine C4 se i tipi di macchine C4 sono disponibili in una regione.
Per confrontare queste serie di macchine e i relativi casi d'uso, consulta Confronto tra serie di macchine nella documentazione di Compute Engine.
Limitazioni
- La classe ComputeClass Performance predefinita non supporta i tipi di macchine bare metal, come
c3-standard-192-metal,c4a-standard-72-metalec4d-standard-384-metal. Per utilizzare questi tipi di macchine con Autopilot o la creazione automatica pool di nodi, specifica il tipo di macchina esatto in una ComputeClass personalizzata.
Requisiti della versione
Consulta i seguenti requisiti di versione per serie di macchine specifiche:
- C4N: GKE versione 1.36.0-gke.3009002 e successive
- C4D: GKE versione 1.32.9-gke.1711000 e successive
- N4D:
- GKE versione 1.33.13-gke.1079000 e successive
- GKE versione 1.34.1-gke.2037000 e successive
- Tipi bare metal C3 e C4A: GKE versione 1.35.3-gke.1389000 e successive (utilizzando una ComputeClass personalizzata).
- Tipi bare metal C4D: GKE versione 1.37.0-gke.4713000 e successive (utilizzando una ComputeClass personalizzata).
- Z4D: GKE versione 1.36.3-gke.1244000 e successive.
Compatibilità con altre funzionalità di GKE
I pod che selezionano una serie di macchine possono utilizzare le funzionalità di GKE supportate da quella serie di macchine, ad esempio:
- Pod Spot
- Pod con tempo di esecuzione esteso (solo con nodi dedicati per pod)
- Separazione dei workload
- Prenotazioni di capacità
- Sconti per impegno di utilizzo
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 dedicati per nodo, anche se utilizzano la separazione dei workload.
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 richiedi nodi dedicati per pod. Le richieste di risorse di ogni replica sono le seguenti:
- 500m vCPU (0,5 vCPU)
- 1 GiB di memoria
Autopilot posiziona tutti e quattro i pod su un nodo supportato dal tipo di macchina
c3d-standard-4, che ha 4 vCPU e 16 GB di memoria.Esempio 2: considera un pod che seleziona la serie di macchine
C3De le unità 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 archiviazione temporanea
Autopilot 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
- Per indicazioni sulle opzioni di computing offerte da Autopilot per vari casi d'uso, consulta Classi di computing in Autopilot.
- Esegui il deployment dei workload basati su GPU in Autopilot.