Creazione e gestione dei pool di nodi

Quando crei un cluster utente, devi configurarne almeno uno node pool, che è un gruppo di nodi che hanno tutti la stessa configurazione. Una volta creato il cluster, può aggiungere nuovi pool di nodi, aggiornare le impostazioni del pool di nodi ed eliminare i pool di nodi.

Scegli uno strumento per gestire i pool di nodi

Il modo in cui crei, aggiorni ed elimini i pool di nodi dipende dal fatto che il cluster sia gestite dall'API GKE On-Prem. Un cluster utente è gestito 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 gkectl, 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 gkectl nella per gestire i pool di nodi.

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
    

Aggiungi un pool di nodi

Se il cluster è gestito dall'API GKE On-Prem, puoi utilizzare o gcloud CLI per aggiungere un pool di nodi; ma devi utilizzare gkectl sulla workstation di amministrazione per configurare quanto segue impostazioni del pool di nodi:

Prima di aggiungere un altro pool di nodi, verificare che sia disponibile un numero sufficiente di indirizzi IP sul cluster.

Gkectl

Esegui le operazioni seguenti sulla workstation di amministrazione:

  1. Nel tuo file di configurazione del cluster utente, compila nodePools .

    Devi specificare i seguenti campi:

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

    I seguenti campi sono facoltativi. Se non includi nodePools[i].bootDiskSizeGB o nodePools[i].osImageType, vengono utilizzati i valori predefiniti.

    • nodePools[i].labels
    • nodePools[i].taints
    • nodePools[i].bootDiskSizeGB
    • nodePools[i].osImageType
    • nodePools[i].vsphere.datastore
    • nodePools[i].vsphere.tags
  2. Esegui questo comando:

    gkectl update cluster --kubeconfig ADMIN_CLUSTER_KUBECONFIG --config USER_CLUSTER_CONFIG
    

    Sostituisci quanto segue:

    • ADMIN_CLUSTER_KUBECONFIG con il percorso di kubeconfig per il cluster di amministrazione.

    • USER_CLUSTER_CONFIG con il percorso del cluster utente di configurazione del deployment.

Configurazione di esempio

Nella configurazione di esempio che segue sono presenti quattro pool di nodi, ciascuno con diversi attributi:

  • pool-1: vengono 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

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 Visualizza dettagli nel riquadro Dettagli.

  4. Fai clic su Aggiungi pool di nodi.

  5. Configura il pool di nodi:

    1. Inserisci il Nome del pool di nodi.
    2. Inserisci il numero di vCPUs per ciascun nodo nel pool (minimo 4 per worker del cluster utente).
    3. Inserisci la dimensione della memoria in mebibyte (MiB) per ciascun nodo nel pool (minimo 8192 MiB per nodo worker del cluster utente e deve essere un multiplo di 4)
    4. Nel campo Nodi, inserisci il numero di nodi nel pool (minimo 3).
    5. Seleziona il tipo di immagine sistema operativo: Ubuntu Containerd o COS.

    6. Inserisci la Dimensione disco di avvio in gibibyte (GiB) (il valore predefinito è 40 GiB).

  6. Nella sezione Metadati del pool di nodi (facoltativo), se vuoi aggiungere Kubernetes etichette e incompatibilità, procedi nel seguente modo:

    1. Fai clic su + Aggiungi etichette Kubernetes. Inserisci la Chiave e Valore dell'etichetta. Ripeti queste operazioni in base alle necessità.
    2. Fai clic su + Aggiungi incompatibilità. Inserisci la Chiave, il Valore e Effetto sull'incompatibilità. Ripeti queste operazioni in base alle necessità.
  7. Fai clic su Crea.

  8. Nella console Google Cloud viene visualizzato Stato del cluster: modifiche progressi. Fai clic su Mostra dettagli per visualizzare lo stato della risorsa. condizione di servizio e Messaggi di stato.

Interfaccia a riga di comando gcloud

Esegui questo comando per creare un pool di nodi:

