Risolvere i problemi relativi all'utilizzo elevato della CPU nei cluster del servizio Azure Kubernetes
L'utilizzo elevato della CPU è un sintomo di una o più applicazioni o processi che richiedono un tempo di CPU così elevato da compromettere le prestazioni o l'usabilità del computer. L'utilizzo elevato della CPU può verificarsi in molti modi, ma è principalmente causato dalla configurazione utente.
Quando un nodo in un cluster servizio Azure Kubernetes (servizio Azure Kubernetes) usa la CPU in modo elevato, le applicazioni in esecuzione su di esso possono subire una riduzione delle prestazioni e dell'affidabilità. Anche le applicazioni o i processi diventano instabili, il che può causare problemi oltre le risposte lente.
Questo articolo consente di identificare i nodi e i contenitori che utilizzano cpu elevate e offre procedure consigliate per risolvere l'utilizzo elevato della CPU.
Sintomi
La tabella seguente illustra i sintomi comuni dell'utilizzo elevato della CPU:
Sintomo | Descrizione |
---|---|
Esaurimento della CPU | Le applicazioni a elevato utilizzo di CPU rallentano altre applicazioni nello stesso nodo. |
Modifiche dello stato lente | I pod potrebbero richiedere più tempo per prepararsi. |
Stato del nodo NotReady | Un nodo entra nello stato NotReady . Questo problema si verifica perché il contenitore con utilizzo elevato della CPU causa la mancata risposta dello strumento da riga di comando Kubectl. |
Elenco di controllo per la risoluzione dei problemi
Per risolvere un utilizzo elevato della CPU, usare strumenti di monitoraggio efficaci e applicare le procedure consigliate.
Passaggio 1: identificare nodi/contenitori con utilizzo elevato della CPU
Usare uno dei metodi seguenti per identificare nodi e contenitori con utilizzo elevato della CPU:
In un Web browser usare la funzionalità Container Insights del servizio Azure Kubernetes nel portale di Azure.
In una console usare lo strumento da riga di comando Kubernetes (kubectl).
Container Insights è una funzionalità all'interno del servizio Azure Kubernetes. È progettato per monitorare le prestazioni dei carichi di lavoro dei contenitori. È possibile usare Informazioni dettagliate sui contenitori per identificare nodi, contenitori o pod che consentono un utilizzo elevato della CPU.
Per identificare nodi, contenitori o pod che determinano un utilizzo elevato della CPU, seguire questa procedura:
Passare al cluster dalla portale di Azure.
In Monitoraggio selezionare Informazioni dettagliate.
Impostare l'intervallo di tempo appropriato.
Individuare i nodi con un utilizzo elevato della CPU e verificare se l'utilizzo della CPU del nodo è stabile.
Selezionare Nodi. Impostare Metrica su Utilizzo CPU (millicore) e quindi impostare l'esempio su Max. Usare la funzionalità di ordinamento in Max per ordinare i nodi in base a Max%. I nodi con l'utilizzo massimo della CPU vengono visualizzati nella parte superiore.
Nello screenshot seguente il nodo usa solo il 12% della CPU massima ed è in esecuzione da 16 giorni.
Dopo aver individuato i nodi con utilizzo elevato della CPU, selezionare i nodi in cui trovare i pod e il relativo utilizzo della CPU.
Nota
La percentuale di utilizzo della CPU o della memoria per i pod si basa sulla richiesta della CPU specificata per il contenitore. Non rappresenta la percentuale di utilizzo della CPU o della memoria per il nodo. Esaminare quindi l'utilizzo effettivo della CPU o della memoria anziché la percentuale di utilizzo della CPU o della memoria per i pod.
Dopo aver ottenuto l'elenco dei pod con utilizzo elevato della CPU, è possibile eseguirne il mapping alle applicazioni che causano il picco di utilizzo della CPU.
Passaggio 2: Esaminare le procedure consigliate per evitare un utilizzo elevato della CPU
Esaminare la tabella seguente per informazioni su come implementare le procedure consigliate per evitare un utilizzo elevato della CPU:
Procedura consigliata | Descrizione |
---|---|
Impostare limiti appropriati per i contenitori | Kubernetes consente di specificare richieste e limiti per le risorse per i contenitori. Le richieste e i limiti delle risorse rappresentano il numero minimo e massimo di risorse che un contenitore può usare. È consigliabile impostare le richieste e i limiti appropriati per scegliere la classe QoS (Quality of Service) Kubernetes appropriata per ogni pod. |
Abilitare la scalabilità automatica orizzontale dei pod (HPA) | L'impostazione di limiti appropriati e l'abilitazione di HPA possono contribuire alla risoluzione dell'utilizzo elevato della CPU. |
Selezionare macchine virtuali SKU superiori | Per gestire carichi di lavoro cpu elevati, usare macchine virtuali SKU superiori. A tale scopo, creare un nuovo pool di nodi, isolare i nodi per renderli non modificabili e svuotare il pool di nodi esistente. |
Isolare i carichi di lavoro di sistema e utente | È consigliabile creare un pool di nodi separato (diverso dal pool di agenti) per eseguire i carichi di lavoro. Ciò può impedire l'overload del pool di nodi di sistema e offrire prestazioni migliori. |
Riferimenti
- Panoramica di Informazioni dettagliate sui contenitori
- Monitorare le prestazioni del cluster Kubernetes con Informazioni dettagliate sul contenitore
- Come gestire l'agente di Informazioni dettagliate contenitore
- Limiti della risorsa
- Quote risorse
- Limita intervalli
- Qualità del servizio
Contattaci per ricevere assistenza
In caso di domande o bisogno di assistenza, creare una richiesta di supporto tecnico oppure formula una domanda nel Supporto della community di Azure. È possibile anche inviare un feedback sul prodotto al feedback della community di Azure.