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 quanto segue:
- Serie di macchine e casi d'uso di Compute Engine
- Requisiti a livello di kernel per le applicazioni
Come funziona la selezione delle 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. Autopilot esegue il provisioning di uno dei tipi di macchine predefinite della serie di macchine selezionata per eseguire in modo ottimale il tuo carico di lavoro.
Oltre a prestazioni ottimali 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, migliorando il rapporto prezzo/prestazioni. Se il tuo carico di lavoro deve accedere a tutte le risorse sul nodo, puoi configurarlo in modo che richieda un pod per ogni nodo.
Workload a richiesta intermittente:puoi configurare i pod in modo che esplodano nella capacità di risorse non utilizzata sul nodo impostando i limiti delle risorse più elevati delle richieste. Per maggiori dettagli, vedi Configurare l'esplosione dei pod in GKE.
Richiedi un nodo dedicato per ogni pod
Se hai workload che richiedono un'elevata intensità di CPU e che necessitano di un accesso affidabile a tutte le risorse del nodo, se vuoi puoi configurare il pod in modo che Autopilot inserisca un pod che richiede 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 AI/ML o i carichi di lavoro batch di calcolo ad alte prestazioni (HPC).
Scegli tra la pianificazione con più pod e quella con un solo pod
Segui le indicazioni riportate di seguito per scegliere un comportamento di pianificazione dei pod in base ai tuoi requisiti:
- Se hai pod che possono condividere risorse di calcolo con altri pod o 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 l'accesso affidabile alle risorse dei nodi completi o vuoi minimizzare la possibilità di interruzioni causate dalla condivisione delle risorse di calcolo, richiedi un nodo dedicato per ogni pod.
Prezzi
Ti viene addebitato il costo della VM di base e dell'eventuale hardware collegato da Compute Engine, oltre a un premio 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, ottieni 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 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: 100Gi
Sostituisci
MACHINE_SERIES
con la serie di macchine Compute Engine per il tuo pod, ad esempioc3
. Per i valori supportati, consulta la sezione 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 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 prende in considerazione le richieste di archiviazione temporanea quando sceglie un tipo di macchina Compute Engine per il pod.
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.Esegui il deployment del pod:
kubectl apply -f local-ssd-pod.yaml
Richiedere un nodo dedicato per un pod
Se il tuo pod ha requisiti di prestazioni specifici, ad esempio ha bisogno di un 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 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_SERIES
con 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:
- 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 di eventuali DaemonSet nel cluster.
- Esegui 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:
(anteprima con lista consentita *) | ||
(sempre in bundle) |
* Questa funzionalità richiede che tu venga aggiunto a una lista consentita. Per ricevere l'accesso, contatta il team dedicato al tuo account. ↩
Per confrontare queste serie di macchine e i relativi casi d'uso, consulta Confronto delle serie di macchine nella documentazione di Compute Engine.
Compatibilità con altre funzionalità di GKE
Puoi utilizzare i pod che selezionano le serie di macchine con le seguenti funzionalità e capacità di GKE:
- Spot Pod
- Pod con tempo di esecuzione esteso (solo con nodi dedicati per pod)
- Separazione dei carichi di lavoro
- Prenotazioni della capacità
- Sconti per impegno di utilizzo
I pod Spot e i pod con tempo di esecuzione esteso sono mutuamente esclusivi. GKE non applica richieste di risorse minime più elevate per i pod dedicati 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 ed archiviazione temporanea dei pod e di eventuali DaemonSet che verranno eseguiti sul nuovo nodo. GKE arrotonderà 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:
- 500 m vCPU
- 1 GiB di memoria
Autopilot posiziona tutti i pod su un nodo supportato dal tipo di macchina
c3d-standard-4
, che ha 4 vCPU e 16 GB di memoria.Esempio 2: prendi in considerazione un pod che seleziona la serie di macchine
C3D
e 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 spazio di archiviazione temporanea
Autopilot posiziona il pod su un nodo che utilizza il tipo di macchina
c3d-standard-16-lssd
, con 16 vCPU, 64 GB di memoria e 365 GB di capacità SSD locale.
Passaggi successivi
- Per indicazioni sulle opzioni di calcolo offerte da Autopilot per vari casi d'uso, consulta Classi di calcolo in Autopilot.
- Esegui il deployment di carichi di lavoro basati su GPU in Autopilot.