Questa pagina spiega come funzionano i pool di nodi in Google Kubernetes Engine (GKE).
Per scoprire come gestire i pool di nodi, consulta Aggiunta e gestione dei pool di nodi.
Panoramica
Un pool di nodi è un gruppo di nodes all'interno di un cluster che hanno tutti
la stessa configurazione. I pool di nodi usano una specifica NodeConfig. Ogni nodo nel pool ha un'etichetta nodo Kubernetes, cloud.google.com/gke-nodepool
, il cui valore è il nome del pool.
Quando crei un cluster, il numero di nodi e il tipo di nodi che vengono utilizzate per creare il primo pool di nodi del cluster. Quindi puoi aggiungere al cluster ulteriori pool di nodi di dimensioni e tipi diversi. Tutti i nodi in un determinato pool di nodi sono identici tra loro.
Ad esempio, puoi creare un pool di nodi nel tuo cluster con SSD locali, una piattaforma CPU minima, VM Spot, un'immagine del nodo specifica, tipi di macchine diversi o un'interfaccia di rete virtuale più efficiente.
I pool di nodi personalizzati sono utili quando devi pianificare pod che richiedono più risorse di altri, come più memoria o più spazio su disco locale. Se hai bisogno di un maggiore controllo sulla posizione in cui vengono pianificati i pod, puoi utilizzare le incompatibilità dei nodi.
Puoi creare, eseguire l'upgrade ed eliminare i pool di nodi singolarmente senza influire sull'intero cluster. Non puoi configurare un singolo nodo in un pool di nodi; eventuali modifiche alla configurazione influiscono su tutti i nodi del pool di nodi.
Puoi ridimensionare i pool di nodi in un cluster aggiungendo o rimuovendo nodi.
Per impostazione predefinita, tutti i nuovi pool di nodi eseguono la stessa versione di Kubernetes del piano di controllo. È possibile eseguire l'upgrade manuale o l'upgrade automatico dei pool di nodi esistenti. Tu puoi anche eseguire più versioni dei nodi Kubernetes su ciascun pool di nodi aggiornare ogni pool di nodi in modo indipendente e scegliere come target pool di nodi diversi per deployment specifici.
Deployment di servizi in pool di nodi specifici
Quando definisci un servizio, puoi controllare indirettamente in quale pool di nodi viene eseguito il deployment. Il pool di nodi non dipende dalla configurazione del servizio, ma dalla configurazione il pod.
Puoi eseguire esplicitamente il deployment di un pod in un pool di nodi specifico impostando un
nodeSelector
nel manifest del pod. In questo modo viene forzata l'esecuzione di un pod solo sui nodi in quel pool di nodi. Per un esempio, consulta Eseguire il deployment di un pod in un pool di nodi specifico.Puoi specifica le richieste di risorse per i container. Il pod viene eseguito solo sui nodi che soddisfano le richieste di risorse. Ad esempio, se la definizione del pod include un contenitore che richiede quattro CPU, il servizio non seleziona i pod in esecuzione su nodi con due CPU.
Nodi in cluster multizonali o regionali
Se hai creato un cluster multi-zonale o regionale, tutti i pool di nodi vengono replicati automaticamente in queste zone. Qualsiasi nuovo pool di nodi viene creato automaticamente in quelle zone. Analogamente, eventuali eliminazioni eliminano anche questi pool di nodi dalle zone aggiuntive.
Tieni presente che, a causa di questo effetto moltiplicativo, potresti consumare una quantità maggiore di quota del progetto per una regione specifica durante la creazione pool di nodi.
Eliminazione dei pool di nodi
Quando elimini un pool di nodi, GKE svuota tutti i nodi del pool, eliminando e riprogrammando tutti i pod. Il processo di svuotamento comporta l'eliminazione di GKE
su ciascun nodo nel pool di nodi. Ogni nodo in un pool di nodi viene svuotato
eliminazione dei pod con un periodo di arresto controllato allocato di MAX_POD
.
MAX_POD
è il valore massimo
terminationGracePeriodSeconds
impostato sui pod pianificati sul nodo, con un limite di un'ora.
PodDisruptionBudget
non vengono rispettate durante l'eliminazione del pool di nodi.
Se i pod hanno selettori di nodi specifici, potrebbero rimanere in condizione non pianificabile se nessun altro nodo nel cluster soddisfa i criteri.
Quando un cluster viene eliminato, GKE non segue questa procedura di interruzioni graceful dei nodi svuotandoli. Se i carichi di lavoro in esecuzione su un
il cluster deve essere terminato correttamente, utilizza kubectl
drain
per ripulire i carichi di lavoro prima di eliminare il cluster.
Per eliminare un pool di nodi, consulta Eliminare un pool di nodi.
Passaggi successivi
- Scopri di più sull'architettura dei cluster in GKE.
- Scopri come aggiungere e gestire i pool di nodi.
- Scopri come eseguire il provisioning automatico dei nodi.