Felsöka hög CPU-användning i AKS-kluster
Hög CPU-användning är ett symptom på ett eller flera program eller processer som kräver så mycket CPU-tid att datorns prestanda eller användbarhet påverkas. Hög CPU-användning kan förekomma på många sätt, men det orsakas främst av användarkonfiguration.
När en nod i ett AKS-kluster (Azure Kubernetes Service) har hög CPU-användning kan de program som körs på den försämras i prestanda och tillförlitlighet. Program eller processer blir också instabila, vilket kan leda till problem utöver långsamma svar.
Den här artikeln hjälper dig att identifiera de noder och containrar som använder hög CPU och ger metodtips för att lösa hög CPU-användning.
Symptom
I följande tabell beskrivs de vanligaste symptomen på hög CPU-användning:
Symptom | Beskrivning |
---|---|
CPU-svält | Processorintensiva program gör andra program långsammare på samma nod. |
Långsamma tillståndsändringar | Poddar kan ta längre tid att förbereda sig. |
NotReady-nodtillstånd | En nod anger tillståndet NotReady . Det här problemet beror på att containern med hög CPU-användning gör att Kubectl-kommandoradsverktyget inte svarar. |
Checklista för felsökning
För att lösa hög CPU-användning använder du effektiva övervakningsverktyg och tillämpar metodtips.
Steg 1: Identifiera noder/containrar med hög CPU-användning
Använd någon av följande metoder för att identifiera noder och containrar med hög CPU-användning:
I en webbläsare använder du funktionen Container Insights i AKS i Azure Portal.
I en konsol använder du kubernetes kommandoradsverktyg (kubectl).
Container Insights är en funktion i AKS. Den är utformad för att övervaka prestanda för containerarbetsbelastningar. Du kan använda containerinsikter för att identifiera noder, containrar eller poddar som ger hög CPU-användning.
Följ dessa steg för att identifiera noder, containrar eller poddar som har hög CPU-användning:
Gå till klustret från Azure Portal.
Under Övervakning väljer du Insikter.
Ange lämpligt tidsintervall.
Leta upp noderna med hög CPU-användning och kontrollera om nodens CPU-användning är stabil.
Välj Noder. Ange Mått till CPU-användning (millicores) och ange sedan exemplet till Max. Använd sorteringsfunktionen på Max för att beställa noderna efter Max%. Noderna med den högsta CPU-användningen visas högst upp.
I följande skärmbild använder noden endast 12 % av den maximala processorn och har körts i 16 dagar.
När du har hittat noderna med hög CPU-användning väljer du noderna för att hitta poddar på dem och deras CPU-användning.
Kommentar
Procentandelen processor- eller minnesanvändning för poddar baseras på cpu-begäran som angetts för containern. Den representerar inte procentandelen cpu- eller minnesanvändning för noden. Så titta på den faktiska cpu- eller minnesanvändningen i stället för procentandelen cpu- eller minnesanvändning för poddar.
När du har fått en lista över poddar med hög CPU-användning kan du mappa den till de program som orsakar toppar i CPU-användningen.
Steg 2: Granska metodtipsen för att undvika hög CPU-användning
Läs följande tabell för att lära dig hur du implementerar metodtips för att undvika hög CPU-användning:
Bästa metod | Beskrivning |
---|---|
Ange lämpliga gränser för containrar | Det är tillåtet i Kubernetes att ange begäranden och begränsningar för containerresurser. Resursbegäranden och begränsningar utgör det lägsta och högsta antalet resurser som en container kan använda. Vi rekommenderar att du anger lämpliga begäranden och gränser för att välja lämplig Kubernetes Quality of Service-klass (QoS) för varje podd. |
Aktivera HPA (horisontell autoskalning av poddar) | Om du anger lämpliga gränser samtidigt som du aktiverar HPA, kan du åtgärda en hög CPU-användning. |
Välj högre virtuella SKU-datorer | Om du vill hantera höga CPU-arbetsbelastningar, använder du högre virtuella SKU-datorer. Det gör du genom att skapa en ny nodpool, spärra noderna så att de inte kan schemaläggas, samt tömma den befintliga nodpoolen. |
Isolera system- och användararbetsbelastningar | Vi rekommenderar att du skapar en separat nodpool (förutom agentpoolen) där du kan köra dina arbetsbelastningar. Detta kan förhindra överbelastning av systemets nodpool och ge bättre prestanda. |
Referenser
- Översikt över containerinsikter
- Övervaka Kubernetes-klusterprestanda med containerinsikter
- Hantera Container Insights-agenten
- Resursgränser
- Resurskvoter
- Begränsa intervall
- Tjänstkvalitet
Kontakta oss för att få hjälp
Om du har frågor eller behöver hjälp skapar du en supportförfrågan eller frågar Azure community support. Du kan också skicka produktfeedback till Azure-feedbackcommunityn.