Risolvere l'utilizzo elevato della CPU nei cluster AKS

Annotazioni

Questo articolo illustra l'utilizzo elevato della CPU. In molte situazioni, le metriche PSI (CPU Pressure Stall Information) forniscono un'indicazione più accurata della pressione della CPU rispetto all'utilizzo da solo. Per ulteriori informazioni, vedere Risolvere i problemi relativi alla pressione della CPU nei cluster AKS usando le metriche PSI.

Sommario

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 la configurazione utente lo causa principalmente.

Quando un nodo in un cluster di Servizio Azure Kubernetes (AKS) presenta un utilizzo elevato della CPU, le applicazioni che vi girano possono subire una riduzione delle prestazioni e dell'affidabilità. Anche le applicazioni o i processi diventano instabili, che potrebbero 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
Saturazione della 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 essere pronti.
Stato del nodo NotReady Una forte contesa della CPU può sottrarre tempo di CPU al kubelet e impedirgli di inviare tempestivamente gli aggiornamenti di stato al server API. Di conseguenza, il nodo potrebbe essere contrassegnato come NotReady.

Risolvere i problemi di utilizzo elevato della CPU in Azure Kubernetes Service (AKS)

Per risolvere l'utilizzo elevato della CPU, usare strumenti di monitoraggio efficaci e applicare le procedure consigliate.

Passaggio 1: Identificare nodi e contenitori con utilizzo elevato della CPU

Usare uno dei metodi seguenti per identificare nodi e contenitori con un utilizzo elevato della CPU:

  • In un browser web, usare la funzionalità Container Insights di AKS nel portale di Azure.

  • In una console usare lo strumento da riga di comando kubernetes (kubectl).

Container Insights è una funzionalità all'interno dell'Azure Kubernetes Service (AKS). È progettato per monitorare le prestazioni dei carichi di lavoro dei contenitori. Usare Container Insights 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:

  1. Vai al cluster dal portale di Azure.

  2. In Monitoraggio selezionare Informazioni dettagliate.

    Schermata del Monitoraggio in Informazioni dettagliate.

  3. Impostare l'intervallo di tempo appropriato.

    Schermata di un intervallo di tempo di sei ore.

  4. Trovare 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 secondo Max%. I nodi con il maggior utilizzo della CPU vengono visualizzati nella parte superiore.

    Nello screenshot seguente il nodo usa solo 12% della CPU massima ed è in esecuzione per 16 giorni.

    Screenshot dei nodi nella selezione Monitoraggio.

  5. Dopo aver trovato i nodi con utilizzo elevato della CPU, selezionare i nodi per trovare i pod in essi e il relativo utilizzo della CPU.

    Screenshot dell'opzione informazioni dettagliate per i pod nella selezione Monitoraggio.

    Annotazioni

    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 richieste e limiti appropriati per i contenitori Le richieste della CPU consentono a Kubernetes di pianificare i carichi di lavoro e determinare l'allocazione della CPU durante la contesa. I limiti di CPU restringono la quantità massima di CPU che un contenitore può utilizzare e possono comportare una limitazione delle prestazioni. Configurare richieste e limiti in base ai requisiti osservati del carico di lavoro e scegliere la classe QoS (Kubernetes Quality of Service) appropriata per ogni pod.
Abilitare il Horizontal Pod Autoscaler (HPA) Impostare le richieste CPU appropriate e usare HPA per i carichi di lavoro che possono essere ridimensionati orizzontalmente. Verificare che il carico di lavoro non abbia raggiunto il numero massimo di repliche configurato e che il cluster disponga di capacità sufficiente per repliche aggiuntive.
Aumentare o regolare la capacità del pool di nodi Se il carico di lavoro richiede una maggiore capacità della CPU, prendere in considerazione l'aggiunta di nodi, la selezione di dimensioni di una macchina virtuale con più o più risorse CPU appropriate o lo spostamento del carico di lavoro in un pool di nodi dedicato.
Isolare i carichi di lavoro di sistema e utente Eseguire carichi di lavoro dell'applicazione nei pool di nodi utente e riservare pool di nodi di sistema per carichi di lavoro di sistema critici. Questa separazione riduce il rischio che l'utilizzo della CPU dell'applicazione influisca sui componenti di sistema Kubernetes.

Riferimenti