Procedure ottimali per il ridimensionamento automatico
Scopri le best practice per l'utilizzo di Kubernetes Cluster Autoscaler (CA), Horizontal Pod Autoscaler (HPA) e Vertical Pod Autoscaler (VPA) con cluster creati da Kubernetes Engine (OKE).
Questa sezione contiene le procedure consigliate per l'uso di Kubernetes Cluster Autoscaler (CA), Horizontal Pod Autoscaler (HPA) e Vertical Pod Autoscaler (VPA) con cluster creati da Kubernetes Engine.
Il ridimensionamento automatico è un modo per ridimensionare dinamicamente (sia verso l'alto che verso il basso) il numero di risorse di elaborazione che vengono allocate a un'applicazione, in base alle esigenze dell'applicazione. È possibile usare le opzioni riportate di seguito.
- Autoscaler del cluster Kubernetes per ridimensionare automaticamente i pool di nodi di un cluster in base alle richieste del carico di lavoro dell'applicazione.
- Kubernetes Horizontal Pod Autoscaler per ridimensionare automaticamente il numero di pod in una distribuzione.
- Kubernetes Vertical Pod Autoscaler per regolare automaticamente le richieste e i limiti delle risorse (ad esempio gli attributi CPU e memoria) per i container in esecuzione nei pod di una distribuzione.
Per ulteriori informazioni, vedere Ridimensionamento automatico dei pool di nodi e dei pod Kubernetes.
Best Practice: gestire manualmente almeno un pool di nodi per i componenti aggiuntivi critici del cluster
Si consiglia di disporre sempre di almeno un pool di nodi in un cluster non gestito dal gestore automatico cluster Kubernetes. Questo pool di nodi è necessario per eseguire componenti aggiuntivi di cluster critici. È inoltre responsabilità dell'utente ridimensionare manualmente tutti i pool di nodi non gestiti da Kubernetes Cluster Autoscaler.
Si consiglia inoltre di pianificare l'esecuzione dei pod dell'applicazione nei pool di nodi utente ed eseguire i pod di sistema critici (ad esempio i pod coredns) nei pool di nodi del sistema dedicati. Separare i pod dell'applicazione e i pod del sistema in questo modo impedisce ai pod dell'applicazione canaglia di uccidere accidentalmente i pod del sistema. Applicare questo comportamento utilizzando l'attributo CriticalAddonsOnly=true:NoSchedule taint per i pool di nodi del sistema.
Best Practice: definire più repliche
Si consiglia di definire sempre più repliche per la distribuzione Autoscaler del cluster Kubernetes nel file di configurazione. Se è presente una sola replica che viene rimossa e non può essere ripianificata, il gestore automatico cluster Kubernetes non è in grado di creare più nodi di lavoro.
Best Practice: imposta max-node-provision-time
Si consiglia di impostare max-node-provision-time su 25 minuti nel file di configurazione. In genere, il provisioning dei nuovi nodi di lavoro viene eseguito e si passa alla condizione Ready in un tempo notevolmente inferiore a questo. Tuttavia, quando a un pool di nodi vengono aggiunti più nodi contemporaneamente, il provisioning di tali nodi può richiedere più tempo. Tenere presente che la console visualizza un'avvertenza accanto ai nodi di lavoro che richiedono più di 20 minuti per l'inizializzazione.
Procedure ottimali: specificare il numero massimo di nodi in un pool di nodi
Si consiglia di specificare il numero massimo di nodi consentiti nel pool di nodi nel file di configurazione. Assicurarsi che il numero massimo di nodi specificato non superi il limite della tenancy per la forma del nodo di lavoro definita per il pool di nodi. Il gestore automatico del cluster Kubernetes non creerà mai più nodi rispetto al limite della tenancy. Se si specifica un numero maggiore del limite della tenancy, l'Autoscaler del cluster Kubernetes tenterà periodicamente di creare nodi aggiuntivi, ma non lo farà fino a quando il limite della tenancy non verrà aumentato.
Quando si definiscono i cluster che si desidera gestire con Autoscaler del cluster Kubernetes, si consiglia di creare più pool di nodi con un dominio di disponibilità specificato per ogni pool di nodi.
Procedure ottimali: specificare più pool di nodi con un dominio di disponibilità diverso per ogni pool di nodi
Si consiglia di specificare più pool di nodi (con un dominio di disponibilità diverso per ogni pool di nodi) quando si definiscono i cluster che si desidera gestire con Autoscaler cluster Kubernetes.
La specifica di più pool di nodi in domini di disponibilità diversi riduce la probabilità che l'Autoscaler del cluster Kubernetes non sia in grado di creare nodi di lavoro perché una forma di nodo selezionata non è disponibile in un determinato dominio di disponibilità.
Best Practice: utilizzare le assegnazioni capacità per eseguire il provisioning dei nodi di lavoro
Si consiglia di utilizzare le assegnazioni capacità per eseguire il provisioning dei nodi di lavoro. L'utilizzo delle assegnazioni capacità garantisce che la capacità di computazione sia disponibile per i carichi di lavoro quando necessario durante eventi critici, come il disaster recovery o picchi di carico di lavoro imprevisti.
Vedere Utilizzo delle riserve capacità per eseguire il provisioning dei nodi gestiti.
Best Practice: progetta applicazioni che sfruttano i budget di interruzione dei pod
Si consiglia di progettare le applicazioni per tollerare le interruzioni che possono verificarsi quando Kubernetes Cluster Autoscaler rimuove i nodi di lavoro o sposta i pod in un nodo di lavoro diverso prima di rimuovere un nodo di lavoro sottoutilizzato.
Ad esempio, progetta applicazioni che sfruttano i budget per l'interruzione dei pod.
Vedere Specifica di un budget per l'interruzione dell'applicazione nella documentazione di Kubernetes.
Best Practice: evitare di configurare manualmente i pool di nodi gestiti dall'Autoscaler del cluster Kubernetes
Evitare di modificare manualmente i pool di nodi gestiti da Kubernetes Cluster Autoscaler. Ad esempio, non aggiungere o rimuovere nodi utilizzando kubectl o utilizzando la console (o l'interfaccia CLI o l'API di Oracle Cloud Infrastructure). L'Autoscaler del cluster Kubernetes potrebbe ignorare tali modifiche oppure le modifiche potrebbero modificarne il funzionamento.
Se si desidera rimuovere tutti i nodi in un pool di nodi gestito da Kubernetes Cluster Autoscaler, utilizzare sempre Kubernetes Cluster Autoscaler per ridimensionare il pool di nodi a zero.
Best Practice: Evita di utilizzare insieme Kubernetes Horizontal Pod Autoscaler e Vertical Pod Autoscaler
Si consiglia di non utilizzare insieme Horizontal Pod Autoscaler e Vertical Pod Autoscaler.
L'Autoscaler Vertical Pod regola automaticamente la configurazione di richieste e limiti e mira a ridurre i costi indiretti e a ridurre i costi.
Horizontal Pod Autoscaler ridimensiona il numero di pod in base all'utilizzo della CPU o della memoria o su altre metriche. L'Horizontal Pod Autoscaler ha maggiori probabilità di aumentare piuttosto che diminuire il numero di pod.
Se si utilizzano insieme Horizontal Pod Autoscaler e Vertical Pod Autoscaler, verificare due volte che le rispettive politiche non interferiscano tra loro.
Best Practice: crea suggerimenti senza applicarli durante lo sviluppo delle applicazioni
Ti consigliamo di prendere in considerazione l'utilizzo di Vertical Pod Autoscaler quando sei nelle prime fasi di scrittura di un'applicazione, semplicemente per creare consigli (senza aggiornare i pod).
Per creare semplicemente suggerimenti senza applicarli, impostare updateMode: "Off" nella sezione updatePolicy del file manifesto VerticalPodAutoscaler. Quando vengono creati i pod, Vertical Pod Autoscaler analizza le esigenze di CPU e memoria dei container e registra tali suggerimenti nel campo Status. Il Vertical Pod Autoscaler non esegue alcuna azione per aggiornare le richieste di risorse per i contenitori in esecuzione.