gcloud container vmware node-pools create NODE_POOL_NAME \
  --cluster=USER_CLUSTER_NAME  \
  --project=FLEET_HOST_PROJECT_ID \
  --location=LOCATION \
  --image-type=IMAGE_TYPE  \
  --boot-disk-size=BOOT_DISK_SIZE \
  --cpus=vCPUS \
  --memory=MEMORY \
  --replicas=NODES

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 in in cui verrà creato il pool di nodi.

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

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

    • IMAGE_TYPE: il tipo di immagine del sistema operativo da eseguire sulle VM nel pool di nodi. Imposta una delle seguenti opzioni: ubuntu_containerd o cos.

    • BOOT_DISK_SIZE: le dimensioni del disco di avvio in gibibyte (GiB) per ogni nodo nel pool. Il valore minimo è 40 GiB.

    • vCPUs: il numero di vCPU per ogni nodo nella pool di nodi. Il numero minimo è 4.

    • MEMORY: la dimensione della memoria in mebibyte (MiB) per ogni nodo nel pool. Il minimo è 8192 MiB per nodo worker del cluster utente e il valore deve essere un multiplo di 4.

    • NODES: il numero di nodi nel pool di nodi. La minimo è 3.

    Ad esempio:

    gcloud container vmware node-pools create default-pool \
      --cluster=user-cluster-1  \
      --location=us-west1 \
      --image-type=ubuntu_containerd  \
      --boot-disk-size=40 \
      --cpus=8 \
      --memory=8192 \
      --replicas=5
    

    Facoltativamente, puoi specificare quanto segue:

    • --enable-load-balancer: pertinente solo per il bilanciatore del carico MetalLB. Se specificato, consente all'altoparlante MetalLB di funzionare sui nodi del pool. Deve essere abilitato almeno un pool di nodi per il bilanciatore del carico MetalLB.

    • --image=IMAGE: nome immagine sistema operativo in vCenter.

    • --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 applicate a ciascun nodo in piscina. 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: seguire per EFFECT: NoSchedule, PreferNoSchedule, NoExecute.

    Ad esempio:

    gcloud container vmware node-pools create default-pool \
        --cluster=user-cluster-1  \
        --location=us-west1 \
        --image-type=ubuntu_containerd  \
        --boot-disk-size=40 \
        --cpus=8 \
        --memory=8192 \
        --replicas=5 \
        --node-taints=key1=val1:NoSchedule,key2=val2:NoExecute
    

    Per informazioni su altri flag facoltativi, consulta il riferimento gcloud.

Aggiornamento di un pool di nodi

Quando aumenti il numero di repliche, Google Distributed Cloud aggiunge di nodi al cluster utente e quando diminuisci il numero di repliche, i nodi vengono rimossi. Modifica del numero di repliche per un pool di nodi senza interrompere i carichi di lavoro. Assicurati che gli indirizzi IP siano disponibili se aumenti il numero di repliche.

L'aggiornamento di qualsiasi altro campo del pool di nodi attiva aggiornamento in sequenza sul cluster. In un aggiornamento in sequenza, Google Distributed Cloud crea un nuovo nodo ed elimina un vecchio nodo. Questo processo si ripete finché tutti i vecchi nodi sono stati sostituiti con nuovi nodi. Questo processo non causa tempi di inattività, il cluster deve disporre di un indirizzo IP aggiuntivo da utilizzare durante l'aggiornamento.

Supponiamo che un pool di nodi abbia N nodi alla fine di un aggiornamento. Poi devi avere almeno N + 1 indirizzi IP disponibili per i nodi in quel pool. Ciò significa che se stai ridimensionando un cluster aggiungendo nodi a uno o più pool, deve avere almeno un indirizzo IP in più rispetto al numero totale di nodi che in tutti i pool di nodi del cluster al termine del ridimensionamento. Per ulteriori informazioni, vedi Verifica che sia disponibile un numero sufficiente di indirizzi IP.

Per aggiornare un pool di nodi su un cluster utente:

Gkectl

  1. Modifica i valori dei campi da cambiare nel nodePools del file di configurazione del cluster utente.

  2. Aggiorna il cluster:

    gkectl update cluster --kubeconfig ADMIN_CLUSTER_KUBECONFIG --config USER_CLUSTER_CONFIG
    

    Sostituisci quanto segue:

    • ADMIN_CLUSTER_KUBECONFIG con il percorso di kubeconfig per il cluster di amministrazione.

    • USER_CLUSTER_CONFIG con il percorso del cluster utente di configurazione del deployment.

Aggiorna osImageType utilizzato da un pool di nodi

Per aggiornare un pool di nodi in modo che utilizzi un altro osImageType, devi utilizzare lo dall'interfaccia a riga di comando. Per modificare osImageType utilizzato da un pool di nodi, aggiorna il parametro di configurazione del pool di nodi, come mostrato nell'esempio seguente, ed esegui gkectl update cluster.

nodePools:
- name: np-1
  cpus: 4
  memoryMB: 8192
  replicas: 3
  osImageType: ubuntu_containerd

Console

Utilizzando la console puoi aggiornare solo i seguenti campi:

  • Numero di repliche
  • Memoria
  • Numero di vCPU

Per aggiornare gli altri campi, utilizza gcloud CLI o gkectl.

  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 Visualizza dettagli nel riquadro Dettagli.

  4. Fai clic sulla scheda Nodi.

  5. Fai clic sul nome del pool di nodi che vuoi modificare.

  6. Fai clic su Modifica accanto al campo da modificare e fai clic su Fine.

  7. Fai clic su per tornare alla pagina precedente.

  8. Nella console Google Cloud viene visualizzato Stato del cluster: modifiche progressi. Fai clic su Mostra dettagli per visualizzare lo stato della risorsa. condizione di servizio e Messaggi di stato.

