Aggiunta e gestione dei pool di nodi


Questa pagina mostra come aggiungere ed eseguire operazioni sui pool di nodi in esecuzione sui cluster Google Kubernetes Engine (GKE). Per scoprire di più su come funzionano i pool di nodi, consulta Informazioni sui pool di nodi.

I cluster possono eseguire operazioni, come il provisioning automatico dei nodi, su più pool di nodi in parallelo. Puoi creare, aggiornare o eliminare manualmente un pool di nodi mentre è già in fase di creazione, aggiornamento o eliminazione di un altro pool di nodi.

Prima di iniziare

Prima di iniziare, assicurati di aver eseguito le seguenti attività:

  • Abilita l'API Google Kubernetes Engine.
  • Abilita l'API Google Kubernetes Engine
  • Se vuoi utilizzare Google Cloud CLI per questa attività, installa e initialize gcloud CLI. Se hai già installato gcloud CLI, scarica la versione più recente eseguendo gcloud components update.

Aggiungi un pool di nodi

Puoi aggiungere un nuovo pool di nodi a un cluster GKE Standard utilizzando gcloud CLI, la console Google Cloud o Terraform. GKE supporta anche il provisioning automatico dei nodi, che gestisce automaticamente i pool di nodi nel cluster in base ai requisiti di scalabilità.

Come best practice in entrambi i casi, ti consigliamo di creare e utilizzare un account di servizio Identity and Access Management (IAM) con privilegi minimi per i tuoi pool di nodi al posto dell'account di servizio predefinito di Compute Engine. Per istruzioni su come creare un account di servizio con privilegi minimi, consulta Protezione della sicurezza del cluster.

gcloud

Per creare un pool di nodi, esegui il comando gcloud container node-pools create:

gcloud container node-pools create POOL_NAME \
    --cluster CLUSTER_NAME \
    --service-account SERVICE_ACCOUNT

Sostituisci quanto segue:

  • POOL_NAME: il nome del nuovo pool di nodi.
  • CLUSTER_NAME: il nome del cluster esistente.
  • SERVICE_ACCOUNT: il nome dell'account di servizio IAM che i nodi dovranno utilizzare. Se omesso, il pool di nodi utilizza l'account di servizio predefinito di Compute Engine.
  • Per eseguire il provisioning dei nodi tramite indirizzi IP privati, aggiungi il flag --enable-private-nodes. Puoi utilizzare questo flag nei cluster pubblici che utilizzano Private Service Connect. Per verificare se il cluster utilizza Private Service Connect, consulta Cluster pubblici con Private Service Connect.

Per un elenco completo dei flag facoltativi che puoi specificare, consulta la documentazione di gcloud container node-pools create.

L'output è simile al seguente:

