Gestisci i pool di nodi in un cluster

Un pool di nodi è un gruppo di nodi all'interno di un cluster che ha la stessa configurazione. Tutti i nodi del cluster deve appartenere a un pool di nodi. Esistono tre tipi di nodi Pool in un cluster Google Distributed Cloud: piano di controllo, bilanciatore del carico e nodo worker piscine.

Questa pagina descrive come controllare lo stato dei pool di nodi worker e come aggiungere, aggiornare e rimuovere pool di nodi worker.

Scegli uno strumento per gestire i pool di nodi

Il modo in cui gestisci i pool di nodi dipende dal tipo di cluster e dai cluster utente, se il cluster è gestito dall'API GKE On-Prem. Un cluster utente è gestite 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 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 o gcloud CLI per gestire i pool di nodi. Se cluster utente non è gestito dall'API GKE On-Prem, utilizza kubectl nella per gestire i pool di nodi. Puoi utilizzare kubectl anche per gestire il nodo pool per tutti i tipi di cluster che possono contenere pool di nodi worker (ibridi, indipendenti e cluster utente).

Se prevedi di utilizzare gcloud CLI, esegui le operazioni seguenti su un computer in cui è installato gcloud CLI:

  1. Accedi con il tuo account Google

    gcloud auth login
    
  2. Aggiorna i componenti:

    gcloud components update
    

Controlla lo stato del nodo

Prima di aggiungere o rimuovere pool di nodi, controlla lo stato dei nodi e dei relativi rispettivi pool di nodi.

kubectl

Con kubectl, puoi ottenere lo stato dei nodi in uno spazio dei nomi specifico nell'intero cluster. L'esempio seguente mostra lo stato del nodo 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 di un nodo. Ogni riga della tabella indica il numero di nodi per pool di nodi in ciascuno stati.

Quando aggiungi un nodo, inizialmente lo stato è Reconciling mentre il nodo viene eseguito il provisioning. Quando il nodo fa parte del cluster, lo stato del nodo cambia in Ready.

Puoi anche controllare lo stato dei nodi nel cluster eseguendo questo comando :

kubectl get nodes --kubeconfig=PATH_TO_KUBECONFIG

Console

  1. Nella console, vai alla panoramica dei cluster Google Kubernetes Engine .

    Vai ai cluster GKE

  2. Seleziona il progetto Google Cloud in cui si trova il cluster utente.

  3. Nell'elenco dei cluster, fai clic sul nome del cluster e quindi su Altri dettagli nel riquadro Dettagli.

  4. Fai clic sulla scheda Nodi.

    Viene visualizzato un elenco di pool di nodi.

Screenshot dell'elenco di nodi

Interfaccia a riga di comando gcloud

  1. Elenca i pool di nodi sul 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 che in cui è stato creato il cluster.

    • LOCATION: la località di Google Cloud associata a per il cluster utente.

  2. 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.

Se hai bisogno di ulteriori informazioni su come diagnosticare i cluster, consulta Crea snapshot per diagnosticare i 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 nodo del piano di controllo ma non può contenere un pool di nodi worker: tentativo di aggiungere un nodo worker in un cluster di amministrazione genera un errore.

  • Un cluster può contenere un solo pool di nodi del piano di controllo e un singolo carico pool di nodi del bilanciatore. Non puoi aggiungere un piano di controllo o bilanciamento del carico aggiuntivo pool di nodi a un cluster.

Puoi aggiungere nuovi pool di nodi a un cluster creando un nuovo nodepools.baremetal.cluster.gke.io risorsa nel cluster. Nel seguente Ad esempio, un nuovo pool di nodi denominato "machine-learning-pool" viene aggiunto al file manifest. Il nuovo Il 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

Archivia la configurazione in un file denominato machine-learning-pool.yaml e applica il metodo al cluster con il comando seguente:

kubectl apply -f machine-learning-pool.yaml

Quando aggiungi un pool di nodi a un cluster, tieni presente quanto segue:

  • NodePool.spec.taints e NodePool.spec.labels vengono riconciliate con i nodi. Tutte le incompatibilità ed etichette che sono aggiunte direttamente ai nodi vengono rimosse. Dal piano di controllo non viene rimossa le incompatibilità e le etichette che aggiungi direttamente durante il processo di sincronizzazione. A ignora questo passaggio della riconciliazione, puoi annotare il nodo baremetal.cluster.gke.io/label-taint-no-sync.

  • La risorsa del pool di nodi deve essere creata nello stesso spazio dei nomi dell'oggetto associato cluster e la risorsa del pool di nodi deve fare riferimento al nome del cluster nel campo spec.clusterName.

