Un pool di nodi è un gruppo di nodi all'interno di un cluster che hanno 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 pool di nodi: pool di piano di controllo, bilanciatori del carico e pool di nodi worker.
Questa pagina descrive come controllare lo stato dei pool di nodi worker e come aggiungerli, aggiornarli e rimuoverli.
Scegliere uno strumento per gestire i pool di nodi
Il modo in cui gestisci i pool di nodi 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 è vera una delle seguenti condizioni:
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
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 pool di nodi. Se il cluster utente non è gestito dall'API GKE On-Prem, utilizza kubectl
sulla workstation di amministrazione per gestire i pool di nodi. Utilizzi kubectl
anche per gestire i pool di nodi per tutti i tipi di cluster che possono contenere pool di nodi worker (cluster ibridi, autonomi e utente).
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
Controllare lo stato del nodo
Prima di aggiungere o rimuovere i pool di nodi, controlla lo stato dei nodi e dei rispettivi pool di nodi.
kubectl
Con kubectl
, puoi ottenere lo stato dei nodi in uno spazio dei nomi specifico o
in tutto il cluster. L'esempio seguente mostra lo stato dei pool di nodi 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 del nodo.
Quando aggiungi un nodo, inizialmente lo stato è Reconciling
mentre viene eseguito il provisioning. Una volta che il nodo fa parte del cluster, lo stato del nodo diventa Ready
.
Puoi anche controllare lo stato dei nodi del 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 progetto Google Cloud in cui si trova il cluster utente.
Nell'elenco dei cluster, fai clic sul nome del cluster, quindi su Più dettagli nel riquadro Dettagli.
Fai clic sulla scheda Nodi.
Viene visualizzato un elenco di node pool.
Interfaccia a riga di comando gcloud
Elenca i pool di nodi 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 pool di nodi.FLEET_HOST_PROJECT_ID
: l'ID del progetto in cui è stato creato il cluster.LOCATION
: la posizione Google Cloud associata al cluster di utenti.
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_NAME
con il nome del pool di nodi.
Per saperne di più su come diagnosticare i cluster, consulta Creare 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 pool di nodi del piano di controllo, ma non può contenere un pool di nodi worker: il tentativo di aggiungere un pool di nodi worker a un cluster di amministrazione genera 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 pool di nodi del piano di controllo o bilanciatori del carico a un cluster.
Aggiungi nuovi pool di nodi a un cluster creando una nuova risorsa nodepools.baremetal.cluster.gke.io
al suo interno. Nel seguente
esempio, 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
Memorizza 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 considerare i seguenti aspetti:
Le configurazioni di
NodePool.spec.taints
eNodePool.spec.labels
vengono riconciliate con i nodi. Tutti gli elementi dannosi e le etichette aggiunti direttamente ai nodi vengono rimossi. Il piano di controllo non rimuove le contaminazioni e le etichette aggiunte direttamente durante il processo di sincronizzazione. Per aggirare questo passaggio di riconciliazione, puoi annotare il nodo conbaremetal.cluster.gke.io/label-taint-no-sync
.La risorsa del pool di nodi deve essere creata nello stesso spazio dei nomi del cluster associato e 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 progetto Google Cloud in cui si trova il cluster utente.
Nell'elenco dei cluster, fai clic sul nome del cluster e poi su Più dettagli nel riquadro Dettagli.
Fai clic su
Aggiungi pool di nodi.Inserisci un nome per il pool di nodi.
Nel campo Indirizzo nodi 1, inserisci l'indirizzo IP della macchina del nodo worker.
Se devi aggiungere più di un'istanza del nodo worker, fai clic su
Aggiungi indirizzo.Se vuoi, 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 lo stato aggiornato.
Interfaccia a riga di comando gcloud
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 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 di utenti.FLEET_HOST_PROJECT_ID
: l'ID del progetto in cui è stato creato il cluster.LOCATION
: la località Google Cloud 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
Se vuoi, puoi specificare quanto segue:
--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 incompatibilità di Kubernetes
applicata a ogni nodo del 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
tra i seguenti valori per EFFECT
: NoSchedule
,
PreferNoSchedule
, NoExecute
.
--validate-only
Specifica questo flag se vuoi convalidare l'aggiornamento, ma non apportare modifiche.
Aggiornamento di un pool di nodi
kubectl
Puoi aggiornare un pool di nodi modificando 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 progetto Google Cloud in cui si trova il cluster utente.
Nell'elenco dei cluster, fai clic sul nome del cluster e poi su Più dettagli nel riquadro Dettagli.
Fai clic sulla scheda Nodi.
Nell'elenco, fai clic sul pool di nodi che vuoi aggiornare.
Nella pagina Dettagli del pool di nodi, fai clic su
Modifica.Modifica le impostazioni in base alle tue esigenze e fai clic su Salva.
Interfaccia a riga di comando gcloud
Se vuoi, elenca i pool di nodi nel cluster per ottenere il nome del pool di nodi da 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 pool di nodi.FLEET_HOST_PROJECT_ID
: l'ID del progetto in cui è stato creato il cluster.LOCATION
: la posizione Google Cloud associata al cluster di utenti.
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_NAME
con 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
Se vuoi, puoi specificare quanto segue:
--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 del 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-only
Specifica 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
Rimuovere un pool di nodi
kubectl
Rimuovi i node pool con kubectl delete
. Ad esempio, per rimuovere il pool di nodi machine-learning-pool
aggiunto nella sezione precedente, utilizza il seguente comando:
kubectl delete nodepool machine-learning-pool -n cluster-abm-cluster
Tieni presente che i pool di nodi del piano di controllo e i pool di nodi 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 progetto Google Cloud in cui si trova il cluster utente.
Nell'elenco dei cluster, fai clic sul nome del cluster e poi su Più 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.
Interfaccia a riga di comando gcloud
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_NAME
con il nome del pool di nodi.USER_CLUSTER_NAME
: il nome del cluster utente che contiene i pool di nodi.FLEET_HOST_PROJECT_ID
: l'ID del progetto in cui è stato creato il cluster.LOCATION
: la posizione Google Cloud associata al cluster di utenti.
La rimozione di un pool di nodi worker in un cluster può causare interruzioni dei pod. Se è stato implementato un PodDisruptionBudget (PDB), la rimozione di un pool di nodi potrebbe essere bloccata. Per ulteriori informazioni sui criteri di interruzione dei pod, consulta la sezione Rimuovere i nodi bloccati dal budget di interruzione dei pod.
Passaggi successivi
Se i requisiti del tuo workload cambiano dopo aver creato i node pool, puoi aggiornare un pool di nodi worker per aggiungere o rimuovere nodi. Per aggiungere o rimuovere nodi da un pool di nodi di worker, consulta Aggiungere o rimuovere nodi in un cluster.