Questo documento descrive il gestore della scalabilità automatica dei cluster, che controlla automaticamente le dimensioni dei pool di nodi. Il gestore della scalabilità automatica del cluster viene attivato quando specifichi valori minimi e massimi per il numero di nodi in un pool di nodi. Specifica questi valori quando crei un pool di nodi o aggiorni un pool di nodi.
GKE su AWS utilizza l'autoscalabilità del cluster Kubernetes open source.
Scalabilità automatica di 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 richieste dei tuoi carichi di lavoro. Non è necessario aggiungere o rimuovere manualmente i nodi o eseguire un provisioning eccessivo dei pool di nodi. Devi invece specificare una dimensione minima e massima per il pool di nodi, il resto è automatico.
Se le risorse devono essere eliminate o spostate durante la scalabilità automatica del cluster, i workload potrebbero subire interruzioni transitorie. Ad esempio, se il tuo carico di lavoro consiste in un controller con una singola replica, il pod di questa replica potrebbe essere ripianificato su un altro nodo se il nodo corrente viene eliminato. Per questo motivo, devi progettare i carichi di lavoro in modo da tollerare potenziali interruzioni o garantire che i pod critici non vengano interrotti.
sui tuoi nodi, ad esempio la possibilità di applicare patch e aggiornarsi autonomamente. Componenti aggiuntivi, comeantrea
, coredns
e konnectivity-agent
, hanno scalari automatici specifici con autorizzazioni per aumentare o diminuire il livello di scalabilità del componente in base alle esigenze.
Come funziona il gestore della scalabilità automatica dei cluster
Il gestore della scalabilità automatica dei cluster funziona in base al pool di nodi. Quando utilizzi il gestore della scalabilità automatica del cluster per configurare un pool di nodi, specifica le dimensioni minime e massime per il pool di nodi. Puoi modificare le dimensioni minime e massime quando crei un pool di nodi o ne aggiorni uno.
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 dei cluster aggiunge nodi se gli oggetti pod non sono pianificabili e il pool di nodi non dispone di capacità sufficiente per soddisfare le richieste.
Il gestore della scalabilità automatica dei 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 eseguire il ritiro graduale del nodo dopo 10 minuti, il nodo viene terminato forzatamente. Questo periodo non è configurabile.
Se un pod richiede risorse troppo poche (ad esempio se quelle predefinite sono insufficienti), il gestore della scalabilità automatica del cluster non corregge la situazione. Puoi contribuire a garantire che il gestore della scalabilità automatica dei cluster funzioni nel modo più preciso possibile creando richieste di risorse adeguate per tutti i tuoi carichi di lavoro. Per ulteriori informazioni, consulta Gestire le risorse per i contenitori.
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 sulla scalabilità. Ad esempio, il gestore della scalabilità automatica del cluster supporta le 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 riduzione. Comprendere e utilizzare queste annotazioni può aiutarti a perfezionare il comportamento dell'autoscalatore per soddisfare i requisiti del carico di lavoro.
Per ulteriori informazioni sulle annotazioni dei pod e sui relativi effetti sull'autoscaler del cluster, consulta le seguenti risorse:
- Quali tipi di pod possono impedire a CA di rimuovere un nodo? nelle domande frequenti sulla scalabilità automatica dei cluster.
- Documentazione ufficiale di Kubernetes Cluster Autoscaler
Criteri di funzionamento
Il gestore della scalabilità automatica dei cluster fa le seguenti supposizioni quando ridimensiona un pool di nodi:
- Tutti gli oggetti pod replicati possono essere riavviati su un altro nodo, causando eventualmente una breve interruzione. Se il carico di lavoro non tollera interruzioni, configuralo in modo che venga eseguito su un pool di nodi con la scalabilità automatica disattivata. Per ulteriori informazioni, consulta Controllare la pianificazione con gli elementi dannosi del nodo.
- Il gestore della scalabilità automatica del cluster può eseguire l'override di qualsiasi operazione di gestione manuale dei nodi eseguita.
- Tutti i nodi in 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 sottoposti a scalabilità se nello stesso cluster sono presenti nodi di dimensioni diverse (ad esempio, nodi con elevata CPU o memoria elevata).
Dimensione minima e massima del node pool
Puoi specificare le dimensioni minime e massime per ogni pool di nodi del cluster con i flag min-nodes
e max-nodes
. Per disattivare la scalabilità automatica, impostamin-nodes
e max-nodes
sullo stesso numero. Il gestore della scalabilità automatica del cluster prende decisioni di scalabilità in base a questi limiti di dimensione.
Quando imposti la dimensione massima dei pool di nodi, assicurati che sia sufficiente per eseguire tutti i carichi di lavoro. Se i pool di nodi del tuo cluster non hanno memoria e CPU sufficienti per eseguire tutti i tuoi carichi di lavoro, potrebbero verificarsi interruzioni del servizio.
Utilizzare un PodDisruptionBudget
per proteggere i carichi di lavoro
Puoi configurare GKE su AWS per proteggerti dall'interruzione del carico di lavoro
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 non essere disponibili in un determinato momento. Per ulteriori informazioni, consulta Specificare un budget per le interruzioni per la tua applicazione.
Eseguire lo scale up 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 da 1.28.8-gke.800 e successive
- Versioni di 1.27 da 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 attivare questa funzionalità per i cluster esistenti, aggiorna il cluster a una versione supportata e poi esegui un aggiornamento in sequenza dei pool di nodi aggiornandone la versione 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 gli indicatori di compromissione che definisci per i pool di nodi quando prende decisioni di ridimensionamento, anche quando non sono disponibili nodi di riferimento. GKE su AWS imposta automaticamente le etichette e i tag di contaminazione necessari sul gruppo AWS Auto Scaling sottostante del pool di nodi. Per ulteriori informazioni su questi tag, consulta la sezione Configurazione del rilevamento automatico della pagina GitHub che descrive la configurazione dell'autoscaler del cluster per AWS.
Impostando questi tag di etichetta e contaminazione, GKE su AWS consente all'autoscaler del cluster di creare modelli di nodi accurati. I modelli di nodi sono rappresentazioni virtuali dei nodi che includono la configurazione, le etichette e le contaminazioni dei nodi corretti, anche quando non sono presenti nodi fisici nel pool di nodi. Grazie a questi modelli di nodi precisi, il gestore della scalabilità automatica del cluster può prendere decisioni di scale up corrette.
Quando configuri gli elementi dannosi nei pool di nodi, tieni presente che i gruppi AWS Auto Scaling hanno una limitazione: se applichi più elementi dannosi con la stessa chiave, ma con combinazioni di valore ed effetto diverse, solo l'ultimo elemento dannoso applicato con la chiave duplicata viene preso in considerazione dall'autoscalabilità del cluster.
Ulteriori informazioni
Per scoprire di più sul gestore della scalabilità automatica dei cluster e su come evitare interruzioni, consulta le seguenti risorse:
- Domande frequenti su Kubernetes Cluster Autoscaler
- Come funziona la riduzione?
- Il gestore della scalabilità automatica dei cluster funziona con
PodDisruptionBudget
in caso di riduzione?