Questa pagina spiega come utilizzare il provisioning automatico dei nodi in Standard di Google Kubernetes Engine (GKE). Prima di leggere questa pagina, assicurati di avere familiarità con il provisioning automatico dei nodi.
Prima di iniziare
Prima di iniziare, assicurati di aver eseguito le seguenti attività:
- Attiva l'API Google Kubernetes Engine. Abilita l'API Google Kubernetes Engine
- Se vuoi utilizzare Google Cloud CLI per questa attività,
install e poi
inizializzare
con gcloud CLI. Se hai già installato gcloud CLI, scarica 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 successive e 1.29.2-gke.1035000 o successive per Cloud TPU v5p.
Abilita provisioning automatico dei nodi
Puoi abilitare il provisioning automatico dei nodi su un cluster con la riga di comando gcloud o con la console Google Cloud.
Il provisioning automatico dei nodi presenta le seguenti limitazioni delle risorse:
Devi pianificare con attenzione l'intervallo di indirizzi IP del nodo. Puoi espandere l'intervallo di indirizzi IP dei nodi dopo aver creato un cluster. Tuttavia, consigliamo di non espandere di indirizzi IP del nodo dopo la creazione del cluster, poiché devi aggiornare regole 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 da abilitare il provisioning automatico dei nodi.MINIMUM_CPU
: il numero minimo di core nel cluster.MINIMUM_MEMORY
: il numero minimo di gigabyte di nel cluster.MAXIMUM_CPU
: il numero massimo di core nel cluster.MAXIMUM_MEMORY
: il numero massimo di gigabyte di 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
Il provisioning automatico dei nodi può essere configurato utilizzando un file di configurazione YAML. La di configurazione può contenere una sola riga se viene utilizzato per modificare un'unica 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 una configurazione .
Esempio 1: L'applicazione del seguente file di configurazione abilita riparazione e upgrade automatici dei nodi per tutti i nuovi pool di nodi create 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 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 del provisioning automatico:
Crea un file con la configurazione desiderata in una posizione a cui l'interfaccia a riga di comando gcloud può accedere.
Applica la configurazione al cluster eseguendo questo 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
gcloud container clusters update
documentazione.
Impostazioni predefinite del provisioning automatico
Il provisioning automatico dei nodi esamina i requisiti dei pod nel tuo cluster per determinare di nodi sono più adatti a questi pod. Tuttavia, alcune impostazioni del pool di nodi non specificati 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 pool di nodi appena creati.
Impostazione del tipo di immagine predefinito del nodo
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 CLI di gcloud o un file di configurazione. Questa impostazione è disponibile solo per la versione del cluster GKE 1.20.6-gke.1800 e versioni successive.
gcloud
Per impostare il tipo di immagine predefinito del nodo, 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 di le 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 con 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 mediante gcloud CLI 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 del 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. I seguenti set di configurazioni YAML 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 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'interfaccia a riga di comando gcloud possa accedervi.
Applica la configurazione al cluster eseguendo questo 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 pool di nodi con provisioning automatico.
Puoi abilitare la crittografia gestita dal cliente per le unità di avvio utilizzando un'istanza file di configurazione. La seguente configurazione YAML Chiave CMEK:
bootDiskKmsKey: projects/KEY_PROJECT_ID/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/KEY_NAME
Sostituisci quanto segue:
KEY_PROJECT_ID
: l'ID progetto chiave.LOCATION
: la posizione del portachiavi.KEY_RING
: il nome del tuo keyring.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 CLI gcloud.
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 pool di nodi conavvio protetto e monitoraggio dell'integrità abilitati.
Puoi abilitare 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 del provisioning automatico:
Copia la configurazione precedente in un file in una posizione in cui gcloud CLI può per accedervi. 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 upgrade automatico dei nodi abilitato.
gcloud
Per abilitare la riparazione e l'upgrade automatici di tutti i nuovi nodi di cui è stato eseguito il provisioning automatico pool, 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 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 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ò per accedervi. Modifica i valori di
autoUpgrade
eautoRepair
. Salva .Applica la configurazione al cluster eseguendo questo 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.
Usa 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 CLI gcloud 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 di richieste per tutti i nuovi pool di nodi 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 in cui
gcloud
può per accedervi. 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 sovraccarico per i nuovi pool di nodi di cui è stato eseguito il 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.
Facoltativamente, puoi includere i flag per impostazioni specifiche come nell'articolo precedente tramite comandi SQL. GKE riutilizza la configurazione precedente per l'upgrade personalizzata, se impostata.
Utilizzare gli upgrade blue-green per i nuovi pool di nodi di cui è stato eseguito il provisioning automatico
Puoi utilizzare gli upgrade blu/verde per tutti i nuovi pool di nodi di cui è stato eseguito il provisioning automatico mediante gcloud CLI. Con gli upgrade blu/verde, puoi utilizzare le impostazioni predefinite, oppure e ottimizzarlo per il tuo ambiente. Per scoprire di più su blu/verde gli upgrade, consulta Upgrade blu/verde.
Per aggiornare la strategia di upgrade dei nodi per qualsiasi pool di nodi esistente di cui è stato eseguito il provisioning automatico: consulta Attivare o disattivare l'upgrade di sovraccarico per un nodo esistente piscina e Aggiornare l'upgrade blu/verde di un pool di nodi esistente la tua strategia.
Nei comandi elencati di seguito vengono utilizzate le seguenti variabili:
CLUSTER_NAME
: il nome del cluster per il nodo piscina.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 a 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
: durata di attesa in secondi dopo ogni svuotamento batch. Il valore predefinito è zero.NODE_POOL_SOAK_DURATION
: la durata in secondi per attendere 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 per utilizzare gli upgrade blu/verde per i nuovi pool di nodi 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 pool di nodi con provisioning automatico.
Puoi utilizzare questi flag anche quando:
- utilizzando
gcloud container clusters create
per creare un cluster con il provisioning automatico dei nodi abilitato. - utilizzando
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 di nodi assoluto
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 del batch su base percentuale, sostituendo
batch-node-count
nell'ultimo comando con batch-percent
e utilizzando un decimale
tra 0 e 1 (ad es. il 25% è 0.25
). Per vedere come le dimensioni dei batch
basate sulla percentuale
sono impostati, consulta Aggiornare un pool di nodi con l'upgrade blu/verde utilizzando le dimensioni del 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 ulteriori informazioni, consulta Archiviazione temporanea supportata dal disco di avvio del nodo.
La seguente configurazione YAML causa la creazione del provisioning automatico dei nodi 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 1.22 e versioni precedenti, se specifichipd-ssd
, il provisioning automatico dei nodi considera solo Tipi di macchine N1 durante la creazione di 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 in cui con gcloud CLI.
Applica la configurazione al cluster eseguendo questo 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 carichi di lavoro
In qualità di amministratore del cluster, potresti voler separare i pod che GKE gestisce 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.
L'esempio seguente mostra come separare i pod gestiti carichi di lavoro utilizzando una combinazione di provisioning automatico dei nodi e incompatibilità di Kubernetes e tolleranze.
Crea un cluster con un pool di nodi predefinito di
e2-standard-2
VM e applica un'incompatibilità dei nodi che consente l'esecuzione dei carichi di lavoro di sistema GKE quei 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 del carico di lavoro di test nel cluster con un
nodeSelector
etichetta e incompatibilità 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 e le mancate corrispondenze appropriate.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 carichi di lavoro dai pod GKE gestiti.
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 IA/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 numero 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 nella in un cluster Kubernetes.MAXIMUM_MEMORY
: il numero massimo di gigabyte di memoria nel cluster.GPU_TYPE
: il tipo di GPU.MINIMUM_ACCELERATOR
: il numero minimo di GPU acceleratori 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 diversi 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 l'interfaccia a riga di comando gcloud può accedere. Modifica i valori per
cpu
ememory
. Aggiungi più valori perresourceType
in base alle tue esigenze. 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 in un cluster Kubernetes.
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.
Accettare le limitazioni di 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. Utilizzatpu-v4-podslice
per selezionare TPU v4. Per selezionare TPU v5e con una macchina che inizia conct5lp-
, usatpu-v5-lite-podslice
. Per selezionare TPU v5e con un tipo di macchina che inizia conct5l-
, utilizzatpu-v5-lite-device
.MINIMUM_ACCELERATOR
: il numero minimo di TPU nel cluster.- Tieni presente che l'utilizzo di
MINIMUM_ACCELERATOR
potrebbe bloccare il ridimensionamento delle sezioni TPU multi-host anche seMINIMUM_ACCELERATOR
è 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 la sezione in modo atomico. Stabilisci il conteggio
abbastanza alto da consentire il provisioning di tutte le 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 crea la sezione in modo atomico. Stabilisci il conteggio
abbastanza alto da consentire il provisioning di tutte le 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 di TPU per
ct5lp-hightpu-1t
,ct5lp-hightpu-4t
ect5lp-hightpu-8t
nel tipo di macchinadev-cluster
cluster. Ad esempio, fino a diecict5lp-hightpu-4t
il provisioning delle macchine, ognuno 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 farà sì che GKE per eseguire il provisioning di 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 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 del provisioning automatico:
Copia la configurazione riportata sopra in un file in una posizione a cui l'interfaccia a riga di comando gcloud può accedere. Modifica i valori di
resourceType
emaximum
. Aggiungi più valori perresourceType
in base alle tue esigenze. 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
gcloud container clusters update
documentazione.
Località di provisioning automatico dei nodi
Imposti le zone in cui il provisioning automatico dei nodi può creare nuovi pool di nodi. 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à di provisioning automatico dei nodi non influisce su alcun nodo esistente piscine.
Per impostare le località in cui il provisioning automatico dei nodi può creare nuovi pool di nodi, 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 pool di nodi, 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 pool di nodi. Per specificare più
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 dove
gcloud CLI
può 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 il criterio di posizionamento compatto. Con il criterio di posizionamento compatto, puoi indicare a GKE di creare pool di nodi più vicini tra 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 devono essere eseguiti insieme, nello stesso gruppo di posizionamenti compatto.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, consulta l'articolo su come definire il posizionamento compatto per i nodi GKE.
Disabilitazione del provisioning automatico dei nodi
Quando disattivi il provisioning automatico dei nodi per un cluster, i pool di nodi non vengono più provisionati automaticamente.
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, per Provisioning automatico dei nodi, fai clic su
Modifica.Deseleziona la casella di controllo Abilita provisioning automatico dei nodi.
Fai clic su Salva modifiche.
Contrassegnare il pool di nodi come provisioning automatico in corso...
Dopo aver abilitato il provisioning automatico dei nodi nel cluster, puoi per specificare per quali pool di nodi viene eseguito il provisioning automatico. Un pool di nodi di cui è stato eseguito il provisioning automatico automaticamente quando non è utilizzato da nessun carico di lavoro.
Per contrassegnare un pool di nodi come 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.
Contrassegnare il pool di nodi come non sottoposto a provisioning automatico
Per contrassegnare un pool di nodi come non sottoposto a 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 specifica serie di macchine di Compute Engine, come n2
oppure
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ù
per matchExpressions
, GKE sceglie arbitrariamente una macchina
serie dalle voci specificate.
Controllare gli attributi dei nodi utilizzando una classe di calcolo personalizzata
Per un maggiore controllo sugli attributi dei pool di nodi di cui è stato eseguito il provisioning automatico, crea e utilizza le classi di calcolo personalizzate. Le classi di computing personalizzate configurare comportamenti di scalabilità come le priorità di fallback nella scelta dei tipi di macchina per nodi o soglie specifiche di utilizzo delle risorse che attivano il consolidamento sui nodi per liberare risorse inutilizzate. Le classi di calcolo personalizzate sono disponibili per l'utilizzo in GKE versione 1.30.3-gke.1451000 e 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 un piattaforma CPU minima specificato. 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.