Share 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 uitput.

Vereisten

Symptomen

In de volgende tabel worden de veelvoorkomende symptomen van geheugenverzadiging beschreven.

Symptoom Beschrijving
Niet-geplande pods Extra pods kunnen niet worden gepland als het knooppunt zich dicht bij de ingestelde geheugenlimiet bevindt.
Pod-verwijdering 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 niet gereed Geheugenverzadiging kan ertoe leiden dat kubelet en containerd niet meer reageert, wat uiteindelijk problemen met de gereedheid van knooppunten veroorzaakt.
Onvoldoende geheugen (OOM) doden Er treedt een OOM-probleem op als de pod-verwijdering een probleem met het knooppunt niet kan voorkomen.

Controlelijst voor probleemoplossing

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

Stap 1: knooppunten met geheugenverzadiging identificeren

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

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

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

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

  1. Zoek en selecteer Kubernetes-servicesop de 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 tijdsbereikwaarde in .

  5. Selecteer het tabblad Knooppunten .

  6. Selecteer in de lijst Metrische gegevensde optie Werkset geheugen (berekend vanuit Allocatable).

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

    Azure Portal 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.

    Azure Portal schermopname van de containers van een knooppunt in de weergave Knooppunten in Container Insights binnen een AKS-cluster (Azure Kubernetes Service).

    Opmerking

    Het cpu- of geheugengebruikspercentage voor pods is gebaseerd op de CPU-aanvraag die is opgegeven voor de container. Het geeft niet het percentage van het CPU- of geheugengebruik voor het knooppunt aan. Kijk dus naar 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 bekijken om geheugenverzadiging te voorkomen

Raadpleeg de volgende tabel voor meer informatie over het implementeren van best practices voor het voorkomen van geheugenverzadiging.

Aanbevolen procedures Beschrijving
Geheugenaanvragen en -limieten gebruiken Kubernetes biedt opties om de minimale geheugengrootte (aanvraag) en de maximale geheugengrootte (limiet) voor een container op te geven. Door limieten voor pods te configureren, kunt u geheugenbelasting op het knooppunt voorkomen. Zorg ervoor dat de geaggregeerde 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 scheduler te veel pods op één knooppunt plannen. Hierdoor kan het knooppunt uiteindelijk worden uitgeschakeld. Bovendien, terwijl de kubelet pods verwijdert, geeft het prioriteit aan pods waarin het geheugengebruik de gedefinieerde aanvragen overschrijdt. U wordt aangeraden de geheugenaanvraag dicht bij het werkelijke gebruik in te stellen.
Automatische schaalaanpassing van horizontale pods inschakelen Door het cluster te schalen, kunt u de aanvragen verdelen over veel pods om geheugenverzadiging te voorkomen. Deze techniek kan de geheugenvoetafdruk op het specifieke knooppunt verminderen.
Antiaffiniteitstags gebruiken Voor scenario's waarin geheugen per ontwerp niet-afhankelijk is, kunt u knooppuntkiezers en affiniteits- of antiaffiniteitstags gebruiken, waarmee de workload kan worden geïsoleerd naar specifieke knooppunten. Door antiaffiniteitstags 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. Als u deze optie wilt gebruiken, moet u een nieuwe knooppuntgroep maken, de knooppunten cordonen (ze niet-gepland maken) en de bestaande knooppuntgroep leegmaken.
Systeem - en gebruikersworkloads isoleren U wordt aangeraden uw toepassingen uit te voeren op een gebruikersknooppuntgroep. Deze configuratie zorgt ervoor dat u de Kubernetes-specifieke pods kunt isoleren in 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 verstrekt contactgegevens van derden om u te helpen aanvullende informatie over dit onderwerp te vinden. Deze contactinformatie kan zonder voorafgaande kennisgeving worden gewijzigd. Microsoft garandeert de juistheid van contactgegevens van derden niet.

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 Feedback-community van Azure.