Usare il profilo di scalabilità automatica per configurare la scalabilità automatica del cluster nel servizio Azure Kubernetes abilitato da Azure Arc

Si applica a: Servizio Azure Kubernetes in Azure Stack HCI 22H2, servizio Azure Kubernetes in Windows Server

È possibile usare i parametri nell'oggetto profilo di scalabilità automatica per definire gli eventi di scalabilità nel servizio Azure Kubernetes abilitati da Arc. Il profilo di scalabilità automatica del cluster influisce su tutti i pool di nodi che usano il ridimensionamento automatico del cluster. Non è possibile impostare un profilo di scalabilità automatica per ogni pool di nodi. Questo articolo illustra come funziona la scalabilità automatica, descrive i valori predefiniti del profilo di scalabilità automatica e spiega come configurare e usare una definizione del profilo.

Uso dei profili

I profili di scalabilità automatica del cluster hanno gli attributi seguenti:

  • I profili di scalabilità automatica si applicano a tutti i pool di nodi in un cluster.
  • I profili sono oggetti a livello di distribuzione globale.
  • Più profili sono disponibili in AKS Arc.
  • Viene assegnato un solo profilo a un determinato cluster. Il profilo viene usato per tutti i pool di nodi nel cluster.
  • Le modifiche apportate al profilo vengono applicate a tutti i pool di nodi con la funzione di scalabilità automatica abilitata.

Impostazioni del profilo

Il profilo predefinito è costituito dai valori predefiniti seguenti. È possibile aggiornare le impostazioni seguenti.

Impostazione Descrizione Valore predefinito
min-node-count Numero minimo di nodi a cui può essere assegnato il pool di nodi a cui è assegnato questo profilo. 0
max-node-count Numero massimo di nodi a cui è assegnato il pool di nodi a cui è assegnato questo profilo può aumentare. 1
scan-interval Frequenza con cui il cluster viene rivalutato per aumentare o ridurre il numero di istanze. 10 secondi
scale-down-delay-after-add Quanto tempo dopo la scalabilità orizzontale della valutazione viene ripresa. 10 minuti
scale-down-delay-after-delete Quanto tempo dopo l'eliminazione del nodo che riprende la valutazione verso il basso. scan-interval
scale-down-delay-after-failure Quanto tempo dopo l'aumento del numero di errori che aumentano la valutazione riprende. 3 minuti
scale-down-unneeded-time La durata di un nodo deve essere annullata prima che sia idonea per il ridimensionamento. 10 minuti
scale-down-unready-time La durata di un nodo non letto deve essere annullata prima che sia idonea per il ridimensionamento. 20 minuti
scale-down-utilization-threshold Livello di utilizzo del nodo definito come somma delle risorse richieste suddivise in base alla capacità, al di sotto del quale un nodo può essere considerato per ridurre il numero di istanze. 0.5
max-graceful-termination-sec Numero massimo di secondi di attesa del componente di scalabilità automatica del cluster prima della terminazione del pod durante il tentativo di riduzione di un nodo. 600 secondi
balance-similar-node-groups Rileva pool di nodi simili e bilancia il numero di nodi tra di essi. false
Expander Tipo di espansore del pool di nodi da usare per aumentare la scalabilità. Valori possibili: la maggior parte dei pod, la maggior parte dei pod, lo spreco minimo, la priorità. random
skip-node-with-local-storage Se il ridimensionamento automatico del cluster true non eliminerà mai i nodi con pod con archiviazione locale, ad esempio EmptyDir o HostPath. true
skip-node-with-system-pods Se true cluster autoscaler non eliminerà mai i nodi con pod da kube-system (ad eccezione di DaemonSet o pod mirror). true
max-empty-bulk-delete Numero massimo di nodi vuoti che possono essere eliminati contemporaneamente. 10 nodi
new-pod-scale-up-delay Per scenari come la scalabilità burst/batch in cui non si vuole che l'autorità di certificazione funzioni prima che l'utilità di pianificazione kubernetes possa pianificare tutti i pod, è possibile indicare alla CA di ignorare i pod non programmati prima che siano un'età specifica. 0 secondi
max-total-unready-percentage Percentuale massima di nodi non letti nel cluster. Dopo aver superato questa percentuale, la CA arresta le operazioni. 45%
max-node-provision-time Tempo massimo di attesa del ridimensionamento automatico per il provisioning di un nodo. 15 minuti

Note sulla configurazione di scalabilità automatica

È possibile modificare le impostazioni nel profilo di scalabilità automatica del cluster usando il cmdlet Set-AksHciAutoScalerConfig di PowerShell.

Il ridimensionamento automatico del cluster prende decisioni di ridimensionamento in base al numero minimo e massimo impostato su ogni pool di nodi, ma non li applica dopo l'aggiornamento del numero minimo o massimo. Ad esempio, l'impostazione di un numero minimo di 5 quando il numero di nodi corrente è 3 non ridimensiona immediatamente il pool fino a 5.

Se il conteggio minimo nel pool di nodi ha un valore superiore al numero corrente di nodi, le nuove impostazioni minime o massime vengono rispettate quando sono presenti pod non programmabili sufficienti che richiedono due nuovi nodi aggiuntivi e attivano un evento di scalabilità automatica. Dopo l'evento di scalabilità, vengono rispettati i nuovi limiti di conteggio.

È anche possibile configurare dettagli più granulari del componente di scalabilità automatica del cluster modificando i valori predefiniti nel profilo di scalabilità automatica a livello di cluster. Ad esempio, un evento con scalabilità orizzontale si verifica dopo l'utilizzo dei nodi per 10 minuti. Se si dispone di carichi di lavoro che vengono eseguiti ogni 15 minuti, è possibile modificare il profilo di scalabilità automatica per ridurre i nodi sottoutilizzati dopo 15 o 20 minuti. Quando si abilita il componente di scalabilità automatica del cluster, viene usato un profilo predefinito, a meno che non si specifichino impostazioni diverse.

Salvare e caricare il profilo di scalabilità automatica

È possibile salvare e archiviare il profilo di scalabilità automatica in una definizione del profilo come file YAML. È possibile modificare manualmente il file YAML da un editor di testo e caricare le definizioni salvate.

Salvare la definizione del profilo

Salvare una copia del profilo come file YAML usando kvactl. Dopo aver definito il profilo, eseguire i comandi seguenti:

kvactl.exe autoscalerprofile get --name default --kubeconfig (Get-AksHciConfig).Kva.kubeconfig --outputformat=yaml > def.yaml

Modificare la definizione del profilo

È possibile modificare la definizione del profilo nel file YAML. Ad esempio, è possibile aprire def.yaml nel blocco note, Visual Studio Code o in altri editor di testo.

Caricare la definizione del profilo

È possibile caricare la definizione del profilo usando kvactl dal file YAML salvato. Eseguire il comando seguente:

kvactl.exe autoscalerprofile create --profileconfig .\def-new.yaml --kubeconfig (Get-AksHciConfig).Kva.kubeconfig

Passaggi successivi