Console

  1. Nella console, vai alla panoramica dei cluster Google Kubernetes Engine .

    Vai ai cluster GKE

  2. Seleziona il progetto Google Cloud in cui si trova il cluster utente.

  3. Nell'elenco dei cluster, fai clic sul nome del cluster e quindi su Altri dettagli nel riquadro Dettagli.

  4. Fai clic su Aggiungi pool di nodi.

  5. Inserisci un nome per il pool di nodi.

  6. Nel campo Indirizzo nodo 1, inserisci l'indirizzo IP del worker di Cloud Shell.

    Se devi aggiungere più di una macchina con nodo worker, fai clic su Aggiungi indirizzo.

  7. Se vuoi, aggiungi Etichette Kubernetes e/o Incompatibilità di Kubernetes.

  8. Fai clic su Crea.

Lo stato del pool di nodi viene visualizzato nella scheda Nodi. Potresti aggiornare la pagina per vedere 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 a tua scelta per il nodo piscina. Il nome deve:

    • Deve contenere al massimo 40 caratteri
    • Contenere solo caratteri alfanumerici minuscoli o un trattino (-)
    • iniziano 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 che in cui è stato creato il cluster.

  • LOCATION: la località Google Cloud in cui specificato al momento della creazione del 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:

applicati a ciascun nodo nel pool. Le incompatibilità sono coppie chiave/valore associate un effetto. Le incompatibilità vengono utilizzate con le tolleranze per la pianificazione dei pod. Specificane uno dei seguenti per EFFECT: NoSchedule, PreferNoSchedule, NoExecute.

  • --validate-only Specifica questo flag se vuoi convalidare l'aggiornamento, non apportare modifiche.

Aggiornamento di un pool di nodi

kubectl

Puoi aggiornare un pool di nodi modificando nodepools.baremetal.cluster.gke.io risorsa nel cluster. Puoi aggiorna la risorsa direttamente utilizzando kubectl edit oppure aggiorna il file YAML e useremo kubectl apply.

Console

  1. Nella console, vai alla panoramica dei cluster Google Kubernetes Engine .

    Vai ai cluster GKE

  2. Seleziona il progetto Google Cloud in cui si trova il cluster utente.

  3. Nell'elenco dei cluster, fai clic sul nome del cluster e quindi su Altri dettagli nel riquadro Dettagli.

  4. Fai clic sulla scheda Nodi.

  5. Nell'elenco, fai clic sul pool di nodi che vuoi aggiornare.

  6. Nella pagina Dettagli del pool di nodi, fai clic su Modifica.

  7. Modifica le impostazioni in base alle tue esigenze e fai clic su Salva.

Interfaccia a riga di comando gcloud

  1. Facoltativamente, elenca i pool di nodi sul cluster per ottenere il nome del 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 pool di nodi.

    • FLEET_HOST_PROJECT_ID: l'ID del progetto che in cui è stato creato il cluster.

    • LOCATION: la località di Google Cloud associata a per il cluster utente.

  2. 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
    

Facoltativamente, puoi specificare quanto segue:

  • --node-labels=KEY=VALUE,...: A 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à di Kubernetes. applicati a ciascun nodo nel pool. Le incompatibilità sono coppie chiave-valore associate con 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, 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

I pool di nodi vengono rimossi con kubectl delete. Ad esempio, per rimuovere il nodo 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 pool di nodi del piano di controllo e i pool di nodi del bilanciatore del carico per la funzione di un cluster e di conseguenza non può essere rimosso in un cluster Kubernetes.

Console

  1. Nella console, vai alla panoramica dei cluster Google Kubernetes Engine .

    Vai ai cluster GKE

  2. Seleziona il progetto Google Cloud in cui si trova il cluster utente.

  3. Nell'elenco dei cluster, fai clic sul nome del cluster e quindi su Altri dettagli nel riquadro Dettagli.

  4. Fai clic sulla scheda Nodi, quindi sul pool di nodi che vuoi eliminare.

  5. Fai clic su Elimina.

  6. 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 che in cui è stato creato il cluster.

  • LOCATION: la località di Google Cloud associata a per il cluster utente.

La rimozione di un pool di nodi worker in un cluster può causare interruzioni dei pod. Se c'è un PodDisruptionBudget (PDB) attivo, potresti non riuscire a rimuovere un nodo piscina. Per ulteriori informazioni sui criteri di interruzione dei pod, consulta Rimozione dei nodi bloccati dal budget di interruzione dei pod.

Passaggi successivi

Se i requisiti dei carichi di lavoro cambiano dopo la creazione dei pool di nodi, puoi aggiornare un pool di nodi worker per aggiungere o rimuovere i nodi. Aggiungere o rimuovere nodi da un worker un pool di nodi, consulta Aggiungi o rimuovi nodi in un cluster.