Gestore della scalabilità automatica dei cluster

In GKE su VMware versione 1.10, la scalabilità automatica per i pool di nodi nei cluster utente è GA. La scalabilità automatica dei cluster ridimensiona il numero di nodi in un determinato pool di nodi in base alle esigenze dei carichi di lavoro. Non è necessario aggiungere o rimuovere manualmente i nodi o eseguire l'overprovisioning dei pool di nodi. Devi invece specificare la dimensione minima e massima per il pool di nodi, il resto è automatico.

Se le risorse vengono eliminate o spostate durante la scalabilità automatica del cluster, i carichi di lavoro potrebbero riscontrare interruzioni temporanee. Ad esempio, se il carico di lavoro è un singolo pod e il nodo attuale viene eliminato, il pod viene ripianificato su un nodo diverso. Prima di abilitare la scalabilità automatica, progetta i tuoi carichi di lavoro in modo da tollerare potenziali interruzioni e garantire che i pod critici non vengano interrotti.

La scalabilità automatica dei cluster è disabilitata per impostazione predefinita per i pool di nodi. Puoi abilitare e disabilitare la scalabilità automatica sui pool di nodi dei cluster utente durante o dopo la creazione del cluster utilizzando il comando gkectl update.

Come funziona la scalabilità automatica dei cluster

Il gestore della scalabilità automatica dei cluster funziona per pool di nodi. Quando configuri un pool di nodi con il gestore della scalabilità automatica dei cluster, devi specificare le dimensioni minima e massima per il pool di nodi.

Il gestore della scalabilità automatica dei cluster aumenta o diminuisce automaticamente la dimensione del pool di nodi, in base alle richieste di risorse (anziché all'utilizzo effettivo delle risorse) dei pod in esecuzione sui nodi del pool di nodi. Controlla periodicamente lo stato di pod e nodi e interviene:

  • Se i pod non sono pianificabili perché il pool di nodi non è sufficiente, il gestore della scalabilità automatica dei cluster aggiunge nodi, fino alla dimensione massima del pool.
  • Se i nodi sono sottoutilizzati e tutti i pod possono essere pianificati anche con meno nodi nel pool, il gestore della scalabilità automatica dei cluster rimuove i nodi, fino alla dimensione minima del pool di nodi. Se non è possibile eseguire lo svuotamento controllato del nodo, questo viene terminato forzatamente e il disco gestito da Kubernetes collegato viene scollegato in modo sicuro.

Se i tuoi pod hanno richiesto un numero troppo basso di risorse (o non hanno modificato i valori predefiniti, il che potrebbe essere insufficiente) e i tuoi nodi presentano carenze, il gestore della scalabilità automatica dei cluster non corregge la situazione. Puoi contribuire a garantire che il gestore della scalabilità automatica dei cluster operi nel modo più accurato possibile effettuando richieste di risorse esplicite per tutti i tuoi carichi di lavoro.

Criteri operativi

Il gestore della scalabilità automatica dei cluster effettua le seguenti ipotesi durante il ridimensionamento di un pool di nodi:

  • Tutti i pod replicati possono essere riavviati su altri nodi, il che potrebbe causare una breve interruzione. Se i tuoi servizi non tollerano l'interruzione, non è consigliabile utilizzare il gestore della scalabilità automatica dei cluster.
  • Gli utenti o gli amministratori non gestiscono manualmente i nodi. Se il gestore della scalabilità automatica dei cluster è attivato per un pool di nodi, non puoi eseguire l'override del campo replicas del pool di nodi.
  • Tutti i nodi in un singolo pool di nodi hanno lo stesso insieme di etichette.
  • Il gestore della scalabilità automatica dei cluster considera il costo relativo dei tipi di istanza nei vari pool di nodi e tenta di espandere il pool di nodi in modo da ridurre al minimo gli sprechi.

Dimensione minima e massima del pool di nodi

Puoi specificare la dimensione minima e massima per ciascun pool di nodi nel cluster con i valori autoscaling.minReplicas e autoscaling.maxReplicas. Il gestore della scalabilità automatica dei cluster prende decisioni di ridimensionamento entro questi limiti. Il valore replicas del pool di nodi, ossia il numero predefinito di nodi senza scalabilità automatica, deve essere superiore al valore minReplicas specificato e inferiore al valore maxReplicas specificato. Quando abiliti la scalabilità automatica, il gestore della scalabilità automatica dei cluster attende che abbia effetto finché non è necessario un nuovo nodo nel pool di nodi o fino a quando non può essere eliminato in modo sicuro dal pool di nodi.

Considerare la pianificazione e l'interruzione dei pod

Durante lo scale down, il gestore della scalabilità automatica dei cluster rispetta le regole di pianificazione ed rimozione impostate sui pod. Queste limitazioni possono impedire l'eliminazione di un nodo da parte del gestore della scalabilità automatica. Se un nodo ha un pod con una delle condizioni seguenti, potrebbe non essere eliminato.

  • Le regole di affinità o anti-affinità del pod impediscono la ripianificazione.
  • Il pod dispone di spazio di archiviazione locale.
  • Il pod non è gestito da un controller, ad esempio un oggetto Deployment, StatefulSet, Job o ReplicaSet.
  • Il pod si trova nello spazio dei nomi kube-system e non ha un PodDisruptionBudget.

PodDisruptionBudget di un'applicazione può anche impedire la scalabilità automatica. Se l'eliminazione dei nodi causa il superamento del budget, lo fare lo scale down del cluster non viene eseguito.

Per ulteriori informazioni sul gestore della scalabilità automatica dei cluster e sulla prevenzione delle interruzioni, consulta le seguenti domande nelle Domande frequenti sulla scalabilità automatica dei cluster:

Limitazioni

Il gestore della scalabilità automatica dei cluster presenta le seguenti limitazioni:

  • Non è consentito fare lo scale down fino a zero repliche nel pool di nodi.
  • La somma dei nodi worker del cluster utente in un determinato momento deve essere almeno pari a 3. Ciò significa che la somma dei valori di minReplicas per tutti i pool di nodi con scalabilità automatica, più la somma dei valori di replicas per tutti i pool di nodi senza scalabilità automatica, deve essere almeno pari a 3.
  • A volte, il gestore della scalabilità automatica dei cluster non può fare lo scale down completo ed esiste un nodo aggiuntivo dopo lo scale down. Questo può verificarsi quando i pod di sistema richiesti sono pianificati su nodi diversi, perché non esiste un trigger per lo spostamento di questi pod in un nodo diverso. Vedi Ho un paio di nodi con basso utilizzo, ma non ne è stato eseguito lo scale down. Perché?. Per ovviare a questo limite, puoi configurare un budget per l'interruzione dei pod.
  • La pianificazione personalizzata con filtri alterati non è supportata.
  • I nodi non fanno lo scale up se i pod hanno un valore PriorityClass inferiore a -10. Scopri di più, vedi Come funziona il gestore della scalabilità automatica dei cluster con la priorità e il prerilascio dei pod?
  • La scalabilità automatica per i pool di nodi Windows non è supportata.