Delen via


Problemen met geheugenverzadiging in AKS-clusters oplossen

In dit artikel worden methoden besproken voor het oplossen van problemen met geheugenverzadiging. Geheugenverzadiging treedt op als ten minste één toepassing of proces meer geheugen nodig heeft dan een containerhost kan bieden, of als de host het beschikbare geheugen verbruikt.

Voorwaarden

Symptomen

De volgende tabel bevat een overzicht van de veelvoorkomende symptomen van geheugenverzadiging.

Symptoom Beschrijving
Niet-geplande pods Aanvullende pods kunnen niet worden gepland als het knooppunt zich dicht bij de ingestelde geheugenlimiet bevindt.
Verwijdering van pods Als een knooppunt onvoldoende geheugen heeft, kan de kubelet pods verwijderen. Hoewel het besturingsvlak probeert de verwijderde pods opnieuw te plannen op andere knooppunten met resources, is er geen garantie dat andere knooppunten voldoende geheugen hebben om deze pods uit te voeren.
Knooppunt is niet gereed Geheugenverzadiging kan ertoe leiden kubelet dat containerd knooppuntgereedheid niet meer reageert en uiteindelijk problemen met de gereedheid van knooppunten veroorzaakt.
Out-of-memory (OOM) doden Er treedt een OOM-probleem op als het verwijderen van de pod een knooppuntprobleem niet kan voorkomen.

Controlelijst voor probleemoplossing

Als u de geheugenverzadiging wilt verminderen, gebruikt u effectieve bewakingshulpprogramma's en past u best practices toe.

Stap 1: knooppunten identificeren met geheugenverzadiging

Gebruik een van de volgende methoden om knooppunten met geheugenverzadiging te identificeren:

  • Gebruik in een webbrowser de functie Container Insights van AKS in Azure Portal.

  • Gebruik in een console het kubernetes-opdrachtregelprogramma (kubectl).

Container Insights is een functie binnen AKS die de prestaties van de containerworkload bewaakt. Zie Container insights inschakelen voor AKS-cluster (Azure Kubernetes Service) voor meer informatie.

  1. Zoek en selecteer Kubernetes-services in Azure Portal.

  2. Selecteer in de lijst met Kubernetes-services de naam van uw cluster.

  3. Zoek in het navigatiedeelvenster van uw cluster de kop Bewaking en selecteer vervolgens Inzichten.

  4. Stel de juiste waarde voor het tijdsbereik in.

  5. Selecteer het tabblad Knooppunten .

  6. Selecteer in de lijst met metrische gegevens de optie Geheugenwerkset (berekend vanuit Allocatable).

  7. Stel in de percentielkiezer het voorbeeld in op Max en selecteer vervolgens twee keer het kolomlabel Maximumpercentage . Met deze actie worden de tabelknooppunten gesorteerd op het maximumpercentage van het gebruikte geheugen, van hoog naar laag.

    Schermopname van de weergave Knooppunten in Container Insights in een AKS-cluster (Azure Kubernetes Service).

  8. Omdat het eerste knooppunt het hoogste geheugengebruik heeft, selecteert u dat knooppunt om het geheugengebruik te onderzoeken van de pods die op het knooppunt worden uitgevoerd.

    Schermopname van de containers van een knooppunt onder de weergave Knooppunten in Container Insights in een AKS-cluster (Azure Kubernetes Service).

    Notitie

    Het percentage CPU- of geheugengebruik voor pods is gebaseerd op de CPU-aanvraag die is opgegeven voor de container. Het vertegenwoordigt niet het percentage van het CPU- of geheugengebruik voor het knooppunt. Bekijk dus het werkelijke CPU- of geheugengebruik in plaats van het percentage CPU- of geheugengebruik voor pods.

Nu u de pods hebt geïdentificeerd die veel geheugen gebruiken, kunt u de toepassingen identificeren die op de pod worden uitgevoerd.

Stap 2: Best practices controleren om geheugenverzadiging te voorkomen

Bekijk de volgende tabel voor meer informatie over het implementeren van aanbevolen procedures voor het voorkomen van geheugenverzadiging.

Best practice Beschrijving
Geheugenaanvragen en -limieten gebruiken Kubernetes biedt opties voor het opgeven van de minimale geheugengrootte (aanvraag) en de maximale geheugengrootte (limiet) voor een container. Door limieten voor pods te configureren, kunt u geheugenbelasting op het knooppunt voorkomen. Zorg ervoor dat de totale limieten voor alle pods die worden uitgevoerd, het beschikbare geheugen van het knooppunt niet overschrijden. Deze situatie wordt overcommitting genoemd. De Kubernetes-planner wijst resources toe op basis van ingestelde aanvragen en limieten via QoS (Quality of Service ). Zonder de juiste limieten kan de planner te veel pods op één knooppunt plannen. Hierdoor kan het knooppunt uiteindelijk uitvallen. Terwijl de kubelet pods verwijdert, geeft deze bovendien prioriteit aan pods waarin het geheugengebruik de gedefinieerde aanvragen overschrijdt. U wordt aangeraden de geheugenaanvraag dicht bij het werkelijke gebruik in te stellen.
De horizontale automatische schaalaanpassing van pods inschakelen Door het cluster te schalen, kunt u de aanvragen over veel pods verdelen om geheugenverzadiging te voorkomen. Deze techniek kan de geheugenvoetafdruk op het specifieke knooppunt verminderen.
Antiaffiniteitstags gebruiken Voor scenario's waarin geheugen niet afhankelijk is van het ontwerp, kunt u knooppuntselectors en affiniteits- of anti-affiniteitstags gebruiken, waarmee de workload kan worden geïsoleerd naar specifieke knooppunten. Door anti-affiniteitstags te gebruiken, kunt u voorkomen dat andere workloads pods op deze knooppunten plannen. Dit vermindert het probleem met geheugenverzadiging.
Hogere SKU-VM's kiezen Virtuele machines (VM's) met meer RAM-geheugen (Random Access Memory) zijn beter geschikt voor het verwerken van hoog geheugengebruik. Om deze optie te gebruiken, moet u een nieuwe knooppuntgroep maken, de knooppunten afbakenen (ze niet-planbaar maken) en de bestaande knooppuntgroep legen.
Systeem- en gebruikersworkloads isoleren U wordt aangeraden uw toepassingen uit te voeren in een gebruikersknooppuntgroep. Deze configuratie zorgt ervoor dat u de Kubernetes-specifieke pods kunt isoleren naar de systeemknooppuntgroep en de clusterprestaties kunt behouden.

Meer informatie

Disclaimerinformatie van derden

De producten van derden die in dit artikel worden vermeld, worden vervaardigd door bedrijven die onafhankelijk zijn van Microsoft. Microsoft verleent dan ook geen enkele garantie, impliciet noch anderszins, omtrent de prestaties of de betrouwbaarheid van deze producten.

Disclaimerinformatie van derden

Microsoft biedt contactgegevens van derden om u te helpen aanvullende informatie over dit onderwerp te vinden. Deze contactinformatie kan zonder voorafgaande kennisgeving worden gewijzigd. Microsoft garandeert niet de nauwkeurigheid van contactgegevens van derden.

Contacteer ons voor hulp

Als u vragen hebt of hulp nodig hebt, maak een ondersteuningsaanvraag of vraag de Azure-communityondersteuning. U kunt ook productfeedback verzenden naar de Azure-feedbackcommunity.