Aggiunta e gestione dei pool di nodi


Questa pagina mostra come aggiungere ed eseguire operazioni sui pool di nodi che eseguono Google Kubernetes Engine (GKE) Standard cluster. Per apprendere su come funzionano i pool di nodi, consulta Informazioni sui nodi piscine.

I cluster possono eseguire operazioni, come il provisioning automatico dei nodi, su 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.

Queste istruzioni non si applicano ai cluster Autopilot, in cui GKE gestisce i nodi e non sono presenti pool di nodi da gestire. Per scoprire di più, consulta la panoramica di Autopilot.

Prima di iniziare

Prima di iniziare, assicurati di aver eseguito le seguenti operazioni:

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

Aggiungi un pool di nodi a un cluster standard

Puoi aggiungere un nuovo pool di nodi a un cluster GKE Standard utilizzando l'interfaccia a riga di comando gcloud, 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 IAM (Gestione di identità e accessi) con privilegi minimi per i tuoi 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 del ruolo IAM l'account di servizio desiderato da utilizzare per i nodi. 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 vengono visualizzati i dettagli del pool di nodi, ad esempio la macchina e la versione GKE in esecuzione sui nodi.

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

gcloud container node-pools list --cluster CLUSTER_NAME

Console

Per aggiungere un pool di nodi a un cluster Standard esistente, esegui la seguenti 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 standard 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 IAM l'account di servizio che il pool di nodi potrà utilizzare. Per impostazione predefinita, il pool di nodi utilizza Account di servizio predefinito Compute Engine.

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

Terraform

Per aggiungere un pool di nodi a un cluster standard esistente utilizzando Terraform, consulta il seguente esempio:

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 Assistenza di Terraform per GKE.

Visualizza i pool di nodi in un cluster standard

gcloud

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

gcloud container node-pools list --cluster CLUSTER_NAME

Per visualizzare i dettagli di 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 standard, esegui queste operazioni: 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 Standard.

  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 un pool di nodi orizzontalmente modificando il numero di nodi nel nodo o scalare verticalmente un pool di nodi modificando la configurazione degli attributi di macchina dei nodi.

Eseguire la scalabilità orizzontale 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 di cui modificare le dimensioni.
  • POOL_NAME: il nome del pool di nodi di cui vuoi modificare le dimensioni.
  • NUM_NODES: il numero di nodi nel pool in un cluster zonale. Se utilizzi cluster multi-zonali o regionali, 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 nodo pool, 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 standard 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 in il pool di nodi e 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 il disco dimensioni.

Quando modifichi uno o più di questi attributi della macchina, GKE aggiorna i nodi alla nuova configurazione utilizzando la strategia di upgrade configurata per il pool di nodi. Se configuri la strategia di upgrade blue-green, puoi eseguire la migrazione dei carichi di lavoro dai nodi originali ai nuovi nodi, avendo al contempo la possibilità di eseguire il rollback dei nodi originali in caso di fallimento della migrazione. Esamina le impostazioni di upgrade del pool di nodi per assicurarti che la strategia configurata sia quella in base alla quale vuoi aggiornare i nodi.

Aggiorna almeno uno degli attributi della macchina evidenziati nei seguenti :

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

Sostituisci quanto segue:

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

Esegui la migrazione dei carichi di lavoro tra pool di nodi

Se vuoi eseguire la migrazione di carichi di lavoro tra un pool di nodi e un altro nodo segui le istruzioni per eseguire la migrazione dei carichi di lavoro tra nodi piscine. Ad esempio, puoi utilizzare queste istruzioni se stai sostituendo un nodo esistente pool con un nuovo pool di nodi e vuoi assicurarti che i carichi di lavoro vengano spostati nuovi nodi rispetto a quelli precedenti.

Eseguire l'upgrade di un pool di nodi

Per impostazione predefinita, i nodi di un cluster upgrade automatico è attivata ed è consigliabile non disattivare . Gli upgrade automatici dei nodi assicurano che la versione del piano di controllo e del nodo del cluster rimangano sincronizzate e in conformità con le norme relative al disallineamento delle versioni di Kubernetes, che garantiscono che i piani di controllo siano compatibili con i nodi fino a due versioni secondarie precedenti rispetto 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 sovraccarico e gli upgrade blue-green.

Scegli una strategia e usa i parametri per mettere a punto la strategia in base alle tue esigenze in base alle esigenze dell'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. Questo è in modo simile ad altri eventi che ricreano il nodo, come l'abilitazione o la disabilitazione di un sul pool di nodi.

L'upgrade è completo solo quando tutti i nodi sono stati ricreati e il cluster è nello stato desiderato. Quando un nodo con upgrade appena eseguito 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 aggiunti 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: il nome del cluster del nodo di cui eseguire l'upgrade.
  • NODE_POOL_NAME: il nome del pool di nodi da utilizzare con upgrade eseguito.
  • 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 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: 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 vuoi eseguire l'upgrade.

  5. Fai clic su Modifica.

  6. Fai clic su Cambia in Versione nodo.

  7. Seleziona la versione desiderata dall'elenco a discesa Versione nodo, quindi 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 una nodeSelector nel manifest del pod. nodeSelector pianifica i pod in 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 in 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 dei pod ai nodi.

In alternativa al selettore di nodi, puoi utilizzare l'affinità dei nodi. Utilizza l'affinità nodo se vuoi un approccio "soft" in cui il pod tenta di soddisfare il vincolo, ma viene comunque pianificato anche se del vincolo non può essere soddisfatto. Per ulteriori informazioni, vedi Affinità nodo. Puoi anche specifica le richieste di risorse per i container.

Eseguire il downgrade di un pool di nodi

Puoi eseguire il downgrade di un pool di nodi, ad esempio per attenuare un upgrade del pool di nodi non riuscito. Esamina il limitazioni prima di eseguire il downgrade di un pool di nodi.

  1. Impostare un'esclusione per la manutenzione del cluster per impedire l'upgrade automatico del pool di nodi 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 PodDisruptionBudget impostazioni. Per scoprire di più su come questo influisce sui tuoi carichi di lavoro, incluse le interazioni con i selettori di nodi, consulta l'articolo Eliminare i pool di nodi.

gcloud

Per eliminare un pool di nodi, esegui 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 Standard che che si desidera 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.

Risoluzione dei problemi

Per informazioni sulla risoluzione dei problemi, vedi Risolvere i problemi dei pool di nodi standard e Risolvi i problemi di registrazione dei nodi.

Passaggi successivi