Dela via


Felsöka minnesmättnad i AKS-kluster

I den här artikeln beskrivs metoder för att felsöka problem med minnesmättnad. Minnesmättnad inträffar om minst ett program eller en process behöver mer minne än vad en containervärd kan tillhandahålla, eller om värden avgaser sitt tillgängliga minne.

Förutsättningar

Symptom

I följande tabell beskrivs vanliga symptom på minnesmättnad.

Symptom Beskrivning
Oplanerade poddar Det går inte att schemalägga ytterligare poddar om noden ligger nära den angivna minnesgränsen.
Avlägsning av podd Om en nod får slut på minne kan kubelet avlägsna poddar. Även om kontrollplanet försöker schemalägga om de borttagna poddarna på andra noder som har resurser, finns det ingen garanti för att andra noder har tillräckligt med minne för att köra dessa poddar.
Noden är inte klar Minnesmättnad kan orsaka kubelet och containerd sluta svara, vilket så småningom orsakar problem med nodberedskap.
Out-of-memory (OOM) kill Ett OOM-problem uppstår om poddborttagningen inte kan förhindra ett nodproblem.

Checklista för felsökning

Om du vill minska minnesmättnad använder du effektiva övervakningsverktyg och tillämpar metodtips.

Steg 1: Identifiera noder som har minnesmättnad

Använd någon av följande metoder för att identifiera noder som har minnesmättnad:

  • 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 som övervakar prestanda för containerarbetsbelastningar. Mer information finns i Aktivera Container Insights för Azure Kubernetes Service-kluster (AKS).

  1. Azure Portal söker du efter och väljer Kubernetes-tjänster.

  2. I listan över Kubernetes-tjänster väljer du namnet på klustret.

  3. Leta upp rubriken Övervakning i navigeringsfönstret i klustret och välj sedan Insikter.

  4. Ange lämpligt tidsintervallvärde .

  5. Välj fliken Noder .

  6. I listan Mått väljer du Minnesarbetsuppsättning (beräknad från Allokerbar).

  7. I percentilväljaren ställer du in exemplet på Max och väljer sedan kolumnetiketten Max % två gånger. Den här åtgärden sorterar tabellnoderna efter den maximala procentandelen minne som används, från högsta till lägsta.

    Azure Portal skärmbild av nodvyn i Container Insights i ett Azure Kubernetes Service -kluster (AKS).

  8. Eftersom den första noden har den högsta minnesanvändningen väljer du den noden för att undersöka minnesanvändningen för de poddar som körs på noden.

    Azure Portal skärmbild av en nods containrar under vyn Noder i Container Insights i ett Azure Kubernetes Service-kluster (AKS).

    Obs!

    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 processor- eller minnesanvändning för poddar.

Nu när du har identifierat de poddar som använder högt minne kan du identifiera de program som körs på podden.

Steg 2: Granska metodtipsen för att undvika minnesmättnad

Läs följande tabell om du vill lära dig hur du implementerar metodtips för att undvika minnesmättnad.

Metodtips Beskrivning
Använda minnesbegäranden och gränser Kubernetes tillhandahåller alternativ för att ange den minsta minnesstorleken (begäran) och den maximala minnesstorleken (gränsen) för en container. Genom att konfigurera gränser för poddar kan du undvika minnesbelastning på noden. Kontrollera att aggregeringsgränserna för alla poddar som körs inte överskrider nodens tillgängliga minne. Den här situationen kallas för övertilldelning. Kubernetes-schemaläggaren allokerar resurser baserat på angivna begäranden och gränser via tjänstkvalitet (QoS). Utan lämpliga gränser kan schemaläggaren schemalägga för många poddar på en enda nod. Detta kan så småningom ta ned noden. Även om kubelet tar bort poddar prioriteras poddar där minnesanvändningen överskrider deras definierade begäranden. Vi rekommenderar att du ställer in minnesbegäran nära den faktiska användningen.
Aktivera horisontell autoskalning av poddar Genom att skala klustret kan du balansera begäranden mellan många poddar för att förhindra minnesmättnad. Den här tekniken kan minska minnesavtrycket på den specifika noden.
Använda taggar för tillhörighetsskydd För scenarier där minnet är obundet avsiktligt kan du använda nodväljare och tillhörighets- eller antitillhörighetstaggar, som kan isolera arbetsbelastningen till specifika noder. Genom att använda taggar mot tillhörighet kan du förhindra att andra arbetsbelastningar schemalägger poddar på dessa noder. Detta minskar minnesmättnadsproblemet.
Välj högre virtuella SKU-datorer Virtuella datorer (VM) som har mer ram-minne (random-access memory) är bättre lämpade för att hantera hög minnesanvändning. Om du vill använda det här alternativet måste du skapa en ny nodpool, spärra noderna (göra dem oplanerade) och tömma den befintliga nodpoolen.
Isolera system- och användararbetsbelastningar Vi rekommenderar att du kör dina program i en användarnodpool. Den här konfigurationen ser till att du kan isolera Kubernetes-specifika poddar till systemnodpoolen och underhålla klusterprestandan.

Mer information

Ansvarsfriskrivning för information från tredje part

De produkter från andra tillverkare som diskuteras i denna artikel tillverkas oberoende av Microsoft. Produkternas funktion eller tillförlitlighet kan därför inte garanteras.

Ansvarsfriskrivning för tredje part

Microsoft tillhandahåller kontaktinformation från tredje part som hjälper dig att hitta ytterligare information om det här ämnet. Denna kontaktinformation kan ändras utan föregående meddelande. Microsoft garanterar inte att kontaktinformation från tredje part är korrekt.

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.