Informazioni sul gestore della scalabilità automatica dei cluster

Questo documento descrive il gestore della scalabilità automatica del cluster, che controlla automaticamente le dimensioni dei pool di nodi. Il gestore della scalabilità automatica del cluster viene attivato quando specifichi i valori minimo e massimo per il numero di nodi in un pool di nodi. Specifichi questi valori quando crei un pool di nodi o aggiorni un pool di nodi.

GKE su AWS utilizza lo strumento di scalabilità automatica dei cluster Kubernetes open source.

Scalare automaticamente un pool di nodi

Il gestore della scalabilità automatica dei cluster ridimensiona automaticamente il numero di nodi in un determinato pool di nodi, in base alle esigenze dei tuoi carichi di lavoro. Non è necessario aggiungere o rimuovere manualmente i nodi o eseguire un provisioning eccessivo dei pool di nodi. Invece, devi specificare una dimensione minima e una dimensione massima per il pool di nodi, il resto è automatico.

Se le risorse devono essere eliminate o spostate durante la scalabilità automatica del cluster, i tuoi workload potrebbero subire interruzioni temporanee. Ad esempio, se il tuo workload è costituito da un controller con una singola replica, il pod di questa replica potrebbe essere ripianificato su un nodo diverso se il nodo attuale viene eliminato. Per questo motivo, devi progettare i carichi di lavoro in modo che tollerino potenziali interruzioni o assicurarti che i pod critici non vengano interrotti.

Come funziona il gestore della scalabilità automatica dei cluster

Il gestore della scalabilità automatica dei cluster funziona per pool di nodi. Quando utilizzi il gestore della scalabilità automatica dei cluster per configurare un pool di nodi, specifichi una dimensione minima e massima per il pool di nodi. Puoi modificare le dimensioni minime e massime quando crei un node pool o aggiorni un node pool.