Interfaccia a riga di comando gcloud

  1. Facoltativamente, elenca i pool di nodi per ottenere il nome del pool di nodi da aggiornare:

    gcloud container vmware node-pools list \
      --cluster=USER_CLUSTER_NAME \
      --project=FLEET_HOST_PROJECT_ID \
      --location=LOCATION
    
  2. Esegui questo comando per aggiornare il pool di nodi:

    gcloud container vmware node-pools update NODE_POOL_NAME \
      --cluster=USER_CLUSTER_NAME \
      --project=FLEET_HOST_PROJECT_ID \
      --location=LOCATION \
      --ATTRIBUTE_TO_UPDATE \
      ...
    

    Sostituisci quanto segue:

    • NODE_POOL_NAME: il nome del pool di nodi da aggiornamento.

    • USER_CLUSTER_NAME: il nome del cluster utente che contiene il pool di nodi.

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

    • ATTRIBUTE_TO_UPDATE: uno o più flag da aggiornare attributi del pool di nodi. Ad esempio, per modificare il numero di vCPU nodi nel pool, esegui questo comando.

    gcloud container vmware node-pools update default-pool \
        --cluster=user-cluster-1  \
        --project=example-project-12345
        --location=us-west1 \
        --cpus=10 \
        --replicas=6
    

    Per informazioni sugli attributi del pool di nodi che puoi aggiornare, consulta il riferimento gcloud.

Verifica le modifiche

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

Gkectl

Esegui questo comando:

kubectl --kubeconfig USER_CLUSTER_KUBECONFIG get nodes -o wide

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

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 Visualizza dettagli nel riquadro Dettagli.

  4. Fai clic sulla scheda Nodi.

  5. Fai clic sul nome del pool di nodi che vuoi visualizzare.

Interfaccia a riga di comando gcloud

Esegui questo comando:

gcloud container vmware node-pools describe NODE_POOL_NAME \
  --cluster=USER_CLUSTER_NAME \
  --project=FLEET_HOST_PROJECT_ID \
  --location=LOCATION

Elimina un pool di nodi

Sebbene sia possibile eliminare pool di nodi, il cluster utente deve averne almeno uno pool di nodi. L'eliminazione di un pool di nodi provoca la rimozione immediata dei nodi del pool a prescindere dal fatto che questi nodi siano in esecuzione dei carichi di lavoro.

Per eliminare un pool di nodi da un cluster utente:

Gkectl

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

  2. Rimuovine la definizione dal nodePools del file di configurazione del cluster utente.

  3. Aggiorna il cluster:

    gkectl update cluster --kubeconfig ADMIN_CLUSTER_KUBECONFIG --config USER_CLUSTER_CONFIG
    

    Sostituisci quanto segue:

    • [ADMIN_CLUSTER_KUBECONFIG] con il percorso di kubeconfig per il cluster di amministrazione.

    • [USER_CLUSTER_CONFIG] con il percorso del cluster utente di configurazione del deployment.

Console

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

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

    Vai ai cluster GKE

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

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

  5. Fai clic sulla scheda Nodi.

  6. Fai clic sul nome del pool di nodi che vuoi eliminare.

  7. Fai clic su Elimina.

  8. Fai clic su per tornare alla pagina precedente.

  9. Nella console Google Cloud viene visualizzato Stato del cluster: modifiche progressi. Fai clic su Mostra dettagli per visualizzare lo stato della risorsa. condizione di servizio e Messaggi di stato.

Interfaccia a riga di comando gcloud

  1. Facoltativamente, elenca i pool di nodi per ottenere il nome del pool di nodi che da eliminare:

    gcloud container vmware node-pools list \
      --cluster=USER_CLUSTER_NAME \
      --project=FLEET_HOST_PROJECT_ID \
      --location=LOCATION
    
  2. Esegui questo comando per eliminare il pool di nodi:

    gcloud container vmware node-pools delete NODE_POOL_NAME \
      --cluster=USER_CLUSTER_NAME \
      --project=FLEET_HOST_PROJECT_ID \
      --location=LOCATION
    

    Sostituisci quanto segue:

    • NODE_POOL_NAME: il nome del pool di nodi da eliminare.

    • USER_CLUSTER_NAME: il nome del cluster utente che contiene il pool di nodi.

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

Risoluzione dei problemi

  • In generale, il comando gkectl update cluster fornisce specifiche quando non riesce. Se il comando ha esito positivo e non vedi i nodi, puoi risolvi i problemi con Diagnosticare i problemi del cluster guida.

  • È possibile che le risorse del cluster siano insufficienti, come la mancanza gli indirizzi IP disponibili durante la creazione o l'aggiornamento del pool di nodi. Consulta la sezione Ridimensionare un argomento cluster utente per informazioni dettagliate sulla verifica della disponibilità degli indirizzi IP.

  • Puoi anche consultare le informazioni generali Risoluzione dei problemi.

  • Non andrà avanti dopo le ore Creating node MachineDeployment(s) in user cluster….

    La creazione o l'aggiornamento dei pool di nodi nel cluster utente può richiedere un po' di tempo. Tuttavia, se il tempo di attesa è estremamente lungo e sospetti che qualcosa potrebbe non essere riuscito, puoi eseguire questi comandi:

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