Questa pagina spiega come utilizzare il provisioning automatico dei nodi nei cluster Google Kubernetes Engine (GKE) standard. Prima di leggere questa pagina, assicurati di conoscere il provisioning automatico dei nodi.
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
.
Requisiti
Il provisioning automatico dei nodi è disponibile nelle seguenti release di GKE:
- Versione 1.27.6 e successive o 1.28 e successive per Cloud TPU v4 e v5e.
- Versione 1.28.7-gke.1020000 o successiva e 1.29.2-gke.1035000 o successiva per Cloud TPU v5p.
- Versione 1.31.1-gke.1146000 o successive per Cloud TPU v6e in anteprima.
Abilita provisioning automatico dei nodi
Puoi abilitare il provisioning automatico dei nodi su un cluster con la gcloud CLI o con la console Google Cloud.
Il provisioning automatico dei nodi presenta le seguenti limitazioni delle risorse:
Devi pianificare attentamente l'intervallo di indirizzi IP del nodo. 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 del nodo dopo aver creato il cluster, in quanto dovrai aggiornare le regole del firewall per includere il nuovo intervallo come origine. Puoi espandere l'intervallo di indirizzi IP del pod utilizzando il CIDR multi-pod disgiunto con il provisioning automatico dei nodi.
gcloud
Per abilitare il provisioning automatico dei nodi, esegui il seguente 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 abilitare 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.MAXIMUM_MEMORY
: il numero massimo di gigabyte di memoria nel cluster.
Il seguente esempio abilita 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 a 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, svolgi i passaggi che seguono:
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 per il provisioning automatico
L'autoprovisioning 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. In un singolo file di configurazione è possibile specificare più impostazioni. 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 e l'upgrade automatici dei nodi per tutti i nuovi pool di nodi creati tramite il 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 di risorse per CPU, memoria e GPU. Il provisioning automatico dei nodi non creerà un nodo se le dimensioni totali del cluster superano i limiti di risorse specificati.
- Attiva la riparazione e l'upgrade automatici dei nodi per tutti i nuovi pool di nodi creati tramite il provisioning automatico dei nodi.
- Abilita Avvio protetto e monitoraggio dell'integrità per tutti i nuovi pool di nodi creati dal provisioning automatico dei nodi.
- Imposta la dimensione del disco di avvio su 100 GB per tutti i nuovi pool di nodi creati tramite il 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 di provisioning automatico:
Crea un file con la configurazione desiderata in una posizione a cui gcloud CLI può accedere.
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 ulteriori informazioni, consulta la documentazione di
gcloud container clusters update
.
Impostazioni predefinite del provisioning automatico
Il provisioning automatico dei nodi esamina i requisiti dei pod nel cluster per determinare quale tipo di nodi è più adatto a questi pod. Tuttavia, alcune impostazioni del pool di nodi non sono specificate direttamente dai pod (ad esempio le impostazioni relative agli upgrade dei nodi). Puoi definire valori predefiniti per queste impostazioni, che verranno applicati a tutti i pool di nodi 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 di cui è stato eseguito il provisioning automatico utilizzando la gcloud CLI o un file di configurazione. Questa impostazione è disponibile solo per i cluster GKE versione 1.20.6-gke.1800 e successive.
gcloud
Per impostare il tipo di immagine del nodo predefinito, esegui il seguente 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.
File
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 pool di nodi con provisioning automatico, il tipo di immagine è cos_containerd
e sono associati limiti di risorse 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 delle impostazioni predefinite 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 pool di nodi 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 il seguente 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 dell'account servizio predefinito.
L'esempio seguente imposta test-service-account@google.com
come account di servizio predefinito nel 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 con 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
File
Puoi specificare l'identità predefinita utilizzata dal provisioning automatico dei nodi utilizzando un file di configurazione. La seguente configurazione YAML imposta l'account di servizio IAM:
serviceAccount: SERVICE_ACCOUNT
Sostituisci SERVICE_ACCOUNT
con il nome dell'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 di provisioning automatico:
Crea un file di configurazione che specifichi i valori predefiniti per le identità in una posizione dove l'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 con provisioning automatico.
Puoi attivare la crittografia gestita dal cliente per le unità 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
: l'ID del tuo progetto principale.LOCATION
: la posizione del mazzo di chiavi.KEY_RING
: il nome del tuo mazzo di chiavi.KEY_NAME
: il nome della chiave.
Per utilizzare un file di configurazione di provisioning automatico:
Crea un file di configurazione che specifichi una chiave CMEK in una posizione a cui può accedere la gcloud CLI.
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à dei nodi
Il provisioning automatico dei nodi supporta la creazione di node pool conavvio 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 il Boot sicuro e disattiva il monitoraggio dell'integrità:
shieldedInstanceConfig: enableSecureBoot: true enableIntegrityMonitoring: false
Per utilizzare un file di configurazione di provisioning automatico:
Copia la configurazione riportata sopra in un file in una posizione a cui gcloud CLI può accedere. Modifica i valori di
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 e upgrade automatici dei nodi
Il provisioning automatico dei nodi supporta la creazione di pool di nodi 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 con provisioning automatico, esegui il seguente 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 e l'upgrade automatici per tutti i nuovi pool di nodi con provisioning automatico, esegui il seguente 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.
File
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 di provisioning automatico:
Copia la configurazione riportata sopra in un file in una posizione a cui gcloud CLI può accedere. Modifica i valori di
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.
Utilizzare gli upgrade di sovraccarico per i nuovi pool di nodi di cui è stato eseguito il provisioning automatico
Puoi specificare le impostazioni di upgrade per l'aumento improvviso su tutti i nuovi pool di nodi di cui è stato eseguito il provisioning automatico utilizzando la gcloud CLI o un file di configurazione. Per impostazione predefinita, GKE imposta la strategia di upgrade dei nodi su upgrade di picco.
gcloud
Per specificare le impostazioni di upgrade per l'aumento improvviso della domanda per tutti i nuovi node pool di cui è stato eseguito il provisioning automatico, esegui il seguente 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.
File
Puoi specificare le impostazioni di upgrade per l'aumento improvviso della domanda 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 di provisioning automatico:
Copia la configurazione precedente in un file in una posizione a cui
gcloud
può accedere. Modifica i valori dimaxSurgeUpgrade
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 ulteriori informazioni, consulta la documentazione di gcloud container clusters update
.
Per tornare a utilizzare gli upgrade di picco per i nuovi pool di nodi con provisioning automatico, esegui il seguente 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.
Utilizzare gli upgrade blue-green per i nuovi pool di nodi di cui è stato eseguito il provisioning automatico
Puoi utilizzare gli upgrade blue-green per tutti i nuovi pool di nodi di cui è stato eseguito il provisioning automatico utilizzando gcloud CLI. Con gli upgrade blue-green, puoi utilizzare le impostazioni predefinite o ottimizzarle per il tuo ambiente. Per scoprire di più sugli upgrade blu/verde, consulta Upgrade blu/verde.
Per aggiornare la strategia di upgrade dei nodi per qualsiasi pool di nodi con provisioning automatico esistente, consulta Attivare o disattivare l'upgrade per picco per un pool di nodi esistente e Aggiornare una strategia di upgrade blue-green per un pool di nodi esistente.
Nei comandi elencati di seguito vengono utilizzate le seguenti variabili:
CLUSTER_NAME
: il nome del cluster per il pool di nodi.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 da attendere dopo lo svuotamento di ogni batch. Il valore predefinito è zero.NODE_POOL_SOAK_DURATION
: la durata in secondi da attendere dopo aver completato lo svuotamento di tutti i batch. Il valore predefinito è 3600 secondi.
Le impostazioni predefinite per gli upgrade blu/verdi sono:
BATCH_NODE_COUNT
= 1BATCH_SOAK_DURATION
= 0 secondiNODE_POOL_SOAK_DURATION
= 3600 secondi (1 ora)
Aggiornare un cluster in modo da utilizzare gli upgrade blue-green per i nuovi pool di nodi con provisioning automatico
I seguenti comandi utilizzano gcloud container clusters
update
per aggiornare la strategia di upgrade dei nodi per i nuovi pool di nodi con provisioning automatico.
Puoi utilizzare questi flag anche quando:
- Utilizza 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 pool di nodi 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 da utilizzare gli upgrade blue-green con impostazioni specifiche per i nuovi pool di nodi di cui è stato 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 un numero assoluto di nodi
come dimensione del batch:
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 su percentuale, sostituendo batch-node-count
nell'ultimo comando con batch-percent
e utilizzando un numero decimale compreso tra 0 e 1 (ad es. 25% è 0.25
). Per scoprire come vengono impostate le dimensioni batch basate su percentuale, consulta Aggiornare un pool di nodi con l'upgrade blue/green utilizzando dimensioni batch basate su 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 kubelet. Per saperne di più, consulta Spazio di archiviazione temporaneo basato sul disco di avvio del nodo.
La seguente configurazione YAML consente al provisioning automatico dei nodi di creare 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
. Nella versione 1.22 e precedenti di GKE, se specifichipd-ssd
, il provisioning automatico dei nodi prende in considerazione solo tipi di macchine N1 durante la creazione dei pool di nodi.
Per utilizzare un file di configurazione di provisioning automatico:
Crea un file con la configurazione del disco di avvio desiderata in una posizione a cui può accedere la gcloud CLI.
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 se nel cluster sono presenti nodi sottoutilizzati su cui sono in esecuzione pod di sistema.
Il seguente esempio mostra come separare i pod gestiti dai carichi di lavoro utilizzando una combinazione di provisioning automatico dei nodi e incompatibilità e tolleranze Kubernetes.
Crea un cluster con un pool di nodi predefinito di
e2-standard-2
VM e applica un inquinamento dei nodi che consente di eseguire solo i carichi di lavoro di sistema GKE su questi nodi:gcloud container clusters create test-cluster \ --machine-type=e2-standard-2 \ --node-taints=components.gke.io/gke-managed-components=true:NoSchedule
Abilita il provisioning automatico dei nodi per il cluster:
gcloud container clusters update test-cluster \ --enable-autoprovisioning \ --min-cpu 1 \ --min-memory 1 \ --max-cpu 10 \ --max-memory 64
Il cluster può scalare da una dimensione totale di 1 CPU e 1 gigabyte di memoria a 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 un'alterazione del nodo didedicated: ui-team
. Senza il provisioning automatico dei nodi, questo pod del carico di lavoro non può essere pianificato poiché nessun pool di nodi ha l'etichetta corretta e le mancate corrispondenze.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 tuoi workload dai pod GKE gestiti.
Limita il tempo di esecuzione dei nodi di cui è stato eseguito il provisioning automatico
In GKE versione 1.31.1-gke.1146000 e versioni 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, consulta
Limitazioni di MaxRunDuration.
Utilizzare gli acceleratori per i nuovi pool di nodi di cui è stato eseguito il provisioning automatico
Puoi attivare il provisioning automatico dei nodi e configurare GKE in modo da eseguire automaticamente il provisioning di acceleratori GPU o Cloud TPU per garantire la capacità necessaria per pianificare i carichi di lavoro di AI/ML.
Configurazione dei limiti della GPU
Quando utilizzi il provisioning automatico dei nodi con le GPU, puoi impostare il limite massimo per ogni tipo di GPU nel cluster utilizzando l'interfaccia a riga di comando gcloud o la console Google Cloud. Il conteggio del limite di GPU è il numero massimo di GPU. Ad esempio, ai fini di questo limite, una VM con 16 GPU viene conteggiata come 16 e non come 1. 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 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
File
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 di provisioning automatico:
Copia la configurazione riportata sopra in un file in una posizione a cui gcloud CLI può accedere. Modifica i valori di
cpu
ememory
. Aggiungi tutti i valori perresourceType
di cui hai bisogno. 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 ulteriori informazioni, consulta la documentazione di gcloud container clusters update
.
Console
Per attivare il provisioning automatico dei nodi con risorse GPU, svolgi i seguenti 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 con 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 tuo nodo. Se ometti il nodeSelector nel manifest, questa è l'opzione predefinita.latest
: la versione del driver più recente disponibile per la versione GKE del tuo nodo.
Configurazione delle Cloud TPU
Per scoprire di più su come funziona il provisioning automatico dei nodi con le TPU, consulta Acceleratori di machine learning supportati.
Crea un cluster e configura i pod in modo che utilizzino le risorse TPU utilizzando gcloud CLI. Per configurare più tipi di TPU, devi utilizzare un file di configurazione.
gcloud
Crea un cluster e definisci i limiti di TPU:
gcloud container clusters create 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 scelto:- Per selezionare la 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 v5e con un tipo di macchina che inizia con
ct5l-
, utilizza - Per selezionare TPU v5p con un tipo di macchina che inizia con
ct5p-
, utilizzatpu-v5p-slice
. - Per selezionare la TPU v6e, utilizza
tpu-v6e-slice
. TPU v6e è in anteprima.
- Per selezionare la TPU v4, utilizza
MINIMUM_ACCELERATOR
: il numero minimo di chip TPU nel cluster.- Tieni presente che l'utilizzo di
MINIMUM_ACCELERATOR
potrebbe bloccare fare lo scale down delle sezioni TPU multi-host anche seMINIMUM_ACCELERATOR
è inferiore al numero di chip TPU nella sezione.count
- 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 la crea in modo atomico. Imposta il valore count sufficientemente alto da consentire il provisioning di tutti i chip TPU della topologia specificata. Il numero di chip in ogni sezione TPU equivale 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 la crea in modo atomico. Imposta il valore count sufficientemente alto da consentire il provisioning di tutti i chip TPU della topologia specificata. Il numero di chip in ogni sezione TPU equivale 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
neldev-cluster
cluster. Ad esempio, è possibile eseguire il provisioning di un massimo di dieci macchinect5lp-hightpu-4t
, ciascuna con 4 chip TPU, 112 vCPU e 192 GiB di memoria.gcloud container clusters create 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 richieda risorse TPU. Ad esempio, il seguente manifest causerà il provisioning di quattro nodi
ct5lp-hightpu-4t
da parte di GKE: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 numero di acceleratori, dove:cloud.google.com/gke-tpu-accelerator
: definisce il tipo di TPU. Ad esempio,tpu-v4-podslice
.cloud.google.com/gke-tpu-topology
: definisce la topologia TPU, ad esempio2x2x1
o4x4x8
.
Per utilizzare una prenotazione esistente con il tuo carico di lavoro, specifica un'etichetta aggiuntiva nel campo
nodeSelector
: *cloud.google.com/reservation-name
: definisce il nome della prenotazione utilizzata da GKE per il provisioning automatico dei nodi.In
limits: google.com/tpu
definisci il numero di chip TPU per nodo.
File
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 di provisioning automatico:
Copia la configurazione riportata sopra in un file in una posizione a cui gcloud CLI può accedere. Modifica i valori di
resourceType
emaximum
. Aggiungi tutti i valori perresourceType
di cui hai bisogno. 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 ulteriori informazioni, consulta la documentazione di 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,...
).
File
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 posizione dei nuovi pool di nodi:
autoprovisioningLocations:
- ZONE
Sostituisci ZONE
con la zona
dove il provisioning automatico dei nodi può creare nuovi pool di nodi. Per specificare più zone, aggiungi altre zone all'elenco. Salva il file.
Per utilizzare un file di configurazione di provisioning automatico:
Crea un file di configurazione in una posizione dove
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 più vicini fisicamente con posizionamento compatto
A partire dalla versione 1.25 di GKE, il provisioning automatico dei nodi supporta il criterio di posizionamento compatto. Con il criterio di posizionamento compatto, puoi indicare a GKE di creare pool di nodi più vicini tra di loro all'interno di una zona.
Per definire un criterio 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 deve essere eseguito insieme nello stesso gruppo di posizionamenti compatti.cloud.google.com/machine-family
è il nome della famiglia di macchine. Per ulteriori informazioni, consulta le famiglie di macchine che supportano il posizionamento compatto.
L'esempio seguente imposta un criterio 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 ulteriori informazioni, scopri come definire il posizionamento compatto per i nodi GKE.
Disattivazione del provisioning automatico dei nodi
Quando disattivi il provisioning automatico dei nodi per un cluster, i node pool non vengono più provisioning automatico.
gcloud
Per disattivare il provisioning automatico dei nodi per un cluster, esegui il seguente comando:
gcloud container clusters update CLUSTER_NAME \ --no-enable-autoprovisioning
Sostituisci CLUSTER_NAME
con il nome del cluster.
File
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.
Marcatura del pool di nodi come sottoposto a provisioning automatico
Dopo aver abilitato il provisioning automatico dei nodi nel cluster, puoi specificare i pool di nodi di cui viene eseguito il provisioning automatico. Un pool di nodi con provisioning automatico viene eliminato automaticamente quando non viene utilizzato da nessun workload.
Per contrassegnare un pool di nodi come sottoposto a provisioning automatico, esegui il seguente comando:
gcloud container node-pools update NODE_POOL_NAME \ --enable-autoprovisioning
Sostituisci NODE_POOL_NAME
con il nome del pool di nodi.
Contrassegnare il pool di nodi come non sottoposto a provisioning automatico
Per contrassegnare un pool di nodi come non sottoposto a provisioning automatico, esegui il seguente 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à dei nodi con la chiave
cloud.google.com/machine-family
, l'operatoreIn
e il valore della 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 dalle 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 le classi di calcolo personalizzate. Le classi di calcolo personalizzate ti consentono di configurare i comportamenti di scalabilità, ad esempio le priorità di riserva 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 1.30.3-gke.1451000 e versioni successive.
Per scoprire le funzionalità delle classi di calcolo personalizzate e come utilizzarle con il provisioning automatico dei nodi, consulta Informazioni sulle classi di calcolo personalizzate.
Piattaforma CPU minima
Il provisioning automatico dei nodi supporta la creazione di pool di nodi con una piattaforma CPU minima specificata. Puoi specificare la piattaforma CPU minima a livello di carico di lavoro (opzione consigliata) o a livello di cluster.
Passaggi successivi
- Scopri di più sul gestore della scalabilità automatica dei cluster.
- Scopri di più sui pool di nodi.
- Scopri di più sulle strategie di upgrade dei nodi.