Il gestore della scalabilità automatica dei cluster aumenta o diminuisce automaticamente le dimensioni del pool di nodi in base alle richieste di risorse (anziché all'utilizzo effettivo delle risorse) nel pool di nodi. Il gestore della scalabilità automatica del cluster aggiunge nodi se gli oggetti Pod non sono pianificabili e non c'è capacità sufficiente nel pool di nodi per soddisfare le richieste.

Il gestore della scalabilità automatica del cluster rimuove anche i nodi se sono sottoutilizzati e tutti gli oggetti Pod possono essere pianificati su un numero inferiore di nodi. Se non è possibile svuotare normalmente il nodo dopo 10 minuti, il nodo viene terminato forzatamente. Questo periodo non è configurabile.

Se un pod richiede risorse insufficienti (ad esempio, se i valori predefiniti non sono sufficienti), il gestore della scalabilità automatica del cluster non corregge la situazione. Puoi contribuire a garantire che il gestore della scalabilità automatica del cluster funzioni nel modo più preciso possibile creando richieste di risorse adeguate per tutti i tuoi carichi di lavoro. Per ulteriori informazioni, vedi Gestione delle risorse per i container.

Annotazioni dei pod e comportamento di scalabilità automatica del cluster

Il gestore della scalabilità automatica del cluster prende in considerazione determinate annotazioni dei pod quando prende decisioni di scalabilità. Ad esempio, il gestore della scalabilità automatica del cluster supporta annotazioni dei pod come "cluster-autoscaler.kubernetes.io/safe-to-evict": "false". Questa annotazione, se impostata su "false", impedisce la rimozione del nodo che ospita il pod durante un evento di scale down. Comprendere e utilizzare queste annotazioni può aiutarti a ottimizzare il comportamento dello scalatore automatico per soddisfare i requisiti del tuo workload.

Per ulteriori informazioni sulle annotazioni dei pod e sui loro effetti sul gestore della scalabilità automatica del cluster, consulta le seguenti risorse:

Criteri operativi

Il gestore della scalabilità automatica dei cluster fa le seguenti ipotesi quando ridimensiona un pool di nodi:

  • Tutti gli oggetti pod replicati possono essere riavviati su un altro nodo, causando possibilmente una breve interruzione. Se il tuo workload non tollera interruzioni, configura il workload in modo che venga eseguito su un pool di nodi con la scalabilità automatica disabilitata. Per ulteriori informazioni, consulta Controllare la pianificazione con i taint dei nodi.
  • Il gestore della scalabilità automatica del cluster può ignorare qualsiasi operazione di gestione manuale dei nodi che esegui.
  • Tutti i nodi di un singolo pool di nodi hanno lo stesso insieme di etichette.
  • Il gestore della scalabilità automatica del cluster seleziona un gruppo di nodi con la CPU meno inattiva o la memoria inutilizzata dopo lo scale up. Questo comportamento influisce sui node pool di cui viene aumentato lo scale up se hai nodi di dimensioni diverse (ad esempio nodi con CPU elevata o memoria elevata) nello stesso cluster.

Dimensione minima e massima del node pool

Puoi specificare le dimensioni minime e massime per ogni pool di nodi nel cluster con i flag min-nodes e max-nodes. Per disattivare la scalabilità automatica, imposta min-nodes e max-nodes sullo stesso numero. Il gestore della scalabilità automatica del cluster prende decisioni di scalabilità entro questi limiti di dimensione.

Quando imposti la dimensione massima dei node pool, assicurati che sia sufficiente per eseguire tutti i carichi di lavoro. Se i pool di nodi nel cluster non hanno memoria e CPU sufficienti per eseguire tutti i carichi di lavoro, potrebbero verificarsi interruzioni.

Utilizzare un PodDisruptionBudget per proteggere i carichi di lavoro

Puoi configurare GKE su AWS per proteggere dai problemi dei workload con un PodDisruptionBudget. Quando crei un PodDisruptionBudget, specifichi il numero minimo di repliche di pod che devono essere disponibili o il numero massimo di repliche di pod che possono essere non disponibili in un dato momento. Per ulteriori informazioni, consulta Specifica di un budget di interruzione per l'applicazione.

Scalare da zero nodi

A partire dalle seguenti versioni di GKE su AWS, il gestore della scalabilità automatica dei cluster supporta lo scale up dei node pool da zero nodi:

  • Versione 1.29 e successive
  • Versioni 1.28 dalla 1.28.8-gke.800 e successive
  • Versioni 1.27 dalla 1.27.12-gke.800 e successive

Se utilizzi una versione precedente, devi eseguire l'upgrade del cluster a una di queste versioni per utilizzare questa funzionalità. Per abilitare questa funzionalità per i cluster esistenti, aggiorna il cluster a una versione supportata ed esegui un aggiornamento in sequenza dei node pool aggiornando la versione di Kubernetes. Per maggiori informazioni sull'aggiornamento dei node pool, consulta Aggiornare un node pool.

Il gestore della scalabilità automatica dei cluster rispetta le etichette e i taint definiti nei pool di nodi quando prende decisioni di scalabilità, anche quando non sono disponibili nodi di riferimento. GKE su AWS imposta automaticamente i tag di etichetta e taint necessari nel gruppo di scalabilità automatica AWS sottostante del pool di nodi. Per saperne di più su questi tag, consulta la sezione Configurazione del rilevamento automatico della pagina GitHub che descrive la configurazione dello scalatore automatico del cluster per AWS.

Impostando questi tag di etichetta e taint, GKE su AWS consente allo strumento di scalabilità automatica del cluster di creare modelli di nodi accurati. I modelli di nodi sono rappresentazioni virtuali dei nodi che includono la configurazione, le etichette e i taint corretti, anche quando non sono presenti nodi fisici nepool di nodiol. Grazie a questi modelli di nodi accurati, il gestore della scalabilità automatica del cluster può prendere decisioni di scale up corrette.

Quando configuri i taint nei pool di nodi, tieni presente che i gruppi di scalabilità automatica AWS hanno una limitazione: se applichi più taint con la stessa chiave, ma con combinazioni di valori ed effetti diversi, il gestore della scalabilità automatica del cluster prende in considerazione solo l'ultimo taint applicato con la chiave duplicata.

Ulteriori informazioni

Per scoprire di più sul gestore della scalabilità automatica dei cluster e su come evitare interruzioni, consulta le seguenti risorse:

Passaggi successivi