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
- Het kubectl-opdrachtregelprogramma kubernetes . Als u kubectl wilt installeren met behulp van Azure CLI, voert u de opdracht az aks install-cli uit.
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.
Zoek en selecteer Kubernetes-servicesop de Azure Portal.
Selecteer in de lijst met Kubernetes-services de naam van uw cluster.
Zoek in het navigatiedeelvenster van uw cluster de kop Bewaking en selecteer vervolgens Inzichten.
Stel de juiste tijdsbereikwaarde in .
Selecteer het tabblad Knooppunten .
Selecteer in de lijst Metrische gegevensde optie Werkset geheugen (berekend vanuit Allocatable).
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.
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.
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
Meer informatie over best practices voor Azure Kubernetes Service (AKS)
De prestaties van uw Kubernetes-cluster bewaken met Container Insights
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.
Feedback
https://aka.ms/ContentUserFeedback.
Binnenkort beschikbaar: In de loop van 2024 zullen we GitHub-problemen geleidelijk uitfaseren als het feedbackmechanisme voor inhoud en deze vervangen door een nieuw feedbacksysteem. Zie voor meer informatie:Feedback verzenden en weergeven voor