Un pool di nodi è un gruppo di nodi all'interno di un cluster che ha la stessa configurazione. Tutti i nodi in Anthos clusters on bare metal devono appartenere a un pool di nodi. Esistono tre tipi di pool di nodi nei Anthos clusters on bare metal: piano di controllo, bilanciatore del carico e pool di nodi worker.
In questa pagina viene descritto come controllare lo stato dei pool di nodi worker e come aggiungere e aggiornare i pool di nodi worker.
Scegli uno strumento per gestire i pool di nodi
La modalità di gestione dei pool di nodi dipende dal tipo di cluster e dai cluster utente, se il cluster è gestito dall'API Anthos On-Prem. Un cluster utente è gestito dall'API Anthos On-Prem se si verifica una delle seguenti condizioni:
Il cluster è stato creato nella console Google Cloud o utilizzando l'interfaccia a Google Cloud CLI (gcloud CLI), che configura automaticamente l'API Anthos On-Prem per la gestione del cluster.
Il cluster è stato creato utilizzando
bmctl
, ma è stato configurato per essere gestito dall'API Anthos On-Prem.
Se l'API Anthos On-Prem gestisce un cluster utente, puoi utilizzare la console o l'gcloud CLI per gestire i pool di nodi. Se il cluster utente non è gestito dall'API Anthos On-Prem, utilizza kubectl
sulla workstation di amministrazione per gestire i pool di nodi. Utilizza anche kubectl
per gestire i pool di nodi per tutti i tipi di cluster che possono contenere pool di nodi worker (ibridi, autonomi e cluster utente).
Se prevedi di utilizzare gcloud CLI, procedi nel seguente modo su un computer in 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 i pool di nodi, controlla lo stato dei nodi e i rispettivi pool di nodi.
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 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 nella tabella indica i diversi stati in cui può trovarsi un nodo. Ogni riga nella 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. Dopo che il nodo fa parte del cluster, lo stato del nodo passa a Ready
.
Puoi anche controllare lo stato dei nodi nel cluster eseguendo questo comando:
kubectl get nodes --kubeconfig=PATH_TO_KUBECONFIG
Console
Nella console, vai alla pagina Cluster Anthos.
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 Altri dettagli nel riquadro Dettagli.
Fai clic sulla scheda Nodi.
Viene visualizzato un elenco di pool di nodi.
Interfaccia a riga di comando gcloud
Elenca i pool di nodi sul cluster:
gcloud beta 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 località di Google Cloud associata al cluster utente.
Descrivi un pool di nodi:
gcloud beta 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.
Se hai bisogno di ulteriori informazioni su come diagnosticare i tuoi cluster, consulta Creare snapshot per la diagnostica 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 singolo pool di nodi del bilanciatore del carico. Non puoi aggiungere pool di nodi del piano di controllo o del bilanciamento del carico aggiuntivi a un cluster.
Puoi aggiungere nuovi pool di nodi a un cluster creando una nuova risorsa nodepools.baremetal.cluster.gke.io
nel cluster. Nell'esempio seguente, un nuovo pool di nodi denominato "machine-learning-pool" viene aggiunto al manifest. Il nuovo pool di nodi è costituito 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
Archivia la configurazione in un file denominato machine-learning-pool.yaml
e applicala al cluster con il comando seguente:
kubectl apply -f machine-learning-pool.yaml
I seguenti fatti dovrebbero essere considerati quando si aggiunge un pool di nodi a un cluster:
NodePool.spec.taints
eNodePool.spec.labels
vengono riconciliate con i nodi. Tutte le incompatibilità e le etichette aggiunte direttamente ai nodi vengono rimosse. Il piano di controllo non rimuove le incompatibilità e le etichette aggiunte direttamente durante il processo di sincronizzazione. Per bypassare questo passaggio di riconciliazione, puoi aggiungere un'annotazione al 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 la risorsa del pool di nodi deve fare riferimento al nome del cluster nel campo
spec.clusterName
.
Console
Nella console Google Cloud, vai alla pagina Cluster Anthos.
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 Altri 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 nodo worker, fai clic su
Aggiungi indirizzo.Facoltativamente, aggiungi etichette Kubernetes e/o incompatibilità Kubernetes.
Fai clic su Crea.
Lo stato del pool di nodi viene visualizzato nella scheda Nodi. Per visualizzare lo stato aggiornato, potresti dover aggiornare la pagina.
Interfaccia a riga di comando gcloud
gcloud beta 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 pool di nodi. Il nome deve:- contengono al massimo 40 caratteri
- contengono solo caratteri alfanumerici minuscoli o un trattino (
-
) - inizia con un carattere alfabetico
- terminano 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 località di Google Cloud specificata al momento della creazione del cluster.NODE_POOL_CONFIG
: il percorso di un file di configurazione che descrive il pool di nodi. Ecco alcuni esempi: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-labels=KEY=VALUE,...
: un elenco separato da virgole di etichette Kubernetes (coppie chiave-valore) applicate a ciascun nodo nel pool.--node-taints=KEY=VALUE:EFFECT,...
Un elenco separato da virgole di incompatibilità Kubernetes applicate a ciascun 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 una delle seguenti opzioni perEFFECT
:NoSchedule
,PreferNoSchedule
,NoExecute
.--validate-only
Specifica questo flag se vuoi convalidare la creazione, ma non apportare modifiche.
Aggiornamento di un pool di nodi
kubectl
Aggiorna un pool di nodi modificando la risorsa nodepools.baremetal.cluster.gke.io
nel cluster. Puoi aggiornare la risorsa direttamente utilizzando kubectl edit
oppure aggiornare il file YAML e utilizzare kubectl apply
.
Console
Nella console, vai alla pagina Cluster Anthos.
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 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 pool di nodi, fai clic su
Modifica.Modifica le impostazioni in base alle esigenze e fai clic su Salva.
Interfaccia a riga di comando gcloud
Facoltativamente, elenca i pool di nodi nel cluster per ottenere il nome del pool di nodi che vuoi aggiornare.
gcloud beta 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 località di Google Cloud associata al cluster utente.
Esegui questo comando:
gcloud beta 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. Ecco alcuni esempi:
nodeConfigs: - nodeIP: 10.200.0.10 labels: key1: value1 - nodeIP: 10.200.0.11
Facoltativamente, puoi specificare quanto segue:
--node-labels=KEY=VALUE,...
: un elenco separato da virgole di etichette Kubernetes (coppie chiave-valore) applicate a ciascun nodo nel pool.--node-taints=KEY=VALUE:EFFECT,...
Un elenco separato da virgole di incompatibilità Kubernetes applicate a ciascun 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 una delle seguenti opzioni per EFFECT:NoSchedule
,PreferNoSchedule
,NoExecute
.--validate-only
Specifica questo flag se vuoi convalidare l'aggiornamento ma non apportare modifiche.
Ecco alcuni esempi:
gcloud beta 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 pool di nodi con kubectl delete
. Ad esempio, per rimuovere il pool di nodi aggiunto nella sezione precedente, machine-learning-pool
, utilizza il comando seguente:
kubectl delete nodepool machine-learning-pool -n cluster-abm-cluster
Tieni presente che i pool di nodi del piano di controllo e i bilanciatori del carico sono fondamentali per la funzione di un cluster e di conseguenza non possono essere rimossi da un cluster.
Console
Nella console Google Cloud, vai alla pagina Cluster Anthos.
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 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.
Interfaccia a riga di comando gcloud
gcloud beta 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 località di Google Cloud associata al 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 riuscire a rimuovere un pool di nodi. Per ulteriori informazioni sui criteri di interruzione dei pod, consulta la pagina Rimuovere i nodi bloccati dal budget di interruzione dei pod.
Passaggi successivi
Se i requisiti del tuo carico di lavoro cambiano dopo la creazione dei pool di nodi, puoi aggiornare un pool di nodi worker per aggiungere o rimuovere i nodi. Per aggiungere o rimuovere nodi da un pool di nodi worker, consulta la sezione Aggiungere o rimuovere nodi in un cluster.