Quando crei un cluster utente, devi configurare almeno un pool di nodi, ovvero un gruppo di nodi che hanno tutti la stessa configurazione. Dopo aver creato il cluster, puoi aggiungere nuovi node pool, aggiornare le impostazioni pool di nodi ed eliminarli.
Scegliere uno strumento per gestire i pool di nodi
Il modo in cui crei, aggiorni ed elimini i node pool dipende dal fatto che il cluster sia gestito dall'API GKE On-Prem. Un cluster utente è gestito dall'API GKE On-Prem se una delle seguenti condizioni è vera:
Il cluster è stato creato nella console Google Cloud o utilizzando Google Cloud CLI (gcloud CLI), che configura automaticamente l'API GKE On-Prem per gestire il cluster.
Il cluster è stato creato utilizzando
gkectl
, ma è stato configurato per essere gestito dall'API GKE On-Prem.
Se l'API GKE On-Prem gestisce un cluster utente, puoi utilizzare la console o gcloud CLI per gestire i pool di nodi. Se il
cluster utente non è gestito dall'API GKE On-Prem, utilizza gkectl
sulla workstation
dell'amministratore per gestire i node pool.
Se prevedi di utilizzare l'interfaccia alla gcloud CLI, segui questi passaggi su un computer su cui è installata l'interfaccia a riga di comando gcloud:
Accedi con il tuo Account Google
gcloud auth login
Aggiorna i componenti:
gcloud components update
Aggiungi un pool di nodi
Se il cluster è gestito dall'API GKE On-Prem, puoi utilizzare la console o l'gcloud CLI per aggiungere un pool di nodi. Tuttavia, devi utilizzare gkectl
sulla workstation di amministrazione per configurare le seguenti impostazioni del pool di nodi:
- Windows per il tipo di immagine del sistema operativo
- Datastore vSphere
Tag vSphere Se vuoi associare tag a tutte le VM in un pool di nodi, il tuo account utente vCenter deve disporre di questi privilegi di tagging vSphere:
- Tagging vSphere.Assegna o annulla l'assegnazione del tag vSphere
- Tagging vSphere.Assegna o annulla l'assegnazione del tag vSphere all'oggetto (vSphere 7)
Prima di aggiungere un altro pool di nodi, verifica che siano disponibili indirizzi IP sufficienti nel cluster.
gkectl
Esegui le seguenti operazioni sulla workstation di amministrazione:
Nel file di configurazione del cluster utente, compila la sezione
nodePools
.Devi specificare i seguenti campi:
nodePools.[i].name
nodePools[i].cpus
nodePools.[i].memoryMB
nodePools.[i].replicas
I seguenti campi sono facoltativi. Se non includi
nodePools[i].bootDiskSizeGB
onodePools[i].osImageType
, vengono utilizzati i valori predefiniti.nodePools[i].labels
nodePools[i].taints
nodePools[i].bootDiskSizeGB
nodePools[i].osImageType
nodePools[i].vsphere.datastore
nodePools[i].vsphere.tags
Esegui questo comando:
gkectl update cluster --kubeconfig ADMIN_CLUSTER_KUBECONFIG --config USER_CLUSTER_CONFIG
Sostituisci quanto segue:
ADMIN_CLUSTER_KUBECONFIG
con il percorso del file kubeconfig per il tuo cluster di amministrazione.USER_CLUSTER_CONFIG
con il percorso del file di configurazione del cluster utente.
Configurazione di esempio
Nella configurazione di esempio seguente sono presenti quattro pool di nodi, ciascuno con attributi diversi:
pool-1
: vengono specificati solo gli attributi minimi obbligatoripool-2
: includevsphere.datastore
evsphere.tags
pool-3
: includetaints
elabels
pool-4
: includeosImageType
ebootDiskSizeGB
nodePools:
- name: pool-1
cpus: 4
memoryMB: 8192
replicas: 5
- name: pool-2
cpus: 8
memoryMB: 16384
replicas: 3
vsphere:
datastore: my_datastore
tags:
- category: "purpose"
name: "testing"
- name: pool-3
cpus: 4
memoryMB: 8192
replicas: 5
taints:
- key: "example-key"
effect: NoSchedule
labels:
environment: production
app: nginx
- name: pool-4
cpus: 4
memoryMB: 8192
replicas: 5
osImageType: cos
bootDiskSizeGB: 40
Console
Nella console, vai alla pagina Panoramica dei cluster Google Kubernetes Engine.
Seleziona il progetto Google Cloud in cui si trova il cluster utente.
Nell'elenco dei cluster, fai clic sul nome del cluster e poi su Visualizza dettagli nel riquadro Dettagli.
Fai clic su
Aggiungi pool di nodi.Configura il pool di nodi:
- Inserisci il nome del pool di nodi.
- Inserisci il numero di vCPUs per ogni nodo nel pool (minimo 4 per worker cluster utente).
- Inserisci la dimensione della memoria in mebibyte (MiB) per ogni nodo nel pool (minimo 8192 MiB per nodo worker del cluster utente e deve essere un multiplo di 4).
- Nel campo Nodi, inserisci il numero di nodi nel pool (min 3).
Seleziona il tipo di immagine del sistema operativo: Ubuntu Containerd o COS.
Inserisci la dimensione del disco di avvio in gibibyte (GiB) (il valore predefinito è 40 GiB).
Nella sezione Metadati del node pool (facoltativo), se vuoi aggiungere etichette e contaminazioni di Kubernetes, procedi nel seguente modo:
- Fai clic su + Aggiungi etichette Kubernetes. Inserisci la chiave e il valore per l'etichetta. Ripeti queste operazioni in base alle necessità.
- Fai clic su + Aggiungi contaminazione. Inserisci Chiave, Valore e Effetto per l'alterazione. Ripeti queste operazioni in base alle necessità.
Fai clic su Crea.
La console Google Cloud mostra Stato del cluster: modifiche in corso. Fai clic su Mostra dettagli per visualizzare la condizione dello stato della risorsa e i messaggi di stato.
Interfaccia a riga di comando gcloud
Esegui il comando seguente per creare un pool di nodi:
gcloud container vmware node-pools create NODE_POOL_NAME \ --cluster=USER_CLUSTER_NAME \ --project=FLEET_HOST_PROJECT_ID \ --location=LOCATION \ --image-type=IMAGE_TYPE \ --boot-disk-size=BOOT_DISK_SIZE \ --cpus=vCPUS \ --memory=MEMORY \ --replicas=NODES
Sostituisci quanto segue:
NODE_POOL_NAME
: un nome scelto da te per il node pool. Il nome deve:- Deve contenere al massimo 40 caratteri.
- Deve contenere solo caratteri alfanumerici minuscoli o un trattino (
-
). - Deve iniziare con un carattere alfabetico
- Deve terminare con un carattere alfanumerico
USER_CLUSTER_NAME
: il nome del cluster utente in cui verrà creato il pool di nodi.
FLEET_HOST_PROJECT_ID
: l'ID del progetto a cui è registrato il cluster.LOCATION
: la località Google Cloud associata al cluster di utenti.IMAGE_TYPE
: il tipo di immagine del sistema operativo da eseguire sulle VM nel pool di nodi. Imposta uno dei seguenti valori:ubuntu_containerd
ocos
.BOOT_DISK_SIZE
: le dimensioni del disco di avvio in gibibyte (GiB) per ogni nodo del pool. Il valore minimo è 40 GiB.vCPUs
: il numero di vCPU per ogni nodo nel pool di nodi. Il numero minimo è 4.MEMORY
: la dimensione della memoria in mebibyte (MiB) per ogni nodo del pool. Il valore minimo è 8192 MiB per nodo worker del cluster utente e il valore deve essere un multiplo di 4.NODES
: il numero di nodi nel pool di nodi. Il valore minimo è 3.
Ad esempio:
gcloud container vmware node-pools create default-pool \ --cluster=user-cluster-1 \ --location=us-west1 \ --image-type=ubuntu_containerd \ --boot-disk-size=40 \ --cpus=8 \ --memory=8192 \ --replicas=5
Se vuoi, puoi specificare quanto segue:
--enable-load-balancer
: pertinente solo per il bilanciatore del carico MetalLB. Se specificato, consente all'oratore MetalLB di funzionare sui nodi del pool. Per il bilanciatore del carico MetalLB deve essere abilitato almeno un pool di nodi.--image=IMAGE
: il nome dell'immagine del sistema operativo in vCenter.--node-labels=KEY=VALUE,...
: un elenco separato da virgola di etichette Kubernetes (coppie chiave-valore) applicate a ogni nodo del pool.--node-taints=KEY=VALUE:EFFECT,...
Un elenco separato da virgole di contaminazioni Kubernetes applicate a ogni nodo nel pool. Le incompatibilità sono coppie chiave-valore associate a un effetto. Le incompatibilità vengono utilizzate con le tolleranze per la pianificazione dei pod. Specifica uno dei seguenti valori per EFFECT:NoSchedule
,PreferNoSchedule
,NoExecute
.
Ad esempio:
gcloud container vmware node-pools create default-pool \ --cluster=user-cluster-1 \ --location=us-west1 \ --image-type=ubuntu_containerd \ --boot-disk-size=40 \ --cpus=8 \ --memory=8192 \ --replicas=5 \ --node-taints=key1=val1:NoSchedule,key2=val2:NoExecute
Per informazioni su altri flag facoltativi, consulta il riferimento gcloud.
Aggiornamento di un pool di nodi
Quando aumenti il numero di repliche, Google Distributed Cloud aggiunge il numero richiesto di nodi al cluster utente e, quando riduci il numero di repliche, i nodi vengono rimossi. La modifica del numero di repliche per un pool di nodi non interrompe i workload. Assicurati di avere indirizzi IP disponibili se aumenti il numero di repliche.
Se aggiorni un altro campo del pool di nodi, viene attivato un aggiornamento progressivo sul cluster. In un aggiornamento progressivo, Google Distributed Cloud crea un nuovo nodo e poi elimina un vecchio nodo. Questa procedura viene ripetuta fino a quando tutti i vecchi nodi non sono stati sostituiti con nuovi nodi. Questa procedura non causa tempi di riposo, ma il cluster deve avere un indirizzo IP aggiuntivo da utilizzare durante l'aggiornamento.
Supponiamo che un pool di nodi abbia N nodi al termine di un aggiornamento. Devi quindi avere almeno N + 1 indirizzi IP disponibili per i nodi del pool. Ciò significa che se stai ridimensionando un cluster aggiungendo nodi a uno o più pool, devi avere almeno un indirizzo IP in più rispetto al numero totale di nodi che saranno presenti in tutti i pool di nodi del cluster al termine del ridimensionamento. Per ulteriori informazioni, consulta Verificare che siano disponibili indirizzi IP sufficienti.
Per aggiornare un pool di nodi in un cluster utente:
gkectl
Modifica i valori dei campi che vuoi modificare nella sezione
nodePools
del file di configurazione del cluster utente.Aggiorna il cluster:
gkectl update cluster --kubeconfig ADMIN_CLUSTER_KUBECONFIG --config USER_CLUSTER_CONFIG
Sostituisci quanto segue:
ADMIN_CLUSTER_KUBECONFIG
con il percorso del file kubeconfig per il tuo cluster di amministrazione.USER_CLUSTER_CONFIG
con il percorso del file di configurazione del cluster utente.
Aggiornare il osImageType
utilizzato da un pool di nodi
Per aggiornare un pool di nodi in modo che utilizzi un osImageType
diverso, devi utilizzare la riga di comando. Per modificare il osImageType
utilizzato da un pool di nodi, aggiorna il file di configurazione del pool di nodi, come mostrato nell'esempio seguente, ed esegui gkectl update cluster
.
nodePools: - name: np-1 cpus: 4 memoryMB: 8192 replicas: 3 osImageType: ubuntu_containerd
Console
Puoi aggiornare solo i seguenti campi utilizzando la console:
- Numero di repliche
- Memoria
- Numero di vCPU
Per aggiornare altri campi, utilizza gcloud CLI o gkectl
.
Nella console, vai alla pagina Panoramica dei cluster Google Kubernetes Engine.
Seleziona il progetto Google Cloud in cui si trova il cluster utente.
Nell'elenco dei cluster, fai clic sul nome del cluster e poi su Visualizza dettagli nel riquadro Dettagli.
Fai clic sulla scheda Nodi.
Fai clic sul nome del pool di nodi che vuoi modificare.
Fai clic su
Modifica accanto al campo da modificare e poi su Fine.Fai clic su
per tornare alla pagina precedente.La console Google Cloud mostra Stato del cluster: modifiche in corso. Fai clic su Mostra dettagli per visualizzare la condizione dello stato della risorsa e i messaggi di stato.
Interfaccia a riga di comando gcloud
Se vuoi, elenca i pool di nodi per ottenere il nome del pool di nodi che vuoi aggiornare:
gcloud container vmware node-pools list \ --cluster=USER_CLUSTER_NAME \ --project=FLEET_HOST_PROJECT_ID \ --location=LOCATION
Esegui il comando seguente per aggiornare il pool di nodi:
gcloud container vmware node-pools update NODE_POOL_NAME \ --cluster=USER_CLUSTER_NAME \ --project=FLEET_HOST_PROJECT_ID \ --location=LOCATION \ --ATTRIBUTE_TO_UPDATE \ ...
Sostituisci quanto segue:
NODE_POOL_NAME
: il nome del pool di nodi da actualizare.USER_CLUSTER_NAME
: il nome del cluster utente che contiene il pool di nodi.LOCATION
: la località Google Cloud associata al cluster di utenti.ATTRIBUTE_TO_UPDATE
: uno o più flag per aggiornare gli attributi del pool di nodi. Ad esempio, per modificare il numero di vCPU e di nodi nel pool, esegui il seguente comando.
gcloud container vmware node-pools update default-pool \ --cluster=user-cluster-1 \ --project=example-project-12345 --location=us-west1 \ --cpus=10 \ --replicas=6
Per informazioni sugli attributi del pool di nodi che puoi aggiornare, consulta il riferimento gcloud.
Verifica le modifiche
Per verificare che i pool di nodi siano stati creati o aggiornati come previsto, esamina i nodi del cluster:
gkectl
Esegui questo comando:
kubectl --kubeconfig USER_CLUSTER_KUBECONFIG get nodes -o wide
Se devi ripristinare le modifiche, modifica il file di configurazione del cluster ed eseguito gkectl update cluster
.
Console
Nella console, vai alla pagina Panoramica dei cluster Google Kubernetes Engine.
Seleziona il progetto Google Cloud in cui si trova il cluster utente.
Nell'elenco dei cluster, fai clic sul nome del cluster e poi su Visualizza dettagli nel riquadro Dettagli.
Fai clic sulla scheda Nodi.
Fai clic sul nome del pool di nodi che vuoi visualizzare.
Interfaccia a riga di comando gcloud
Esegui questo comando:
gcloud container vmware node-pools describe NODE_POOL_NAME \ --cluster=USER_CLUSTER_NAME \ --project=FLEET_HOST_PROJECT_ID \ --location=LOCATION
Elimina un node pool
Anche se puoi eliminare i node pool, il cluster di utenti deve avere almeno un pool di nodi. L'eliminazione di un pool di nodi comporta la rimozione immediata dei nodi del pool, indipendentemente dal fatto che su questi nodi siano in esecuzione carichi di lavoro.
Per eliminare un pool di nodi da un cluster utente:
gkectl
Assicurati che non siano in esecuzione carichi di lavoro sui nodi interessati.
Rimuovi la relativa definizione dalla sezione
nodePools
del file di configurazione del cluster utente.Aggiorna il cluster:
gkectl update cluster --kubeconfig ADMIN_CLUSTER_KUBECONFIG --config USER_CLUSTER_CONFIG
Sostituisci quanto segue:
[ADMIN_CLUSTER_KUBECONFIG]
con il percorso del file kubeconfig per il tuo cluster di amministrazione.[USER_CLUSTER_CONFIG]
con il percorso del file di configurazione del cluster utente.
Console
Assicurati che non siano in esecuzione carichi di lavoro sui nodi interessati.
Nella console, vai alla pagina Panoramica dei cluster Google Kubernetes Engine.
Seleziona il progetto Google Cloud in cui si trova il cluster utente.
Nell'elenco dei cluster, fai clic sul nome del cluster e poi su Visualizza dettagli nel riquadro Dettagli.
Fai clic sulla scheda Nodi.
Fai clic sul nome del pool di nodi che vuoi eliminare.
Fai clic su
Elimina.Fai clic su
per tornare alla pagina precedente.La console Google Cloud mostra Stato del cluster: modifiche in corso. Fai clic su Mostra dettagli per visualizzare la condizione dello stato della risorsa e i messaggi di stato.
Interfaccia a riga di comando gcloud
Se vuoi, elenca i node pool per ottenere il nome del pool di nodi che vuoi eliminare:
gcloud container vmware node-pools list \ --cluster=USER_CLUSTER_NAME \ --project=FLEET_HOST_PROJECT_ID \ --location=LOCATION
Esegui il seguente comando per eliminare il pool di nodi:
gcloud container vmware node-pools delete NODE_POOL_NAME \ --cluster=USER_CLUSTER_NAME \ --project=FLEET_HOST_PROJECT_ID \ --location=LOCATION
Sostituisci quanto segue:
NODE_POOL_NAME
: il nome del pool di nodi da eliminare.USER_CLUSTER_NAME
: il nome del cluster utente che contiene il pool di nodi.LOCATION
: la località Google Cloud associata al cluster di utenti.
Risoluzione dei problemi
In genere, il comando
gkectl update cluster
fornisce informazioni specifiche in caso di errore. Se il comando è andato a buon fine e non visualizzi i nodi, puoi risolvere i problemi consultando la guida Diagnostica dei problemi del cluster.È possibile che le risorse del cluster non siano sufficienti, ad esempio la mancanza di indirizzi IP disponibili durante la creazione o l'aggiornamento del pool di nodi. Consulta l'argomento Ridimensionare un cluster di utenti per informazioni dettagliate sulla verifica della disponibilità degli indirizzi IP.
Puoi anche consultare Risolvere i problemi di aggiornamento di Google Distributed Cloud.
Non procederà oltre
Creating node MachineDeployment(s) in user cluster…
.La creazione o l'aggiornamento dei pool di nodi nel cluster utente può richiedere del tempo. Tuttavia, se il tempo di attesa è estremamente lungo e sospetti che qualcosa possa non aver funzionato, puoi eseguire i seguenti comandi:
- Esegui
kubectl get nodes
per ottenere lo stato dei tuoi nodi. - Per i nodi non pronti, esegui
kubectl describe node NODE_NAME
per ottenere dettagli.
- Esegui