Questa pagina spiega come funzionano i pool di nodi in Google Kubernetes Engine (GKE). Un pool di nodi è un gruppo di nodi all'interno di un cluster che hanno tutti la stessa configurazione. In modalità GKE Standard, puoi scegliere tra una serie di opzioni per i tuoi pool di nodi per soddisfare le esigenze del tuo carico di lavoro. Se scelgo di utilizzare Autopilot, non è necessario configurare i pool di nodi: GKE gestisce i nodi per te.
Per scoprire di più sulla creazione di cluster in modalità standard, consulta Creare un cluster regionale e Creare un cluster zonale. Per scoprire come gestire i node pool nei cluster standard esistenti, consulta Aggiungere e gestire i node pool.
Panoramica
Un pool di nodi è un gruppo di nodi 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 di nodi.
Quando crei un cluster in modalità standard, il numero e il tipo di nodi specificati vengono utilizzati per creare il primo pool di nodi del cluster.
Per impostazione predefinita, questo primo pool di nodi (chiamato pool di nodi predefinito) è costituito da tre nodi in ciascuna delle zone di calcolo del cluster, con l'immagine di nodo cos_containerd
predefinita e un tipo di macchina generico. Puoi specificare una serie di proprietà per il pool di nodi, a seconda dei requisiti del carico di lavoro. Ad esempio, potresti creare un pool di nodi nel tuo cluster con unità SSD locali, una piattaforma CPU minima, VM Spot, un'immagine node diversa, tipi di macchine diversi o un'interfaccia di rete virtuale più efficiente.
Puoi quindi aggiungere al cluster ulteriori pool di nodi di dimensioni e tipi diversi. Tutti i nodi in un dato pool di nodi sono identici tra loro.
I pool di nodi personalizzati sono utili quando devi pianificare pod che richiedono più risorse di altri, ad esempio 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 node pool 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 node pool 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. Puoi anche eseguire più versioni dei nodi Kubernetes su ogni node pool nel tuo cluster, aggiornare ogni node pool in modo indipendente e scegliere come target pool di nodi diversi per implementazioni specifiche.
Eseguire il deployment di servizi in pool di nodi specifici
Quando definisci un servizio, puoi controllare indirettamente il pool di nodi in cui viene eseguito il deployment. Il pool di nodi non dipende dalla configurazione del servizio, ma dalla configurazione del pod.
Puoi eseguire il deployment esplicito di un pod in un pool di nodi specifico impostando un valore
nodeSelector
nel manifest del pod. In questo modo, un pod viene eseguito solo sui nodi del pool di nodi. Per un esempio, consulta Eseguire il deployment di un pod in un pool di nodi specifico.Puoi specificare le richieste di risorse per i contenitori. 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 queste zone. Analogamente, eventuali eliminazioni eliminano anche questi pool di nodi dalle zone aggiuntive.
Tieni presente che, a causa di questo effetto moltiplicativo, la quota del progetto per una regione specifica potrebbe essere consumata in misura maggiore durante la creazione dei pool di nodi.
Eliminazione dei node pool
Quando elimini un pool di nodi, GKE svuota tutti i nodi del pool, eliminando e riprogrammando tutti i pod. Il processo di svuotamento prevede che GKE elimini i pod su ogni nodo del pool di nodi. Ogni nodo in un pool di nodi viene svuotato eliminando i 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
le impostazioni non vengono rispettate durante l'eliminazione del pool di nodi.
Se i pod hanno selettori di nodi specifici, potrebbero rimanere in una condizione non programmabile se nessun altro nodo del cluster soddisfa i criteri.
Quando un cluster viene eliminato, GKE non segue questa procedura di interruzioni graceful dei nodi svuotandoli. Se i workload in esecuzione su un cluster devono essere terminati in modo corretto, utilizza kubectl
drain
per ripulire i workload prima di eliminare il cluster.
Per eliminare un pool di nodi, consulta Eliminare un node pool.
Passaggi successivi
- Scopri di più sull'architettura del cluster in GKE.
- Scopri come eseguire il provisioning automatico dei nodi.