Aggiunta e gestione dei pool di nodi


Questa pagina mostra come aggiungere ed eseguire operazioni sui pool di nodi che eseguono i tuoi cluster Google Kubernetes Engine (GKE). Per scoprire 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 un altro pool di nodi è già in fase di creazione, aggiornamento o eliminazione.

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 quindi initialize gcloud CLI. Se hai già installato gcloud CLI, ottieni 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 pool di nodi da utilizzare al posto dell'account di servizio predefinito di Compute Engine. Per istruzioni su come creare un account di servizio con privilegi minimi, consulta Rafforzamento 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 possono 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 in 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 vengono visualizzati i dettagli del pool di nodi, ad esempio il tipo di macchina e la versione 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 è ancora stato 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:

  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 scoprire di più sull'utilizzo di Terraform, consulta Supporto 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 di uno specifico pool di nodi, 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.

Scala 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 orizzontalmente un pool di nodi modificando il numero di nodi al suo interno o scalare verticalmente un pool di nodi modificando la configurazione degli attributi della 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 all'interno di un cluster 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 ciascun 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 della macchina del nodo

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

Quando modifichi uno o più di questi attributi delle macchine, GKE aggiorna i nodi 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, potendo eseguire il rollback dei nodi originali in caso di errore della migrazione. Controlla 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 di attributo della macchina, altrimenti il comando non va a buon fine.

Sostituisci quanto segue:

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

Esegui l'upgrade di un pool di nodi

Per impostazione predefinita, è abilitato l'upgrade automatico 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 di disallineamento delle versioni di Kubernetes, che garantisce 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 upgrade di sovraccarico e upgrade blu/verde.

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

Durante l'upgrade di un nodo, GKE interrompe la pianificazione di nuovi pod al suo interno e tenta di pianificare i pod in esecuzione su altri nodi. Questo è simile ad altri eventi che ricreano il nodo, come l'abilitazione o la disabilitazione 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 con upgrade recente si registra con il piano di controllo, GKE contrassegna il nodo come pianificabile.

Le nuove istanze dei nodi eseguono la versione Kubernetes desiderata, oltre a:

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 ai singoli nodi utilizzando kubectl. Per evitare questo problema, 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: il 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 ulteriori informazioni su come specificare le versioni, consulta la sezione 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 da 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 esplicitamente il deployment di un pod in un pool di nodi specifico utilizzando un nodeSelector nel manifest del pod. nodeSelector pianifica i pod sui nodi con un'etichetta corrispondente.

Tutti i pool di nodi GKE hanno etichette con il 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 ulteriori informazioni, consulta Assegnazione di 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 viene comunque pianificato, anche se il vincolo non può essere soddisfatto. Per ulteriori informazioni, consulta Affinità dei nodi. Puoi anche specificare richieste di risorse per i container.

Eseguire il downgrade dei pool di nodi

Ad esempio, puoi eseguire il downgrade di un pool di nodi per mitigare un upgrade del 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 al fine di 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 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 ulteriori informazioni su come questo influisce sui carichi di lavoro, incluse le interazioni con i selettori dei 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 di registrazione dei nodi.

Passaggi successivi