Informazioni sui pool di nodi


Questa pagina spiega come funzionano i pool di nodi in Google Kubernetes Engine (GKE).

Per informazioni su come gestire i pool di nodi, vedi Aggiungere e gestire i pool di nodi.

Panoramica

Un pool di nodi è un gruppo di nodi all'interno di un cluster che hanno tutti la stessa configurazione. I pool di nodi utilizzano una specifica NodeConfig. Ogni nodo nel pool ha un'etichetta nodo Kubernetes, cloud.google.com/gke-nodepool, che ha come valore il nome del pool di nodi.

Quando crei un cluster, il numero di nodi e il tipo di nodi che hai specificato vengono utilizzati per creare il primo pool di nodi del cluster. Quindi, puoi aggiungere al cluster altri 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 cluster con SSD locali, una piattaforma CPU minima, VM spot, un'immagine del nodo specifica, diversi tipi di macchine o un'interfaccia di rete virtuale più efficiente.

I pool di nodi personalizzati sono utili quando è necessario pianificare pod che richiedono più risorse rispetto ad altri, ad esempio più memoria o più spazio su disco locale. Se hai bisogno di un maggiore controllo su dove 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; qualsiasi modifica alla configurazione interessa tutti i nodi al suo interno.

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. Puoi anche eseguire più versioni dei nodi Kubernetes su ciascun pool di nodi nel cluster, aggiornare ogni pool di nodi in modo indipendente e scegliere come target pool di nodi diversi per deployment specifici.

Deployment dei 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 del pod.

  • Puoi eseguire esplicitamente il deployment di un pod in uno specifico pool di nodi 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, vedi Deployment di un pod in un pool di nodi specifico.

  • Puoi specificare le richieste di risorse per i container. Il pod viene eseguito solo su nodi che soddisfano le richieste di risorse. Ad esempio, se la definizione del pod include un container che richiede quattro CPU, il servizio non seleziona i pod in esecuzione su nodi con due CPU.

Nodi in cluster multi-zona o a livello di regione

Se hai creato un cluster multizona o a livello di regione, tutti i pool di nodi vengono replicati automaticamente in quelle zone. Ogni nuovo pool di nodi viene creato automaticamente in quelle zone. Analogamente, le eventuali eliminazioni eliminano anche quei pool di nodi dalle zone aggiuntive.

Tieni presente che, a causa di questo effetto moltiplicativo, potrebbe essere consumata una quota maggiore della quota del progetto per una regione specifica durante la creazione dei pool di nodi.

Eliminazione dei pool di nodi

Quando elimini un pool di nodi, GKE svuota tutti i nodi al suo interno, eliminando e ripianificando tutti i pod. Il processo di svuotamento prevede che GKE elimini i pod su ciascun nodo nel pool di nodi. Ogni nodo in un pool di nodi viene svuotato eliminando i pod con un periodo di terminazione controllato assegnato pari a MAX_POD. MAX_POD è il numero massimo di terminationGracePeriodSeconds impostato sui pod pianificati sul nodo, con un limite di un'ora. Le impostazioni di PodDisruptionBudget non vengono rispettate durante l'eliminazione del pool di nodi.

Se i pod hanno selettori di nodi specifici, potrebbero rimanere in una condizione non pianificabile se nessun altro nodo del cluster soddisfa i criteri.

Quando un cluster viene eliminato, GKE non segue questo processo di terminazione graduale dei nodi svuotandoli. Se i carichi di lavoro in esecuzione su un cluster devono essere terminati in modo controllato, 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