Creating node pool POOL_NAME...done.
Created [https://container.googleapis.com/v1/projects/PROJECT_ID/zones/us-central1/clusters/CLUSTER_NAME/nodePools/POOL_NAME].
NAME: POOL_NAME
MACHINE_TYPE: e2-medium
DISK_SIZE_GB: 100
NODE_VERSION: 1.21.5-gke.1302

In questo output, vedrai i dettagli sul pool di nodi, come il tipo di macchina e la versione di GKE in esecuzione sui nodi.

A volte, il pool di nodi viene creato correttamente, ma il comando gcloud scade invece di segnalare lo stato dal server. Per controllare lo stato di tutti i pool di nodi, inclusi quelli di cui non è stato ancora eseguito il provisioning completo, utilizza il comando seguente:

gcloud container node-pools list --cluster CLUSTER_NAME

Console

Per aggiungere un pool di nodi a un cluster esistente, segui questi passaggi:

  1. Vai alla pagina Google Kubernetes Engine nella console Google Cloud.

    Vai a Google Kubernetes Engine

  2. Nell'elenco dei cluster, fai clic sul nome del cluster da modificare.

  3. Fai clic su Aggiungi pool di nodi.

  4. Configura il pool di nodi.

  5. Nel menu di navigazione, fai clic su Sicurezza.

  6. Nel menu a discesa Account di servizio, seleziona l'account di servizio IAM che verrà utilizzato dal pool di nodi. Per impostazione predefinita, il pool di nodi utilizza l'account di servizio predefinito di Compute Engine.

  7. Fai clic su Crea per aggiungere il pool di nodi.

Terraform

Per aggiungere un pool di nodi a un cluster esistente utilizzando Terraform, fai riferimento all'esempio seguente:

resource "google_container_node_pool" "default" {
  name    = "gke-standard-regional-node-pool"
  cluster = google_container_cluster.default.name

  node_config {
    service_account = google_service_account.default.email
  }
}

Per saperne di più sull'utilizzo di Terraform, consulta il documento sul supporto di Terraform per GKE.

Visualizza i pool di nodi in un cluster

gcloud

Per elencare tutti i pool di nodi di un cluster, esegui il comando gcloud container node-pools list:

gcloud container node-pools list --cluster CLUSTER_NAME

Per visualizzare i dettagli su un pool di nodi specifico, esegui il comando gcloud container node-pools describe:

gcloud container node-pools describe POOL_NAME \
    --cluster CLUSTER_NAME

Sostituisci quanto segue:

  • CLUSTER_NAME: il nome del cluster.
  • POOL_NAME: il nome del pool di nodi da visualizzare.

Console

Per visualizzare i pool di nodi per un cluster, segui questi passaggi:

  1. Vai alla pagina Google Kubernetes Engine nella console Google Cloud.

    Vai a Google Kubernetes Engine

  2. Nell'elenco dei cluster, fai clic sul nome del cluster.

  3. Fai clic sulla scheda Nodi.

  4. In Pool di nodi, fai clic sul nome del pool di nodi che vuoi visualizzare.

Scalare un pool di nodi

Puoi fare lo scale up o lo scale down dei tuoi pool di nodi per ottimizzare prestazioni e costi. Con i pool di nodi GKE Standard, puoi scalare un pool di nodi orizzontalmente modificando il numero di nodi nel pool di nodi o scalare un pool di nodi in verticale modificando la configurazione degli attributi di macchina dei nodi.

Scala orizzontalmente modificando il numero di nodi

gcloud

Per ridimensionare i pool di nodi di un cluster, esegui il comando gcloud container clusters resize:

gcloud container clusters resize CLUSTER_NAME \
    --node-pool POOL_NAME \
    --num-nodes NUM_NODES

Sostituisci quanto segue:

  • CLUSTER_NAME: il nome del cluster da ridimensionare.
  • POOL_NAME: il nome del pool di nodi da ridimensionare.
  • NUM_NODES: il numero di nodi nel pool in un cluster a livello di zona. Se utilizzi cluster multi-zona o a livello di regione, NUM_NODES è il numero di nodi per ogni zona in cui si trova il pool di nodi.

Ripeti questo comando per ogni pool di nodi. Se il cluster ha un solo pool di nodi, ometti il flag --node-pool.

Console

Per ridimensionare i pool di nodi di un cluster, segui questi passaggi:

  1. Vai alla pagina Google Kubernetes Engine nella console Google Cloud.

    Vai a Google Kubernetes Engine

  2. Nell'elenco dei cluster, fai clic sul nome del cluster da modificare.

  3. Fai clic sulla scheda Nodi.

  4. Nella sezione Pool di nodi, fai clic sul nome del pool di nodi che vuoi ridimensionare.

  5. Fai clic su Ridimensiona.

  6. Nel campo Numero di nodi, inserisci il numero di nodi che vuoi nel pool di nodi, quindi fai clic su Ridimensiona.

  7. Ripeti l'operazione per ogni pool di nodi in base alle tue esigenze.

Scala verticalmente modificando gli attributi delle macchine dei nodi

Puoi modificare il tipo di macchina configurata, il tipo di disco e le dimensioni del disco del pool di nodi.

Quando modifichi uno o più di questi attributi della macchina, GKE aggiorna i nodi in base alla nuova configurazione utilizzando la strategia di upgrade configurata per il pool di nodi. Se configuri la strategia di upgrade blu/verde, puoi eseguire la migrazione dei carichi di lavoro dai nodi originali ai nuovi nodi, con la possibilità di eseguire il rollback dei nodi originali in caso di errore della migrazione. Ispeziona le impostazioni di upgrade del pool di nodi per assicurarti che la strategia configurata sia la modalità di aggiornamento dei nodi.

Aggiorna almeno uno degli attributi della macchina evidenziati nel seguente comando:

gcloud container node-pools update POOL_NAME \
    --cluster CLUSTER_NAME \
    --machine-type MACHINE_TYPE \
    --disk-type DISK_TYPE \
    --disk-size DISK_SIZE

Ometti eventuali flag per gli attributi della macchina che non vuoi modificare. Tuttavia, devi utilizzare almeno un flag dell'attributo della macchina, altrimenti il comando ha esito negativo.

Sostituisci quanto segue:

  • POOL_NAME: il nome del pool di nodi da ridimensionare.
  • CLUSTER_NAME: il nome del cluster da ridimensionare.
  • MACHINE_TYPE: il tipo di macchina da utilizzare per i nodi. Per saperne di più, vedi gcloud container node-pools update.
  • DISK_TYPE: il tipo di disco di avvio della VM del nodo, deve essere pd-standard, pd-ssd o pd-balanced.
  • DISK_SIZE: la dimensione dei dischi di avvio delle VM dei nodi in GB. Il valore predefinito è 100 GB.

Esegui l'upgrade di un pool di nodi

Per impostazione predefinita, l'upgrade automatico è abilitato per i nodi di un cluster e ti consigliamo di non disabilitarlo. Gli upgrade automatici dei nodi assicurano che il piano di controllo e la versione dei nodi del cluster rimangano sincronizzati e conformi al criterio per il disallineamento delle versioni di Kubernetes, garantendo che i piani di controllo siano compatibili con nodi fino a due versioni secondarie precedenti al piano di controllo. Ad esempio, i piani di controllo Kubernetes 1.29 sono compatibili con i nodi Kubernetes 1.27.

Con gli upgrade dei pool di nodi GKE, puoi scegliere tra due strategie di upgrade configurabili, ovvero gli upgrade di picco e gli upgrade blu/verdi.

Scegli una strategia e utilizza i parametri per ottimizzarla in base alle esigenze del tuo ambiente cluster.

Durante l'upgrade di un nodo, GKE smette di pianificare nuovi pod e tenta di pianificare i pod in esecuzione su altri nodi. È simile ad altri eventi che ricreano il nodo, come l'abilitazione o la disattivazione di una funzionalità nel pool di nodi.

L'upgrade è completo solo quando tutti i nodi sono stati ricreati e il cluster si trova nello stato desiderato. Quando un nodo di cui è stato eseguito l'upgrade di recente si registra con il piano di controllo, GKE lo contrassegna come pianificabile.

Le nuove istanze di nodo eseguono la versione di Kubernetes desiderata, nonché:

Upgrade manuale di un pool di nodi

Puoi eseguire manualmente l'upgrade di una versione del pool di nodi in modo che corrisponda alla versione del piano di controllo o a una versione precedente ancora disponibile e compatibile con il piano di controllo. Puoi eseguire manualmente l'upgrade di più pool di nodi in parallelo, mentre GKE esegue automaticamente l'upgrade di un solo pool di nodi alla volta.

Quando esegui manualmente l'upgrade di un pool di nodi, GKE rimuove eventuali etichette aggiunte a singoli nodi utilizzando kubectl. Per evitare che questo accada, applica etichette ai pool di nodi.

Puoi eseguire manualmente l'upgrade dei pool di nodi a una versione compatibile con il piano di controllo utilizzando la console Google Cloud o Google Cloud CLI.

gcloud

Nei comandi di questa sezione vengono utilizzate le seguenti variabili:

  • CLUSTER_NAME: nome del cluster del pool di nodi di cui eseguire l'upgrade.
  • NODE_POOL_NAME: il nome del pool di nodi di cui eseguire l'upgrade.
  • VERSION: la versione di Kubernetes a cui viene eseguito l'upgrade dei nodi. Ad esempio, --cluster-version=1.7.2 o cluster-version=latest.

Esegui l'upgrade di un pool di nodi:

gcloud container clusters upgrade CLUSTER_NAME \
  --node-pool=NODE_POOL_NAME

Per specificare una versione diversa di GKE sui nodi, utilizza il flag facoltativo --cluster-version:

gcloud container clusters upgrade CLUSTER_NAME \
  --node-pool=NODE_POOL_NAME \
  --cluster-version VERSION

Per saperne di più su come specificare le versioni, consulta Controllo delle versioni.

Per saperne di più, consulta la documentazione di gcloud container clusters upgrade.

Console

Per eseguire l'upgrade di un pool di nodi utilizzando la console Google Cloud, segui questi passaggi:

  1. Vai alla pagina Google Kubernetes Engine nella console Google Cloud.

    Vai a Google Kubernetes Engine

  2. Accanto al cluster che vuoi modificare, fai clic su Azioni e poi su Modifica.

  3. Nella pagina Dettagli cluster, fai clic sulla scheda Nodi.

  4. Nella sezione Pool di nodi, fai clic sul nome del pool di nodi di cui vuoi eseguire l'upgrade.

  5. Fai clic su Modifica.

  6. Fai clic su Cambia in Versione nodo.

  7. Seleziona la versione che ti interessa dall'elenco a discesa Versione nodo, poi fai clic su Cambia.

Esegui il deployment di un pod in un pool di nodi specifico

Puoi eseguire il deployment di un pod in modo esplicito in un pool di nodi specifico utilizzando un nodeSelector nel manifest del pod. nodeSelector pianifica i pod in nodi con un'etichetta corrispondente.

Tutti i pool di nodi GKE hanno etichette nel seguente formato: cloud.google.com/gke-nodepool: POOL_NAME. Aggiungi questa etichetta al campo nodeSelector nel pod come mostrato nell'esempio seguente:

apiVersion: v1
kind: Pod
metadata:
  name: nginx
  labels:
    env: test
spec:
  containers:
  - name: nginx
    image: nginx
    imagePullPolicy: IfNotPresent
  nodeSelector:
    cloud.google.com/gke-nodepool: POOL_NAME

Per maggiori informazioni, consulta Assegnare pod ai nodi.

In alternativa al selettore dei nodi, puoi utilizzare l'affinità dei nodi. Utilizza l'affinità nodo se vuoi una regola"soft" in cui il pod tenta di soddisfare il vincolo, ma è comunque pianificata anche se il vincolo non può essere soddisfatto. Per ulteriori informazioni, consulta Affinità dei nodi. Puoi anche specificare richieste di risorse per i container.

Esegui il downgrade dei pool di nodi

Puoi eseguire il downgrade di un pool di nodi, ad esempio, per limitare l'upgrade di un pool di nodi non riuscito. Esamina le limitazioni prima di eseguire il downgrade di un pool di nodi.

  1. Imposta un'esclusione di manutenzione per il cluster per impedire l'upgrade automatico del pool di nodi da parte di GKE dopo il downgrade.
  2. Per eseguire il downgrade di un pool di nodi, specifica una versione precedente seguendo le istruzioni riportate per eseguire l'upgrade manuale di un pool di nodi.

Elimina un pool di nodi

L'eliminazione di un pool di nodi elimina i nodi e tutti i carichi di lavoro in esecuzione, non rispettando le impostazioni di PodDisruptionBudget. Per scoprire di più su come questo influisce sui carichi di lavoro, incluse le interazioni con i selettori di nodi, consulta Eliminazione dei pool di nodi.

gcloud

Per eliminare un pool di nodi, esegui il comando gcloud container node-pools delete:

gcloud container node-pools delete POOL_NAME \
    --cluster CLUSTER_NAME

Console

Per eliminare un pool di nodi, segui questi passaggi:

  1. Vai alla pagina Google Kubernetes Engine nella console Google Cloud.

    Vai a Google Kubernetes Engine

  2. Nell'elenco dei cluster, fai clic sul nome del cluster da modificare.

  3. Fai clic sulla scheda Nodi.

  4. Nella sezione Pool di nodi, fai clic su accanto al pool di nodi che vuoi eliminare.

  5. Quando ti viene richiesto di confermare, fai clic su Elimina.

Risolvere i problemi

Per informazioni sulla risoluzione dei problemi, consulta Risolvere i problemi relativi ai pool di nodi standard e Risolvere i problemi relativi alla registrazione dei nodi.

Passaggi successivi