Creazione e gestione dei pool di nodi

In un cluster utente, puoi creare un gruppo di nodi tutti con la stessa configurazione compilando la sezione nodePools del file di configurazione del cluster. Puoi quindi gestire il pool di nodi senza influire sugli altri nodi nel cluster. Scopri di più sui pool di nodi.

Prima di iniziare

L'eliminazione di un pool di nodi comporta la rimozione immediata dei nodi del pool, indipendentemente dal fatto che tali nodi stiano eseguendo o meno carichi di lavoro.

Puoi aggiornare il campo replicas di una sezione nodePool senza interrompere i carichi di lavoro. Se aggiorni gli altri campi, i nodi nel pool vengono eliminati e ricreati.

Se vuoi collegare i tag a tutte le VM in un pool di nodi, il tuo account utente vCenter deve avere questi privilegi di codifica vSphere:

  • Tag vSphere.Assegna o annulla l'assegnazione del tag vSphere
  • Codifica vSphere.Assegna o annulla l'assegnazione di tag vSphere sull'oggetto (vSphere 7)

Quando aggiorni una sezione nodePool, Cluster Anthos su VMware crea un nuovo nodo e poi elimina un vecchio nodo. Il processo si ripete finché tutti i nodi precedenti non sono stati sostituiti con nuovi. Ciò significa che il cluster deve avere un indirizzo IP aggiuntivo da utilizzare durante l'aggiornamento.

Supponi che un pool di nodi abbia N nodi alla fine di un aggiornamento. Devi avere almeno N indirizzi N + 1 disponibili per i nodi nel 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 in tutti i pool di nodi del cluster alla fine del ridimensionamento. Per ulteriori informazioni, consulta la sezione Verificare la disponibilità di indirizzi IP sufficienti.

Compilazione della sezione nodePools del file di configurazione del cluster

Nel file di configurazione del cluster utente, compila la sezione nodePools.

Per ogni pool di nodi, devi specificare i seguenti campi:

  • nodePools.[i].name
  • nodePools[i].cpus
  • nodePools.[i].memoryMB
  • nodePools.[i].replicas

I seguenti campi sono facoltativi:

  • nodePools[i].labels
  • nodePools[i].taints
  • nodePools[i].bootDiskSizeGB
  • nodePools[i].osImageType
  • nodePools[i].vsphere.datastore
  • nodePools[i].vsphere.tags

Creazione di pool di nodi in un nuovo cluster

Nel file di configurazione del cluster utente, compila la sezione nodePools e crea il cluster:

gkectl create cluster --kubeconfig ADMIN_CLUSTER_KUBECONFIG --config USER_CLUSTER_CONFIG

Sostituisci quanto segue:

  • ADMIN_CLUSTER_KUBECONFIG: il file kubeconfig per il cluster di amministrazione

  • USER_CLUSTER_CONFIG: il file di configurazione del cluster utente

Aggiornamento dei pool di nodi in un cluster esistente

Nel file di configurazione del cluster utente, modifica la sezione nodePools, quindi aggiorna il cluster:

gkectl update cluster --kubeconfig ADMIN_CLUSTER_KUBECONFIG --config USER_CLUSTER_CONFIG

Verifica delle modifiche

Per verificare che i pool di nodi siano stati creati o aggiornati come previsto, controlla i nodi del cluster:

kubectl --kubeconfig [USER_CLUSTER_KUBECONFIG get nodes -o wide

Se devi annullare le modifiche, modifica il file di configurazione del cluster ed esegui gkectl update cluster.

Eliminazione di un pool di nodi

Per eliminare un pool di nodi da un cluster utente:

  1. Rimuovine la definizione dalla sezione nodePools del file di configurazione del cluster utente.

  2. Assicurati che non siano in esecuzione carichi di lavoro sui nodi interessati.

  3. Aggiorna il cluster:

    gkectl update cluster --kubeconfig ADMIN_CLUSTER_KUBECONFIG --config USER_CLUSTER_CONFIG
    

Esempi

Nella seguente configurazione di esempio, sono presenti quattro pool di nodi, ognuno con attributi diversi:

  • pool-1: sono specificati solo gli attributi minimi obbligatori
  • pool-2: include vsphere.datastore e vsphere.tags
  • pool-3: include taints e labels
  • pool-4: include osImageType e bootDiskSizeGB
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

Risolvere i problemi

  • In generale, il comando gkectl update cluster fornisce specifiche quando non riesce. Se il comando ha avuto esito positivo e non vedi i nodi, puoi risolvere il problema con la guida Diagnosi dei problemi del cluster.

  • È possibile che non siano disponibili risorse cluster sufficienti, come la mancanza di indirizzi IP disponibili durante la creazione o l'aggiornamento del pool di nodi. Per ulteriori dettagli sulla verifica della disponibilità di indirizzi IP, consulta l'argomento Ridimensionamento di un cluster utente.

  • Puoi anche consultare la guida generale per la risoluzione dei problemi.

  • Non sarà possibile procedere oltre il giorno 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 non sia andato a buon fine, puoi eseguire i seguenti comandi:

    1. Esegui kubectl get nodes per ottenere lo stato dei nodi.
    2. Per tutti i nodi non pronti, esegui kubectl describe node NODE_NAME per ottenere i dettagli.