Questa pagina spiega come abilitare e configurare il provisioning automatico dei nodi nei cluster Google Kubernetes Engine (GKE) Standard. Utilizzando esempi, questa pagina mostra come utilizzare i file di configurazione YAML per configurare impostazioni avanzate come limiti delle risorse, riparazione automatica e upgrade automatico e per impostare alcuni valori predefiniti per il provisioning automatico.
Imparerai anche a:
- Migliora la sicurezza del cluster utilizzando le chiavi di crittografia gestite dal cliente (CMEK) e configurando l'integrità dei nodi.
- Ottimizza l'utilizzo delle risorse e riduci al minimo le interruzioni specificando strategie di upgrade
surge
oblue-green
e separando i pod gestiti da GKE dai workload utente. - Migliora le prestazioni utilizzando acceleratori, come GPU o TPU, con il provisioning automatico.
Questa pagina è destinata a operatori, architetti cloud, sviluppatori e ingegneri di rete che eseguono il provisioning e la configurazione delle risorse cloud ed eseguono il deployment dei carichi di lavoro sui cluster GKE. Per scoprire di più sui ruoli comuni e sulle attività di esempio a cui viene fatto riferimento nei contenuti di Google Cloud , consulta Ruoli utente e attività comuni di GKE.
Prima di leggere questa pagina, assicurati di avere familiarità con quanto segue:
- Provisioning automatico dei nodi
- Ruoli e service account IAM (Identity and Access Management)
- Tipi di istanza e famiglie di macchine Compute Engine
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à,
installala e poi
inizializza
gcloud CLI. Se hai già installato gcloud CLI, scarica l'ultima versione
eseguendo
gcloud components update
.
Assicurati di avere un cluster standard esistente. Per abilitare il provisioning automatico sui cluster che eseguono VM TPU, assicurati che il cluster GKE esegua una delle seguenti versioni:
- Versione 1.27.6 e successive o 1.28 e successive, per Cloud TPU v4 e v5e.
- Versioni 1.28.7-gke.1020000 o successive e 1.29.2-gke.1035000 o successive per Cloud TPU v5p.
- Versione 1.31.1-gke.1146000 o successive per Cloud TPU Trillium.
Per creare un cluster standard, consulta Crea un cluster regionale.
Limitazioni
Il provisioning automatico dei nodi presenta le seguenti limitazioni delle risorse:
Devi pianificare con attenzione l'intervallo di indirizzi IP dei nodi. Puoi espandere l'intervallo di indirizzi IP dei nodi dopo aver creato un cluster. Tuttavia, ti consigliamo di non espandere l'intervallo di indirizzi IP dei nodi dopo aver creato il cluster, in quanto devi aggiornare le regole firewall in modo che includano il nuovo intervallo come origine. Puoi espandere l'intervallo di indirizzi IP dei pod utilizzando il CIDR multi-pod discontinuo con il provisioning automatico dei nodi.
Quando definisci gli intervalli massimi di CPU e memoria, i limiti vengono calcolati per l'intero cluster GKE, non per nodo o perpool di nodil. Il provisioning automatico dei nodi controlla questi limiti considerando la somma delle risorse dei pool di nodi esistenti creati manualmente, di tutti i pool di nodi con provisioning automatico attivi e di tutti i nuovi nodi potenziali che il provisioning automatico dei nodi potrebbe creare. Se il provisioning di un nuovo nodo causerebbe il superamento di uno di questi massimi specificati per l'utilizzo totale delle risorse del cluster, il provisioning automatico dei nodi non crea il nuovo nodo. Questo scenario può comportare la mancata pianificazione dei pod se richiedono risorse che superano i valori massimi definiti.
Abilita provisioning automatico dei nodi
Puoi attivare il provisioning automatico dei nodi su un cluster con gcloud CLI o la consoleGoogle Cloud .
gcloud
Per abilitare il provisioning automatico dei nodi, esegui questo comando:
gcloud container clusters update CLUSTER_NAME \ --enable-autoprovisioning \ --min-cpu MINIMUM_CPU \ --min-memory MIMIMUM_MEMORY \ --max-cpu MAXIMUM_CPU \ --max-memory MAXIMUM_MEMORY \ --autoprovisioning-scopes=https://www.googleapis.com/auth/logging.write,https://www.googleapis.com/auth/monitoring,https://www.googleapis.com/auth/devstorage.read_only
Sostituisci quanto segue:
CLUSTER_NAME
: il nome del cluster per attivare il provisioning automatico dei nodi.MINIMUM_CPU
: il numero minimo di core nel cluster.MINIMUM_MEMORY
: il numero minimo di gigabyte di memoria nel cluster.MAXIMUM_CPU
: il numero massimo di core nel cluster. Questo limite somma le risorse CPU in tutti i pool di nodi esistenti creati manualmente e in tutti i potenziali pool di nodi creati dal provisioning automatico dei nodi.MAXIMUM_MEMORY
: il numero massimo di gigabyte di memoria nel cluster. Questo limite somma le risorse di memoria in tutti i pool di nodi esistenti creati manualmente e in tutti i potenziali pool di nodi creati dal provisioning automatico dei nodi.
Il seguente esempio attiva il provisioning automatico dei nodi su dev-cluster
e consente la scalabilità tra una dimensione totale del cluster di 1 CPU e 1 gigabyte di
memoria e un massimo di 10 CPU e 64 gigabyte di memoria:
gcloud container clusters update dev-cluster \ --enable-autoprovisioning \ --min-cpu 1 \ --min-memory 1 \ --max-cpu 10 \ --max-memory 64
Console
Per abilitare il provisioning automatico dei nodi, segui questi passaggi:
Vai alla pagina Google Kubernetes Engine nella console Google Cloud .
Fai clic sul nome del cluster.
Nella sezione Automazione, in Provisioning automatico dei nodi, fai clic su
Modifica.Seleziona la casella di controllo Abilita provisioning automatico dei nodi.
Imposta l'utilizzo minimo e massimo di CPU e memoria per il cluster.
Fai clic su Salva modifiche.
Utilizzo di un file di configurazione del provisioning automatico
Il provisioning automatico dei nodi può essere configurato utilizzando un file di configurazione YAML. Il file di configurazione può contenere una sola riga se viene utilizzato per modificare una singola impostazione. È possibile specificare più impostazioni in un unico file di configurazione. In questo caso, tutte queste impostazioni verranno modificate quando viene applicato il file di configurazione.
Alcune configurazioni avanzate possono essere specificate solo utilizzando un file di configurazione.
Esempio 1: L'applicazione del seguente file di configurazione abilita la riparazione automatica dei nodi e l'upgrade automatico per tutti i nuovi pool di nodi creati dal provisioning automatico dei nodi:
management: autoRepair: true autoUpgrade: true
Esempio 2: L'applicazione del seguente file di configurazione modificherebbe le seguenti impostazioni:
- Imposta i limiti delle risorse per CPU, memoria e GPU. Il provisioning automatico dei nodi non crea un nodo se il totale combinato di CPU, memoria o GPU di tutti i node pool nel cluster supera i limiti di risorse specificati.
- Attiva la riparazione automatica dei nodi e l'upgrade automatico per tutti i nuovi pool di nodi creati dal provisioning automatico dei nodi.
- Attiva l'avvio protetto e il monitoraggio dell'integrità per tutti i nuovi node pool creati dal provisioning automatico dei nodi.
- Imposta la dimensione del disco di avvio su 100 GB per tutti i nuovi node pool creati dal provisioning automatico dei nodi.
resourceLimits: - resourceType: 'cpu' minimum: 4 maximum: 10 - resourceType: 'memory' maximum: 64 - resourceType: 'nvidia-tesla-t4' maximum: 4 management: autoRepair: true autoUpgrade: true shieldedInstanceConfig: enableSecureBoot: true enableIntegrityMonitoring: true diskSizeGb: 100
Per utilizzare un file di configurazione del provisioning automatico:
Crea un file con la configurazione desiderata in una posizione in cui gcloud CLI può accedervi.
Applica la configurazione al cluster eseguendo il seguente comando:
gcloud container clusters update CLUSTER_NAME \ --enable-autoprovisioning \ --autoprovisioning-config-file FILE_NAME
Sostituisci quanto segue:
CLUSTER_NAME
: il nome del cluster.FILE_NAME
: il nome del file di configurazione.
Per saperne di più, consulta la documentazione
gcloud container clusters update
.
Impostazioni predefinite del provisioning automatico
Il provisioning automatico dei nodi esamina i requisiti dei pod nel cluster per determinare il tipo di nodi più adatto. Tuttavia, alcune impostazioni pool di nodi non sono specificate direttamente dai pod (ad esempio le impostazioni relative agli upgrade dei nodi). Puoi impostare valori predefiniti per queste impostazioni, che verranno applicati a tutti i node pool appena creati.
Impostazione del tipo di immagine del nodo predefinito
Puoi specificare il tipo di immagine del nodo da utilizzare per tutti i nuovi pool di nodi con provisioning automatico utilizzando gcloud CLI o un file di configurazione. Questa impostazione è disponibile solo per la versione del cluster GKE 1.20.6-gke.1800 e successive.
gcloud
Per impostare il tipo di immagine nodo predefinito, esegui questo comando:
gcloud container clusters update CLUSTER_NAME \
--enable-autoprovisioning \
--autoprovisioning-image-type IMAGE_TYPE
Sostituisci quanto segue:
CLUSTER_NAME
: il nome del cluster.IMAGE_TYPE
: il tipo di immagine del nodo, che può essere uno dei seguenti:cos_containerd
: Container-Optimized OS con containerd.ubuntu_containerd
: Ubuntu con containerd.
YAML
Per tutti i nuovi pool di nodi di cui è stato eseguito il provisioning automatico, puoi specificare il tipo di immagine del nodo
da utilizzare utilizzando un file di configurazione.
La seguente configurazione YAML specifica che per i nuovi node pool di cui è stato eseguito il provisioning automatico, il tipo di immagine è cos_containerd
e presenta limiti di risorse associati per CPU e memoria. Per attivare il provisioning automatico, devi specificare i valori massimi per CPU e memoria.
Salva la configurazione YAML:
resourceLimits: - resourceType: 'cpu' minimum: 4 maximum: 10 - resourceType: 'memory' maximum: 64 imageType: 'cos_containerd'
Applica la configurazione:
gcloud container clusters update CLUSTER_NAME \ --enable-autoprovisioning \ --autoprovisioning-config-file FILE_NAME
Sostituisci quanto segue:
CLUSTER_NAME
: il nome del cluster.FILE_NAME
: il nome del file di configurazione.
Impostazione dei valori predefiniti dell'identità per i pool di nodi di cui è stato eseguito il provisioning automatico
Le autorizzazioni per le risorse Google Cloud sono fornite dalle identità.
Puoi specificare l'identità predefinita (un account di servizio o uno o più ambiti) per i nuovi node pool di cui è stato eseguito il provisioning automatico utilizzando gcloud CLI o tramite un file di configurazione.
gcloud
Per specificare l'account di servizio IAM predefinito utilizzato dal provisioning automatico dei nodi, esegui questo comando:
gcloud container clusters update CLUSTER_NAME \ --enable-autoprovisioning --autoprovisioning-service-account=SERVICE_ACCOUNT
Sostituisci quanto segue:
CLUSTER_NAME
: il nome del cluster.SERVICE_ACCOUNT
: il nome del service account predefinito.
L'esempio seguente imposta test-service-account@google.com
come account di servizio predefinito sul cluster dev-cluster
:
gcloud container clusters update dev-cluster \ --enable-autoprovisioning --autoprovisioning-service-account=test-service-account@google.com
Per specificare gli ambiti predefiniti utilizzati dal provisioning automatico dei nodi, esegui il seguente comando:
gcloud container clusters update CLUSTER_NAME \ --enable-autoprovisioning --autoprovisioning-scopes=SCOPE
Sostituisci quanto segue:
CLUSTER_NAME
: il nome del cluster.SCOPE
: gli ambiti Google Cloud utilizzati dai pool di nodi di cui è stato eseguito il provisioning automatico. Per specificare più ambiti, separali con una virgola (ad esempio,SCOPE1, SCOPE2,...
).
L'esempio seguente imposta l'ambito predefinito sul cluster dev-cluster
su devstorage.read_only
:
gcloud container clusters update dev-cluster \ --enable-autoprovisioning \ --autoprovisioning-scopes=https://www.googleapis.com/auth/pubsub,https://www.googleapis.com/auth/devstorage.read_only
YAML
Puoi specificare l'identità predefinita utilizzata dal provisioning automatico dei nodi utilizzando un file di configurazione. La seguente configurazione YAML imposta il account di servizio IAM:
serviceAccount: SERVICE_ACCOUNT
Sostituisci SERVICE_ACCOUNT
con il nome del account di servizio predefinito.
In alternativa, puoi utilizzare la seguente configurazione YAML per specificare gli ambiti predefiniti utilizzati dal provisioning automatico dei nodi:
scopes: SCOPE
Sostituisci SCOPE
con l'ambito Google Cloud utilizzato
dai pool di nodi di cui è stato eseguito il provisioning automatico. Per specificare più ambiti, separali
con una virgola (ad esempio, SCOPE1, SCOPE2,...
).
Per utilizzare un file di configurazione del provisioning automatico:
Crea un file di configurazione che specifichi i valori predefiniti dell'identità in una posizione in cui gcloud CLI possa accedervi.
Applica la configurazione al cluster eseguendo il seguente comando:
gcloud container clusters update CLUSTER_NAME \ --enable-autoprovisioning \ --autoprovisioning-config-file FILE_NAME
Sostituisci quanto segue:
CLUSTER_NAME
: il nome del cluster.FILE_NAME
: il nome del file di configurazione.
Chiavi di crittografia gestite dal cliente (CMEK)
Puoi specificare le chiavi di crittografia gestite dal cliente (CMEK) utilizzate dai nuovi node pool di cui viene eseguito il provisioning automatico.
Puoi abilitare la crittografia gestita dal cliente per i dischi di avvio utilizzando un file di configurazione. La seguente configurazione YAML imposta la chiave CMEK:
bootDiskKmsKey: projects/KEY_PROJECT_ID/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/KEY_NAME
Sostituisci quanto segue:
KEY_PROJECT_ID
: il tuo ID progetto chiave.LOCATION
: la posizione delle chiavi automatizzate.KEY_RING
: il nome del tuo keyring.KEY_NAME
: il nome della chiave.
Per utilizzare un file di configurazione del provisioning automatico:
Crea un file di configurazione che specifichi una chiave CMEK in una posizione in cui la gcloud CLI possa accedervi.
Applica la configurazione al cluster eseguendo il seguente comando:
gcloud container clusters update CLUSTER_NAME \ --enable-autoprovisioning \ --autoprovisioning-config-file FILE_NAME
Sostituisci quanto segue:
CLUSTER_NAME
: il nome del cluster.FILE_NAME
: il nome del file di configurazione.
Integrità del nodo
Il provisioning automatico dei nodi supporta la creazione di node pool con avvio protetto e monitoraggio dell'integrità abilitati.
Puoi attivare l'avvio protetto e il monitoraggio dell'integrità utilizzando un file di configurazione. La seguente configurazione YAML attiva l'avvio protetto e disattiva il monitoraggio dell'integrità:
shieldedInstanceConfig: enableSecureBoot: true enableIntegrityMonitoring: false
Per utilizzare un file di configurazione del provisioning automatico:
Copia la configurazione precedente in un file in una posizione in cui gcloud CLI può accedervi. Modifica i valori per
enableSecureBoot
eenableIntegrityMonitoring
. Salva il file.Applica la configurazione al cluster eseguendo il seguente comando:
gcloud container clusters update CLUSTER_NAME \ --enable-autoprovisioning \ --autoprovisioning-config-file FILE_NAME
Sostituisci quanto segue:
CLUSTER_NAME
: il nome del cluster.FILE_NAME
: il nome del file di configurazione.
Riparazione automatica e upgrade automatico dei nodi
Il provisioning automatico dei nodi supporta la creazione di node pool con riparazione automatica dei nodi e upgrade automatico dei nodi abilitati.
gcloud
Per abilitare la riparazione e l'upgrade automatici per tutti i nuovi pool di nodi di cui è stato eseguito il provisioning automatico, esegui questo comando:
gcloud container clusters update CLUSTER_NAME \ --enable-autoprovisioning --enable-autoprovisioning-autorepair \ --enable-autoprovisioning-autoupgrade
Sostituisci CLUSTER_NAME
con il nome del cluster.
Per disattivare la riparazione automatica e l'upgrade automatico per tutti i nuovi pool di nodi con provisioning automatico, esegui questo comando:
gcloud container clusters update CLUSTER_NAME \ --enable-autoprovisioning --no-enable-autoprovisioning-autorepair \ --no-enable-autoprovisioning-autoupgrade
Sostituisci CLUSTER_NAME
con il nome del cluster.
YAML
Puoi attivare o disattivare la riparazione automatica e l'upgrade automatico dei nodi utilizzando un file di configurazione. La seguente configurazione YAML attiva la riparazione automatica e disattiva l'upgrade automatico:
management: autoRepair: true autoUpgrade: false
Per utilizzare un file di configurazione del provisioning automatico:
Copia la configurazione precedente in un file in una posizione in cui gcloud CLI può accedervi. Modifica i valori per
autoUpgrade
eautoRepair
. Salva il file.Applica la configurazione al cluster eseguendo il seguente comando:
gcloud container clusters update CLUSTER_NAME \ --enable-autoprovisioning \ --autoprovisioning-config-file FILE_NAME
Sostituisci quanto segue:
CLUSTER_NAME
: il nome del cluster.FILE_NAME
: il nome del file di configurazione.
Utilizza gli upgrade di sovraccarico per i nuovi node pool di cui è stato eseguito il provisioning automatico
Puoi specificare le impostazioni di upgrade controllato su tutti i nuovi pool di nodi di cui è stato eseguito il provisioning automatico utilizzando gcloud CLI o un file di configurazione. Per impostazione predefinita, GKE imposta la strategia di upgrade dei nodi sugli upgrade inattivi.
gcloud
Per specificare le impostazioni di upgrade controllato per tutti i nuovi node pool di cui è stato eseguito il provisioning automatico, esegui questo comando:
gcloud container clusters update CLUSTER_NAME \ --enable-autoprovisioning \ --autoprovisioning-max-surge-upgrade MAX_SURGE \ --autoprovisioning-max-unavailable-upgrade MAX_UNAVAILABLE
Sostituisci quanto segue:
CLUSTER_NAME
: il nome del cluster.MAX_SURGE
: il numero massimo di nodi che possono essere aggiunti al pool di nodi durante gli upgrade.MAX_UNAVAILABLE
: il numero massimo di nodi nel pool di nodi che possono non essere disponibili contemporaneamente durante gli upgrade.
YAML
Puoi specificare le impostazioni di upgrade inattivo per tutti i nuovi pool di nodi di cui è stato eseguito il provisioning automatico utilizzando un file di configurazione come il seguente:
upgradeSettings: maxSurgeUpgrade: 1 maxUnavailableUpgrade: 2
Per utilizzare un file di configurazione del provisioning automatico:
Copia la configurazione precedente in un file in una posizione a cui
gcloud
può accedere. Modifica i valori permaxSurgeUpgrade
emaxUnavailableUpgrade
. Salva il file.Applica la configurazione al cluster eseguendo il seguente comando:
gcloud container clusters update CLUSTER_NAME \ --enable-autoprovisioning \ --autoprovisioning-config-file FILE_NAME
Sostituisci quanto segue:
CLUSTER_NAME
: il nome del cluster.FILE_NAME
: il nome del file di configurazione.
Per saperne di più, consulta la
documentazione
gcloud container clusters update
.
Per tornare a utilizzare gli upgrade inattivi per i nuovi node pool di cui è stato eseguito il provisioning automatico, esegui questo comando:
gcloud container clusters update CLUSTER_NAME \ --enable-autoprovisioning \ --enable-autoprovisioning-surge-upgrade
Sostituisci CLUSTER_NAME
con il nome del cluster.
Se vuoi, puoi includere i flag per impostazioni specifiche come nei comandi precedenti. GKE riutilizza la configurazione precedente per la strategia di upgrade, se è stata impostata.
Utilizza gli upgrade blu/verde per i nuovi node pool di cui è stato eseguito il provisioning automatico
Puoi utilizzare gli upgrade blue-green per tutti i nuovi node pool di cui è stato eseguito il provisioning automatico utilizzando gcloud CLI. Con gli upgrade blu/verde, puoi utilizzare le impostazioni predefinite o ottimizzarle per il tuo ambiente. Per saperne di più sugli upgrade blu/verde, consulta Upgrade blu/verde.
Per aggiornare la strategia di upgrade dei nodi per qualsiasi pool di nodi di cui è stato eseguito il provisioning automatico, consulta Attivare o disattivare l'upgrade inattivo per un node pool esistente e Aggiornamento di una strategia di upgrade blue-green di un pool di nodi esistente.
Le seguenti variabili vengono utilizzate nei comandi elencati di seguito:
CLUSTER_NAME
: il nome del cluster per il node pool.COMPUTE_ZONE
: la zona del cluster.NODE_POOL_NAME
: il nome del pool di nodi.NUMBER_NODES
: il numero di nodi nel pool di nodi in ciascuna delle zone del cluster.BATCH_NODE_COUNT
: il numero di nodi blu da svuotare in un batch durante la fase di svuotamento del pool blu. Il valore predefinito è 1. Se il valore è impostato su zero, la fase di svuotamento del pool blu verrà ignorata.BATCH_PERCENT
: la percentuale di nodi blu da svuotare in un batch durante la fase di svuotamento del pool blu. Deve essere compreso nell'intervallo [0.0, 1.0].BATCH_SOAK_DURATION
: la durata in secondi di attesa dopo lo svuotamento di ogni batch. Il valore predefinito è zero.NODE_POOL_SOAK_DURATION
: la durata in secondi di attesa dopo aver completato lo svuotamento di tutti i batch. Il valore predefinito è 3600 secondi.
Le impostazioni predefinite per gli upgrade blu/verde sono:
BATCH_NODE_COUNT
= 1BATCH_SOAK_DURATION
= 0 secondiNODE_POOL_SOAK_DURATION
= 3600 secondi (1 ora)
Aggiorna un cluster in modo che utilizzi gli upgrade blu/verde per i nuovi node pool di cui è stato eseguito il provisioning automatico
I seguenti comandi utilizzano gcloud container clusters
update
per aggiornare la strategia di upgrade dei nodi per i nuovi node pool di cui è stato eseguito il provisioning automatico.
Puoi utilizzare questi flag anche quando:
- utilizzando il comando
gcloud container clusters create
per creare un cluster con il provisioning automatico dei nodi abilitato. - utilizzando il comando
gcoud container clusters update
per abilitare il provisioning automatico dei nodi.
Per aggiornare un cluster in modo che utilizzi gli upgrade blue-green con le impostazioni predefinite per i nuovi node pool con provisioning automatico, utilizza questo comando:
gcloud container clusters update CLUSTER_NAME \ --enable-autoprovisioning \ --enable-autoprovisioning-blue-green-upgrade
Puoi aggiornare un cluster in modo che utilizzi gli upgrade blue-green con impostazioni specifiche per i nuovi pool di nodi di cui viene eseguito il provisioning automatico. Questi comandi possono essere utilizzati anche
senza il flag --enable-autoprovisioning-blue-green-upgrade
per aggiornare le
impostazioni.
Il seguente comando utilizza BATCH_NODE_COUNT
per impostare una dimensione batch di conteggio dei nodi assoluto:
gcloud container clusters update CLUSTER_NAME \ --enable-autoprovisioning \ --enable-autoprovisioning-blue-green-upgrade \ --autoprovisioning-node-pool-soak-duration=NODE_POOL_SOAK_DURATION \ --autoprovisioning-standard-rollout-policy=batch-node-count=BATCH_NODE_COUNT,batch-soak-duration=BATCH_SOAK_DURATION
Puoi anche utilizzare BATCH_PERCENT
per impostare una dimensione batch basata sulla percentuale, sostituendo
batch-node-count
nell'ultimo comando con batch-percent
e utilizzando un decimale
compreso tra 0 e 1 (ad es. il 25% è 0.25
). Per scoprire come vengono impostate le dimensioni batch basate sulla percentuale, consulta Aggiornare un pool di nodi con l'upgrade blu/verde utilizzando dimensioni batch basate sulla percentuale.
Dischi di avvio personalizzati
Il provisioning automatico dei nodi supporta la creazione di pool di nodi con dischi di avvio personalizzati.
Puoi personalizzare l'impostazione del disco di avvio utilizzando un file di configurazione. GKE riserva una parte del disco di avvio del nodo per le funzioni di kubelet. Per saperne di più, consulta Spazio di archiviazione temporaneo supportato dal disco di avvio del nodo.
La seguente configurazione YAML fa sì che il provisioning automatico dei nodi crei pool di nodi con dischi SSD da 100 GB:
diskSizeGb: 100 diskType: pd-ssd
Specifica quanto segue:
diskSizeGb
: le dimensioni del disco, specificate in GB.diskType
: il tipo di disco, che può essere uno dei seguenti valori:pd-balanced
(valore predefinito)pd-standard
pd-ssd
. In GKE versione 1.22 e precedenti, se specifichipd-ssd
, il provisioning automatico dei nodi prende in considerazione solo i tipi di macchine N1 durante la creazione dei node pool.
Per utilizzare un file di configurazione del provisioning automatico:
Crea un file con la configurazione del disco di avvio desiderata in una posizione in cui gcloud CLI può accedervi.
Applica la configurazione al cluster eseguendo il seguente comando:
gcloud container clusters update CLUSTER_NAME \ --enable-autoprovisioning \ --autoprovisioning-config-file FILE_NAME
Sostituisci quanto segue:
CLUSTER_NAME
: il nome del cluster.FILE_NAME
: il nome del file di configurazione.
Separa i pod gestiti da GKE dai tuoi workload
In qualità di amministratore del cluster, potresti voler separare i pod gestiti da GKE dai tuoi carichi di lavoro. Questa separazione consente di evitare problemi di riduzione delle dimensioni se nel cluster sono presenti nodi sottoutilizzati che eseguono pod di sistema.
L'esempio seguente mostra come separare i pod gestiti dai tuoi workload utilizzando una combinazione di provisioning automatico dei nodi e taint e tolleranze di Kubernetes.
Crea un pool di nodi di VM
e2-standard-2
e applica un taint del nodo che consente l'esecuzione dei workload di sistema GKE solo su questi nodi:gcloud container node-pools create NODE_POOL_NAME \ --cluster=CLUSTER_NAME \ --machine-type=e2-standard-2 \ --node-taints=components.gke.io/gke-managed-components=true:NoSchedule
Sostituisci quanto segue:
NODE_POOL_NAME
: il nome che scegli per il tuo pool di nodi.CLUSTER_NAME
: il nome del cluster.
Abilita il provisioning automatico dei nodi per il cluster:
gcloud container clusters update CLUSTER_NAME \ --enable-autoprovisioning \ --min-cpu 1 \ --min-memory 1 \ --max-cpu 10 \ --max-memory 64
Il cluster può scalare tra una dimensione totale del cluster di 1 CPU e 1 gigabyte di memoria e un massimo di 10 CPU e 64 gigabyte di memoria.
Testa questa configurazione salvando il seguente manifest di esempio come
nginx.yaml
:apiVersion: v1 kind: Pod metadata: name: nginx labels: env: test spec: containers: - name: nginx image: nginx imagePullPolicy: IfNotPresent tolerations: - key: dedicated operator: Equal value: ui-team effect: NoSchedule nodeSelector: dedicated: ui-team
Questo manifest esegue il deployment di un pod di carico di lavoro di test nel cluster con un'etichetta
nodeSelector
e una taint del nododedicated: ui-team
. Senza il provisioning automatico dei nodi, questo pod del carico di lavoro non può essere pianificato perché nessunpool di nodil ha l'etichetta e le incompatibilità corrette.Applica il manifest al cluster:
kubectl apply -f nginx.yaml
L'output è simile al seguente:
pod/nginx created
Visualizza il nuovo pool di nodi che corrisponde all'etichetta
ui-team
:kubectl get node --selector=dedicated=ui-team
L'output è simile al seguente:
NAME STATUS ROLES AGE VERSION gke-test-nap-e2-medium-14b723z1-19f89fa8-jmhr Ready <none> 14s v1.21.11-gke.900
Il cluster separa i workload dai pod GKE gestiti.
Limita il tempo di esecuzione dei nodi di cui è stato eseguito il provisioning automatico
In GKE versione 1.31.2-gke.1518000 e
successive, puoi limitare il tempo di esecuzione dei nodi di cui è stato eseguito il provisioning automatico utilizzando il
selettore di nodi cloud.google.com/gke-max-run-duration-seconds
.
Aggiungi il seguente campo al manifest:
spec:
nodeSelector:
cloud.google.com/gke-max-run-duration-seconds: "MAX_RUN_DURATION"
Sostituisci MAX_RUN_DURATION
con la durata in secondi per cui vuoi che il nodo di cui è stato eseguito il provisioning automatico venga eseguito prima di essere terminato automaticamente.
Per informazioni sulle limitazioni, vedi
Limitazioni MaxRunDuration.
Utilizza gli acceleratori per i nuovi pool di nodi di cui è stato eseguito il provisioning automatico
Puoi abilitare il provisioning automatico dei nodi e configurare GKE per eseguire automaticamente il provisioning degli acceleratori GPU o Cloud TPU per garantire la capacità necessaria per pianificare i carichi di lavoro AI/ML.
Configurazione dei limiti di GPU
Quando utilizzi il provisioning automatico dei nodi con le GPU, devi impostare il limite massimo per ogni tipo di GPU nel cluster utilizzando gcloud CLI o la consoleGoogle Cloud . Il conteggio del limite di GPU è il numero massimo di GPU. Ad esempio, una VM con 16 GPU viene conteggiata come 16 e non come 1 ai fini di questo limite. Per configurare più tipi di GPU, devi utilizzare un file di configurazione.
Per elencare i tipi di risorse disponibili, esegui gcloud compute accelerator-types list
.
gcloud
gcloud container clusters update CLUSTER_NAME \ --enable-autoprovisioning \ --max-cpu MAXIMUM_CPU \ --max-memory MAXIMUM_MEMORY \ --min-accelerator type=GPU_TYPE,count=MINIMUM_ACCELERATOR \ --max-accelerator type=GPU_TYPE,count=MAXIMUM_ACCELERATOR
Sostituisci quanto segue:
CLUSTER_NAME
: il nome del cluster.MAXIMUM_CPU
: il numero massimo di core nel cluster.MAXIMUM_MEMORY
: il numero massimo di gigabyte di memoria nel cluster.GPU_TYPE
: il tipo di GPU.MINIMUM_ACCELERATOR
: il numero minimo di acceleratori GPU nel cluster.MAXIMUM_ACCELERATOR
: il numero massimo di acceleratori GPU nel cluster.
L'esempio seguente imposta i limiti della GPU per il tipo di acceleratore GPU nvidia-tesla-t4
nel cluster dev-cluster
:
gcloud container clusters update dev-cluster \ --enable-autoprovisioning \ --max-cpu 10 \ --max-memory 64 \ --min-accelerator type=nvidia-tesla-t4,count=1 \ --max-accelerator type=nvidia-tesla-t4,count=4
YAML
Puoi caricare i limiti per più tipi di GPU utilizzando un file di configurazione. La seguente configurazione YAML configura due diversi tipi di GPU:
resourceLimits: - resourceType: 'cpu' minimum: 4 maximum: 10 - resourceType: 'memory' maximum: 64 - resourceType: 'nvidia-tesla-t4' maximum: 4 - resourceType: 'nvidia-tesla-v100' maximum: 2
Per utilizzare un file di configurazione del provisioning automatico:
Copia la configurazione precedente in un file in una posizione in cui gcloud CLI può accedervi. Modifica i valori per
cpu
ememory
. Aggiungi tutti i valori perresourceType
che ti servono. Salva il file.Applica la configurazione al cluster eseguendo il seguente comando:
gcloud container clusters update CLUSTER_NAME \ --enable-autoprovisioning \ --autoprovisioning-config-file FILE_NAME
Sostituisci quanto segue:
CLUSTER_NAME
: il nome del cluster.FILE_NAME
: il nome del file di configurazione.
Per saperne di più, consulta la
documentazione
gcloud container clusters update
.
Console
Per abilitare il provisioning automatico dei nodi con risorse GPU, segui questi passaggi:
Vai alla pagina Google Kubernetes Engine nella console Google Cloud .
Fai clic sul nome del cluster.
Nella sezione Automazione, in Provisioning automatico dei nodi, fai clic su
Modifica.Seleziona la casella di controllo Abilita provisioning automatico dei nodi.
Imposta l'utilizzo minimo e massimo di CPU e memoria per il cluster.
Fai clic su
Aggiungi risorsa.Seleziona il tipo di GPU (ad esempio, NVIDIA T4) che vuoi aggiungere. Imposta il numero minimo e massimo di GPU da aggiungere al cluster.
Accetta le limitazioni delle GPU in GKE.
Fai clic su Salva modifiche.
Scegli una versione del driver da installare
In GKE versione 1.29.2-gke.1108000 e successive, puoi selezionare una versione del driver GPU da installare automaticamente da GKE nei nodi GPU di cui è stato eseguito il provisioning automatico. Aggiungi il seguente campo al manifest:
spec:
nodeSelector:
cloud.google.com/gke-gpu-driver-version: "DRIVER_VERSION"
Sostituisci DRIVER_VERSION
con uno dei seguenti valori:
default
: il driver stabile predefinito per la versione GKE del nodo. Se ometti nodeSelector nel manifest, questa è l'opzione predefinita.latest
: la versione del driver più recente disponibile per la versione GKE del nodo.
Configurazione delle Cloud TPU
Se utilizzi il provisioning automatico dei nodi per una o più risorse TPU, devi configurare i limiti TPU. Per scoprire di più su come funziona il provisioning automatico dei nodi con le TPU, consulta la pagina Acceleratori di machine learning supportati.
Configura i pod per utilizzare le risorse TPU utilizzando gcloud CLI. Per configurare più tipi di TPU, devi utilizzare un file di configurazione.
gcloud
Aggiorna il cluster e definisci i limiti della TPU:
gcloud container clusters update CLUSTER_NAME \ --enable-autoprovisioning \ [--min-cpu MINIMUM_CPU ] \ --max-cpu MAXIMUM_CPU \ [--min-memory MINIMUM_MEMORY ] \ --max-memory MAXIMUM_MEMORY \ --min-accelerator=type=TPU_TYPE,count= MINIMUM_ACCELERATOR \ --max-accelerator=type=TPU_TYPE,count= MAXIMUM_ACCELERATOR
Sostituisci quanto segue:
CLUSTER_NAME
: il nome del cluster.MINIMUM_CPU
: il numero minimo di vCPU nel cluster.MAXIMUM_CPU
: il numero massimo di vCPU nel cluster.MINIMUM_MEMORY
:il numero minimo di gigabyte di memoria nel cluster.MAXIMUM_MEMORY
: il numero massimo di gigabyte di memoria nel cluster.TPU_TYPE
: il tipo di TPU che scegli:- Per selezionare TPU v4, utilizza
tpu-v4-podslice
. - Per selezionare TPU v5e con un tipo di macchina che inizia con
ct5lp-
, utilizzatpu-v5-lite-podslice
. - Per selezionare TPU v5p con un tipo di macchina che inizia con
ct5p-
, utilizzatpu-v5p-slice
. - Per selezionare TPU Trillium, utilizza
tpu-v6e-slice
.
- Per selezionare TPU v4, utilizza
MINIMUM_ACCELERATOR
: il numero minimo di chip TPU nel cluster.- Tieni presente che l'utilizzo di
MINIMUM_ACCELERATOR
potrebbe bloccarefare lo scale downà delle sezioni TPU multi-host anche secount
è inferiore al numero di chip TPU nella sezione.
- Tieni presente che l'utilizzo di
MAXIMUM_ACCELERATOR
: il numero massimo di chip TPU nel cluster.- Se la configurazione del pod richiede una sezione TPU multi-host,
GKE crea questa sezione in modo atomico. Imposta il valore count
in modo che sia sufficiente per il provisioning di tutti i chip TPU
della topologia specificata. Il numero di chip in ogni sezione TPU
è uguale al prodotto della topologia. Ad esempio, se la topologia della sezione TPU multi-host è
2x2x2
, il numero di chip TPU è pari a8
, pertantoMAXIMUM_ACCELERATOR
deve essere superiore a 8.
- Se la configurazione del pod richiede una sezione TPU multi-host,
GKE crea questa sezione in modo atomico. Imposta il valore count
in modo che sia sufficiente per il provisioning di tutti i chip TPU
della topologia specificata. Il numero di chip in ogni sezione TPU
è uguale al prodotto della topologia. Ad esempio, se la topologia della sezione TPU multi-host è
L'esempio seguente imposta i limiti TPU per i tipi di macchine
ct5lp-hightpu-1t
,ct5lp-hightpu-4t
ect5lp-hightpu-8t
nel clusterdev-cluster
. Ad esempio, è possibile eseguire il provisioning di un massimo di dieci macchinect5lp-hightpu-4t
, ognuna con 4 chip TPU, 112 vCPU e 192 GiB di memoria.gcloud container clusters update dev-cluster-inference \ --enable-autoprovisioning \ --min-cpu 0 \ --max-cpu 1120 \ --min-memory 0 \ --max-memory 1920 \ --min-accelerator=type=tpu-v5-lite-podslice,count=0 \ --max-accelerator=type=tpu-v5-lite-podslice,count=40
Crea una specifica di deployment che generi un pod che richiede risorse TPU. Ad esempio, il seguente manifest farà in modo che GKE provisioni quattro nodi
ct5lp-hightpu-4t
:apiVersion: apps/v1 kind: Deployment metadata: name: tpu-workload labels: app: tpu-workload spec: replicas: 4 selector: matchLabels: app: nginx-tpu template: metadata: labels: app: nginx-tpu spec: nodeSelector: cloud.google.com/gke-tpu-accelerator: tpu-v5-lite-podslice cloud.google.com/gke-tpu-topology: 2x2 cloud.google.com/reservation-name: my-reservation containers: - name: nginx image: nginx:1.14.2 resources: requests: google.com/tpu: 4 limits: google.com/tpu: 4 ports: - containerPort: 80
Nel campo
nodeSelector
, definisci il tipo di TPU, la topologia TPU e il conteggio degli acceleratori, dove:cloud.google.com/gke-tpu-accelerator
: definisce il tipo di TPU, ad esempiotpu-v4-podslice
.cloud.google.com/gke-tpu-topology
: definisce la topologia TPU, ad esempio2x2x1
o4x4x8
.limits: google.com/tpu
: definisce il numero di chip TPU per nodo.
(Facoltativo) Puoi configurare i seguenti campi in
nodeSelector
:- Prenotazione TPU:
per utilizzare una prenotazione esistente con il tuo carico di lavoro, specifica il nome
della prenotazione in
cloud.google.com/reservation-name
. - Pianificazione della raccolta: per creare una raccolta con il provisioning automatico dei nodi, includi i seguenti valori in base al tipo di pool di nodi che richiedi:
- Pool di nodi della sezione TPU single-host:
cloud.google.com/gke-workload-type: HIGH_AVAILABILITY
. - Node pool TPU multi-host:
cloud.google.com/gke-nodepool-group-name: COLLECTION_NAME, cloud.google.com/gke-workload-type: HIGH_AVAILABILITY
. Sostituisci il valoreCOLLECTION_NAME
con il nome della raccolta. Questo valore deve rispettare i requisiti per le etichette del cluster.
- Pool di nodi della sezione TPU single-host:
YAML
Puoi assegnare limiti per più tipi di TPU utilizzando un file di configurazione. La seguente configurazione YAML configura due diversi tipi di TPU:
resourceLimits: - resourceType: 'cpu' maximum: 10000 - resourceType: 'memory' maximum: 10000 - resourceType: 'tpu-v4-podslice' maximum: 32 - resourceType: 'tpu-v5-lite' maximum: 64
Per utilizzare un file di configurazione del provisioning automatico:
Copia la configurazione precedente in un file in una posizione in cui gcloud CLI può accedervi. Modifica i valori per
resourceType
emaximum
. Aggiungi tutti i valori perresourceType
che ti servono. Salva il file.Applica la configurazione al cluster eseguendo il seguente comando:
gcloud container clusters update CLUSTER_NAME \ --enable-autoprovisioning \ --autoprovisioning-config-file FILE_NAME
Sostituisci quanto segue:
CLUSTER_NAME
: il nome del cluster.FILE_NAME
: il nome del file di configurazione.
Per saperne di più, consulta la
documentazione
gcloud container clusters update
.
Località del provisioning automatico dei nodi
Imposti le zone in cui il provisioning automatico dei nodi può creare nuovi node pool. Le località regionali non sono supportate. Le zone devono appartenere alla stessa regione del cluster, ma non sono limitate alle località dei nodi definite a livello di cluster. La modifica delle località per il provisioning automatico dei nodi non influisce sui pool di nodi esistenti.
Per impostare le località in cui il provisioning automatico dei nodi può creare nuovi node pool, utilizza gcloud CLI o un file di configurazione.
gcloud
Esegui questo comando:
gcloud container clusters update CLUSTER_NAME \ --enable-autoprovisioning --autoprovisioning-locations=ZONE
Sostituisci quanto segue:
CLUSTER_NAME
: il nome del cluster.ZONE
: la zona in cui il provisioning automatico dei nodi può creare nuovi pool di nodi. Per specificare più zone, separale con una virgola (ad esempio,ZONE1, ZONE2,...
).
YAML
Per impostare le località in cui il provisioning automatico dei nodi può creare nuovi node pool, puoi utilizzare un file di configurazione.
Aggiungi la seguente configurazione YAML che imposta la nuova posizione dei pool di nodi:
autoprovisioningLocations:
- ZONE
Sostituisci ZONE
con la zona
in cui il provisioning automatico dei nodi può creare nuovi node pool. Per specificare più zone, aggiungi altre zone all'elenco. Salva il file.
Per utilizzare un file di configurazione del provisioning automatico:
Crea un file di configurazione in una posizione in cui
gcloud CLI
possa accedervi.Applica la configurazione al cluster:
gcloud container clusters update CLUSTER_NAME \ --enable-autoprovisioning \ --autoprovisioning-config-file FILE_NAME
Sostituisci quanto segue:
CLUSTER_NAME
: il nome del cluster.FILE_NAME
: il percorso del file di configurazione.
Nodi fisicamente più vicini con posizionamento compatto
A partire dalla versione 1.25 di GKE, il provisioning automatico dei nodi supporta la policy di posizionamento compatto. Con la policy di posizionamento compatto, puoi indicare a GKE di creare pool di nodi più vicini tra loro all'interno di una zona.
Per definire una policy di posizionamento compatto, aggiungi un nodeSelector
alla specifica del pod con le seguenti chiavi:
cloud.google.com/gke-placement-group
è l'identificatore che assegni al gruppo di pod che devono essere eseguiti insieme, nello stesso gruppo di posizionamento compatto.cloud.google.com/machine-family
è il nome della famiglia di macchine. Per saperne di più, consulta le famiglie di macchine che supportano il posizionamento compatto.
L'esempio seguente imposta una policy di posizionamento compatto con un identificatore del gruppo di posizionamento placement-group-1
e una famiglia di macchine c2
:
apiVersion: v1
kind: Pod
metadata:
...
spec:
...
nodeSelector:
cloud.google.com/gke-placement-group: placement-group-1
cloud.google.com/machine-family: c2
Per saperne di più, scopri come definire il posizionamento compatto per i nodi GKE.
La disabilitazione del provisioning automatico dei nodi
Quando disabiliti il provisioning automatico dei nodi per un cluster, il provisioning automatico dei node pool non viene più eseguito.
gcloud
Per disattivare il provisioning automatico dei nodi per un cluster, esegui questo comando:
gcloud container clusters update CLUSTER_NAME \ --no-enable-autoprovisioning
Sostituisci CLUSTER_NAME
con il nome del cluster.
YAML
Per disattivare il provisioning automatico dei nodi utilizzando la console Google Cloud :
Vai alla pagina Google Kubernetes Engine nella console Google Cloud .
Fai clic sul nome del cluster.
Nella sezione Automazione, in Provisioning automatico dei nodi, fai clic su
Modifica.Deseleziona la casella di controllo Abilita provisioning automatico dei nodi.
Fai clic su Salva modifiche.
Contrassegno del pool di nodi come di cui è stato eseguito il provisioning automatico
Dopo aver abilitato il provisioning automatico dei nodi sul cluster, puoi specificare i node pool di cui viene eseguito il provisioning automatico. Un pool di nodi di cui è stato eseguito il provisioning automatico viene eliminato automaticamente quando non viene utilizzato da alcun workload.
Per contrassegnare un pool di nodi come sottoposto a provisioning automatico, esegui questo comando:
gcloud container node-pools update NODE_POOL_NAME \ --enable-autoprovisioning
Sostituisci NODE_POOL_NAME
con il nome del pool di nodi.
Contrassegno del pool di nodi come non sottoposto a provisioning automatico
Per contrassegnare un pool di nodi come non sottoposto al provisioning automatico, esegui questo comando:
gcloud container node-pools update NODE_POOL_NAME \ --no-enable-autoprovisioning
Sostituisci NODE_POOL_NAME
con il nome del pool di nodi.
Utilizzo di una famiglia di macchine personalizzata
Puoi scegliere una serie di macchine Compute Engine specifica, ad esempio n2
o
t2d
, per i tuoi carichi di lavoro impostando uno dei seguenti campi nel
manifest:
- Imposta l'affinità del nodo con la chiave
cloud.google.com/machine-family
, l'operatoreIn
e il valore che corrisponde alla famiglia di macchine desiderata (ad esempio,n2
). - Aggiungi un
nodeSelector
con la chiavecloud.google.com/machine-family
e il valore della famiglia di macchine desiderata.
Ecco un esempio che imposta nodeAffinity
su una famiglia di macchine di n2
:
spec:
affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: cloud.google.com/machine-family
operator: In
values:
- n2
Dopo aver applicato le modifiche, il provisioning automatico dei nodi sceglie il pool di nodi migliore
con un tipo di macchina all'interno della serie di macchine specificata. Se specifichi più voci per matchExpressions
, GKE sceglie arbitrariamente una serie di macchine tra le voci specificate.
Controllare gli attributi dei nodi utilizzando una classe di calcolo personalizzata
Per un maggiore controllo sugli attributi dei node pool di cui è stato eseguito il provisioning automatico, crea e utilizza classi di calcolo personalizzate. Le classi di calcolo personalizzate ti consentono di configurare comportamenti di scalabilità come le priorità di fallback quando scegli i tipi di macchine per i nodi o soglie di utilizzo delle risorse specifiche che attivano il consolidamento dei carichi di lavoro sui nodi per liberare le risorse inutilizzate. Le classi di calcolo personalizzate sono disponibili per l'utilizzo in GKE versione 1.30.3-gke.1451000 e successive.
Per scoprire di più sulle funzionalità delle classi di computing personalizzate e su come utilizzarle con il provisioning automatico dei nodi, consulta Informazioni sulle classi di computing personalizzate.
Piattaforma CPU minima
Il provisioning automatico dei nodi supporta la creazione di node pool con una piattaforma CPU minima specificata. Puoi specificare la piattaforma CPU minima a livello di workload (opzione consigliata) o a livello di cluster.
Passaggi successivi
- Scopri di più sul gestore della scalabilità automatica dei cluster.
- Scopri di più sui node pool.
- Scopri di più sulle strategie di upgrade dei nodi.
- Scopri come visualizzare gli eventi di scalabilità automatica del cluster.
- Scopri di più sulla risoluzione dei problemi.