Un node pool è un gruppo di nodi all'interno di un cluster che condividono la stessa configurazione. Tutti i nodi nel cluster devono appartenere a un pool di nodi. In un cluster Google Distributed Cloud esistono tre tipi di node pool: piano di controllo, bilanciatore del carico e nodi worker.
Questa pagina descrive come controllare lo stato dei node pool worker e come aggiungere, aggiornare e rimuovere i node pool worker.
Scegli uno strumento per gestire i node pool
La modalità di gestione dei node pool dipende dal tipo di cluster e, per i cluster utente, se il cluster è gestito dall'API GKE On-Prem. Un cluster utente è gestito dall'API GKE On-Prem se si verifica una delle seguenti condizioni:
Il cluster è stato creato nella Google Cloud console o utilizzando Google Cloud CLI (gcloud CLI), che configura automaticamente l'API GKE On-Prem per gestire il cluster.
Il cluster è stato creato utilizzando
bmctl, 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 node pool. Se il cluster utente non è gestito dall'API GKE On-Prem, utilizza kubectl sulla workstation di amministrazione per gestire i node pool. Utilizzi kubectl anche per gestire i node pool per tutti i tipi di cluster che possono contenere node pool worker (cluster ibridi, autonomi e utente).
Se prevedi di utilizzare gcloud CLI, esegui i seguenti passaggi su un computer su cui è installato gcloud CLI:
Accedi con il tuo account Google
gcloud auth login
Aggiorna i componenti:
gcloud components update
Controlla lo stato dei nodi
Prima di aggiungere o rimuovere node pool, controlla lo stato dei nodi e dei rispettivi node pool.
kubectl
Con kubectl, puoi ottenere lo stato dei nodi in uno spazio dei nomi specifico o nell'intero cluster. L'esempio seguente mostra lo stato dei node pool nello spazio dei nomi del cluster cluster-abm-cluster:
kubectl get nodepools.baremetal.cluster.gke.io -n cluster-abm-cluster
Il sistema restituisce risultati simili ai seguenti:
NAME READY RECONCILING STALLED UNDERMAINTENANCE UNKNOWN
abm-cluster 3 0 0 0 0
default-pool 2 0 0 0 0
backup-pool 3 0 0 0 0
Ogni colonna della tabella indica i diversi stati in cui può trovarsi un nodo. Ogni riga della tabella indica il numero di nodi per pool di nodi in ciascuno degli stati dei nodi.
Quando aggiungi un nodo, inizialmente ha lo stato Reconciling durante il provisioning del nodo. Una volta che il nodo fa parte del cluster, il suo stato cambia in Ready.
Puoi anche controllare lo stato dei nodi nel cluster eseguendo il seguente comando:
kubectl get nodes --kubeconfig=PATH_TO_KUBECONFIG
Console
Nella console, vai alla pagina Panoramica dei cluster Google Kubernetes Engine.
Seleziona il Google Cloud progetto in cui si trova il cluster utente.
Nell'elenco dei cluster, fai clic sul nome del cluster, quindi su Altri dettagli nel riquadro Dettagli.
Fai clic sulla scheda Nodi.
Viene visualizzato un elenco di node pool.
gcloud CLI
Elenca i node pool nel cluster:
gcloud container bare-metal node-pools list \ --cluster=USER_CLUSTER_NAME \ --project=FLEET_HOST_PROJECT_ID \ --location=LOCATION
Sostituisci quanto segue:
USER_CLUSTER_NAME: il nome del cluster utente che contiene i node pool.FLEET_HOST_PROJECT_ID: l'ID del progetto in cui è stato creato il cluster.LOCATION: la Google Cloud località associata a l cluster utente.
Descrivi un pool di nodi:
gcloud container bare-metal node-pools describe NODE_POOL_NAME \ --cluster=USER_CLUSTER_NAME \ --project=FLEET_HOST_PROJECT_ID \ --location=LOCATION
Sostituisci
NODE_POOL_NAMEcon il nome del pool di nodi.
Se hai bisogno di ulteriori informazioni su come diagnosticare i cluster, consulta Creazione di snapshot per la diagnosi dei cluster.
Aggiungi un nuovo pool di nodi
kubectl
Tieni presente le seguenti regole quando aggiungi un pool di nodi a un cluster:
Un cluster di amministrazione può contenere un pool di nodi del bilanciatore del carico e un node pool del piano di controllo, ma non può contenere un pool di nodi worker: se tenti di aggiungere un node pool worker a un cluster di amministrazione, si verifica un errore.
Un cluster può contenere un solo pool di nodi del piano di controllo e un solo pool di nodi del bilanciatore del carico. Non puoi aggiungere altri node pool del piano di controllo o del bilanciamento del carico a un cluster.
Per aggiungere nuovi node pool a un cluster, crea una nuova risorsa nodepools.baremetal.cluster.gke.io nel cluster. Nell'esempio seguente, al manifest viene aggiunto un nuovo pool di nodi denominato "machine-learning-pool". Il nuovo pool di nodi è composto da due nodi con indirizzi IP 10.200.0.7 e 10.200.0.8:
apiVersion: baremetal.cluster.gke.io/v1
kind: NodePool
metadata:
name: machine-learning-pool
namespace: cluster-abm-cluster
spec:
clusterName: abm-cluster
nodes:
- address: 10.200.0.7
- address: 10.200.0.8
taints:
- key: TAINT_KEY
value: TAINT_VALUE
effect: NoSchedule
labels:
key1: LABEL_1
key2: LABEL_2
Salva la configurazione in un file denominato machine-learning-pool.yaml e applicala al cluster con il seguente comando:
kubectl apply -f machine-learning-pool.yaml
Quando aggiungi un pool di nodi a un cluster, devi tenere presente quanto segue:
NodePool.spec.taintseNodePool.spec.labelsconfigurazioni vengono riconciliate con i nodi. Tutte le incompatibilità e le etichette aggiunte direttamente ai nodi vengono rimosse. Il control plane non rimuove le incompatibilità e le etichette che aggiungi direttamente durante il processo di sincronizzazione. Per ignorare questo passaggio di riconciliazione, puoi annotare il nodo conbaremetal.cluster.gke.io/label-taint-no-sync.La risorsa pool di nodi deve essere creata nello stesso spazio dei nomi del cluster associato e la risorsa pool di nodi deve fare riferimento al nome del cluster nel campo
spec.clusterName.
Console
Nella console, vai alla pagina Panoramica dei cluster Google Kubernetes Engine.
Seleziona il Google Cloud progetto in cui si trova il cluster utente.
Nell'elenco dei cluster, fai clic sul nome del cluster, quindi su Altri dettagli nel riquadro Dettagli.
Fai clic su Aggiungi node pool.
Inserisci un nome per il pool di nodi.
Nel campo Indirizzo nodo 1, inserisci l'indirizzo IP della macchina del nodo worker.
Se devi aggiungere più di una macchina del nodo worker, fai clic su Aggiungi indirizzo.
(Facoltativo) Aggiungi etichette Kubernetes e/o incompatibilità Kubernetes.
Fai clic su Crea.
Lo stato del pool di nodi viene visualizzato nella scheda Nodi. Potresti dover aggiornare la pagina per visualizzare uno stato aggiornato.
gcloud CLI
gcloud container bare-metal node-pools create NODE_POOL_NAME \ --cluster=USER_CLUSTER_NAME \ --project=FLEET_HOST_PROJECT_ID \ --location=LOCATION \ --node-configs-from-file=NODE_POOL_CONFIG
Sostituisci quanto segue:
NODE_POOL_NAME: un nome a tua scelta per il node pool. Il nome deve:- contenere al massimo 40 caratteri
- contenere solo caratteri alfanumerici minuscoli o un trattino (
-) - iniziare con un carattere alfabetico
- terminare con un carattere alfanumerico
USER_CLUSTER_NAME: il nome del cluster utente.FLEET_HOST_PROJECT_ID: l'ID del progetto in cui è stato creato il cluster.LOCATION: la Google Cloud località che hai specificato quando hai creato il cluster.NODE_POOL_CONFIG: il percorso di un file di configurazione che descrive il pool di nodi. Ad esempio:nodeConfigs: - nodeIP: 10.200.0.10 labels: key1: value1 key2: value2 - nodeIP: 10.200.0.11 labels: key3: value3 key4: value4
Facoltativamente, puoi specificare quanto segue:
--node-taints=KEY=VALUE:EFFECT,...Un elenco separato da virgole di incompatibilità 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.
--validate-onlyspecifica questo flag se vuoi convalidare l'aggiornamento, ma non apportare modifiche.
Aggiorna un pool di nodi
kubectl
Per aggiornare un pool di nodi, modifica la risorsa nodepools.baremetal.cluster.gke.io nel cluster. Puoi aggiornare la risorsa direttamente utilizzando kubectl edit oppure puoi aggiornare il file YAML e utilizzare kubectl apply.
Console
Nella console, vai alla pagina Panoramica dei cluster Google Kubernetes Engine.
Seleziona il Google Cloud progetto in cui si trova il cluster utente.
Nell'elenco dei cluster, fai clic sul nome del cluster, quindi su Altri dettagli nel riquadro Dettagli.
Fai clic sulla scheda Nodi.
Nell'elenco, fai clic sul pool di nodi che vuoi aggiornare.
Nella pagina Dettagli del node pool, fai clic su Modifica.
Modifica le impostazioni in base alle esigenze e fai clic su Salva.
gcloud CLI
(Facoltativo) Elenca i node pool nel cluster per ottenere il nome pool di nodi che vuoi aggiornare.
gcloud container bare-metal node-pools list \ --cluster=USER_CLUSTER_NAME \ --project=FLEET_HOST_PROJECT_ID \ --location=LOCATION
Sostituisci quanto segue:
USER_CLUSTER_NAME: il nome del cluster utente che contiene i node pool.FLEET_HOST_PROJECT_ID: l'ID del progetto in cui è stato creato il cluster.LOCATION: la Google Cloud località associata a l cluster utente.
Esegui questo comando:
gcloud container bare-metal node-pools update NODE_POOL_NAME \ --cluster=USER_CLUSTER_NAME \ --project=FLEET_HOST_PROJECT_ID \ --location=LOCATION \ --node-configs-from-file=NODE_CONFIG_FILE
Sostituisci quanto segue:
NODE_POOL_NAMEcon il nome del pool di nodi.NODE_CONFIG_FILE: il percorso di un file di configurazione che descrive il pool di nodi. Ad esempio:
nodeConfigs: - nodeIP: 10.200.0.10 labels: key1: value1 - nodeIP: 10.200.0.11
Facoltativamente, puoi specificare quanto segue:
--node-taints=KEY=VALUE:EFFECT,...Un elenco separato da virgole di incompatibilità 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.--validate-onlyspecifica questo flag se vuoi convalidare l'aggiornamento, ma non apportare modifiche.
Ad esempio:
gcloud container bare-metal node-pools create default-pool \
--cluster=user-cluster-1 \
--location=us-west1 \
--node-configs-from-file=node-pool-config.yaml \
--node-taints=key1=val1:NoSchedule,key2=val2:NoExecute
Rimuovi un pool di nodi
kubectl
Rimuovi i node pool con kubectl delete. Ad esempio, per rimuovere il node pool aggiunto nella sezione precedente, machine-learning-pool, utilizza il seguente comando:
kubectl delete nodepool machine-learning-pool -n cluster-abm-cluster
Tieni presente che i node pool del piano di controllo e i node pool del bilanciatore del carico sono fondamentali per il funzionamento di un cluster e, di conseguenza, non possono essere rimossi da un cluster.
Console
Nella console, vai alla pagina Panoramica dei cluster Google Kubernetes Engine.
Seleziona il Google Cloud progetto in cui si trova il cluster utente.
Nell'elenco dei cluster, fai clic sul nome del cluster, quindi su Altri dettagli nel riquadro Dettagli.
Fai clic sulla scheda Nodi, quindi sul pool di nodi che vuoi eliminare.
Fai clic su Elimina.
Nella finestra di dialogo di conferma, inserisci il nome del pool di nodi e fai clic su Conferma.
gcloud CLI
gcloud container bare-metal node-pools delete NODE_POOL_NAME \ --cluster=USER_CLUSTER_NAME \ --project=FLEET_HOST_PROJECT_ID \ --location=LOCATION
Sostituisci quanto segue:
NODE_POOL_NAMEcon il nome del pool di nodi.USER_CLUSTER_NAME: il nome del cluster utente che contiene i node pool.FLEET_HOST_PROJECT_ID: l'ID del progetto in cui è stato creato il cluster.LOCATION: la Google Cloud località associata a l cluster utente.
La rimozione di un pool di nodi worker in un cluster può causare interruzioni dei pod. Se è presente un PodDisruptionBudget (PDB), potresti non essere in grado di rimuovere un node pool. Per ulteriori informazioni sulle norme di interruzione dei pod, consulta Rimozione dei nodi bloccati dal budget di interruzione dei pod.
Passaggi successivi
Se i requisiti del carico di lavoro cambiano dopo la creazione dei node pool, puoi aggiornare un pool di nodi worker per aggiungere o rimuovere nodi. Per aggiungere o rimuovere nodi da un worker pool di nodi, consulta Aggiungere o rimuovere nodi in un cluster.