Risolvere i problemi relativi all'utilizzo elevato della CPU nei cluster del servizio Azure Kubernetes
Un utilizzo elevato della CPU è un sintomo di una o più applicazioni o processi che richiedono un tempo di CPU così elevato che le prestazioni o l'usabilità del computer sono interessate. 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 del servizio Azure Kubernetes riscontra un utilizzo elevato della CPU, le applicazioni in esecuzione possono riscontrare una riduzione delle prestazioni e dell'affidabilità. Anche le applicazioni o i processi diventano instabili, che possono causare problemi oltre le risposte lente.
Questo articolo illustra come identificare i nodi e i contenitori che usano cpu elevata e fornisce procedure consigliate per risolvere un utilizzo elevato della CPU.
Sintomi
La tabella seguente illustra i sintomi comuni dell'utilizzo elevato della CPU:
Sintomo | Descrizione |
---|---|
Fame di CPU | Le applicazioni a elevato utilizzo di CPU rallentano altre applicazioni nello stesso nodo. |
Modifiche di 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 l'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 un utilizzo elevato della CPU:
In un Web browser usare la funzionalità Informazioni dettagliate contenitore del servizio Azure Kubernetes nel portale di Azure.
In una console usare lo strumento da riga di comando kubernetes (kubectl).
Informazioni dettagliate sui contenitori è 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 determinano un utilizzo elevato della CPU.
Per identificare nodi, contenitori o pod che determinano un utilizzo elevato della CPU, seguire questa procedura:
Passare al cluster dal portale di Azure.
In Monitoraggio selezionare Informazioni dettagliate.
Impostare l'intervallo di tempo appropriato.
Individuare i nodi con utilizzo elevato della CPU e verificare se l'utilizzo della CPU del nodo è stabile.
Selezionare Nodi. Impostare Metrica su Utilizzo CPU (millicores) 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 il maggior utilizzo della CPU vengono visualizzati nella parte superiore.
Nello screenshot seguente il nodo usa solo il 12% della CPU massima ed è stato eseguito per 16 giorni.
Dopo aver individuato i nodi con un utilizzo elevato della CPU, selezionare i nodi in cui trovare i pod e il relativo utilizzo della CPU.
Note
La percentuale di utilizzo della CPU o della memoria per i pod si basa sulla richiesta di 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 visualizzato 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 di 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 richieste e limiti appropriati per scegliere la classe QoS (Quality of Service) di Kubernetes appropriata per ogni pod. |
Abilitare il dimensionamento automatico orizzontale dei pod | L'impostazione dei limiti appropriati, insieme all'abilitazione di HPA, consente di risolvere l'utilizzo elevato della CPU. |
Selezionare macchine virtuali con SKU superiori | Per gestire carichi di lavoro con utilizzo elevato della CPU, usare macchine virtuali con SKU superiori. A tale scopo, creare un nuovo pool di nodi, disattivare i nodi per renderli non pianificabili 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 dei dati analitici sui contenitori
- Monitorare le prestazioni del cluster Kubernetes con informazioni dettagliate sul contenitore
- Come gestire l'agente di Informazioni dettagliate contenitore
- Limiti delle risorse
- Quote di risorse
- Intervalli di limiti
- 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.