Usare il profilo di scalabilità automatica per configurare la scalabilità automatica del cluster nel servizio Azure Kubernetes abilitato da 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 abilitato 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 il funzionamento dell'utilità di scalabilità automatica, descrive i valori predefiniti del profilo di scalabilità automatica e descrive 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.
- In Azure Kubernetes Arc sono disponibili più profili.
- Un solo profilo viene assegnato 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 in cui è abilitata la funzione di scalabilità automatica.
Impostazioni del profilo
Il profilo predefinito è costituito dai valori predefiniti seguenti. È possibile aggiornare le impostazioni seguenti.
Impostazione | Descrizione | Default value |
---|---|---|
min-node-count |
Numero minimo di nodi a cui è assegnato il pool di nodi a cui è assegnato questo profilo può ridurre le prestazioni. | 0 |
max-node-count |
Numero massimo di nodi a cui è assegnato il pool di nodi a cui è assegnato questo profilo può aumentare le prestazioni. | 1 |
scan-interval |
Frequenza con cui il cluster viene rivalutato per aumentare o ridurre le prestazioni. | 10 secondi |
scale-down-delay-after-add |
Intervallo di tempo tra l'aumento e la ripresa della valutazione per la riduzione. | 10 minuti |
scale-down-delay-after-delete |
Intervallo di tempo tra l'eliminazione del nodo e la ripresa della valutazione per la riduzione. | scan-interval |
scale-down-delay-after-failure |
Quanto tempo dopo un errore di riduzione della scala che riduce la valutazione riprende. | 3 minuti |
scale-down-unneeded-time |
Per quanto tempo un nodo non deve essere necessario prima di essere idoneo per la riduzione. | 10 minuti |
scale-down-unready-time |
Per quanto tempo un nodo non pronto non deve essere necessario prima di essere idoneo per la riduzione. | 20 minuti |
scale-down-utilization-threshold |
Livello di utilizzo del nodo, definito come somma delle risorse richieste divise per capacità, al di sotto della quale un nodo può essere considerato per ridurre le prestazioni. | 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 espansione del pool di nodi da usare per aumentare le prestazioni. Valori possibili: most-pods , random , least-waste , priority . |
random |
skip-nodes-with-local-storage |
Se true, il ridimensionamento automatico del cluster non elimina mai i nodi con pod con archiviazione locale, ad esempio EmptyDir o HostPath. | true |
skip-nodes-with-system-pods |
Se true, il ridimensionamento automatico del cluster non elimina 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 |
new-pod-scale-up-delay |
Per scenari come la scalabilità burst/batch in cui non si vuole che l'autorità di certificazione agisca prima che l'utilità di pianificazione kubernetes possa pianificare tutti i pod, è possibile indicare alla CA di ignorare i pod non pianificati prima che abbiano una certa età. | 0 secondi |
max-total-unready-percentage |
Percentuale massima di nodi non letti nel cluster. Dopo il superamento di questa percentuale, l'autorità di certificazione interrompe le operazioni. | 45% |
max-node-provision-time |
Tempo massimo di attesa per il provisioning di un nodo da parte dell'utilità di scalabilità automatica. | 15 minuti |
Note sulla configurazione del ridimensionamento automatico
È possibile modificare le impostazioni nel profilo di scalabilità automatica del cluster usando il cmdlet Di PowerShell Set-AksHciAutoScalerConfig .
Il ridimensionamento automatico del cluster prende decisioni di ridimensionamento in base ai conteggi minimo e massimo impostati in ogni pool di nodi, ma non li applica dopo l'aggiornamento dei conteggi min o max. Ad esempio, l'impostazione di un conteggio 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 pianificabili 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, si verifica un evento di riduzione delle prestazioni dopo che i nodi sono sottoutilizzati per 10 minuti. Se sono presenti carichi di lavoro 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 di profilo come file YAML. È possibile modificare manualmente il file YAML da un editor di testo ed è possibile 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, In Visual Studio Code o in altri editor di testo.
Caricare la definizione del profilo
È possibile caricare la definizione del profilo usando kvactl
il file YAML salvato. Esegui questo comando:
kvactl.exe autoscalerprofile create --profileconfig .\def-new.yaml --kubeconfig (Get-AksHciConfig).Kva.kubeconfig