Workloadimplementaties bewaken
Dit artikel maakt deel uit van een serie. Begin met het overzicht.
Het is belangrijk om de status en prestaties van uw Kubernetes-workloads te bewaken om ervoor te zorgen dat ze optimaal worden uitgevoerd. Azure Kubernetes Service (AKS) heeft verschillende hulpprogramma's die u kunt gebruiken om de status en prestaties van uw implementaties, DaemonSet
functies en services te controleren.
Extra
Het is belangrijk om te bepalen of alle implementaties en DaemonSet
functies worden uitgevoerd. In dit artikel wordt beschreven hoe u kunt bepalen of de replica's in de gereede en beschikbare statussen overeenkomen met het verwachte aantal replica's met behulp van:
- De Azure Portal.
- De functie containerinzichten van Azure Monitor.
- Het opdrachtregelprogramma kubectl.
- Prometheus en Grafana.
Azure Portal
U kunt Azure Portal gebruiken om de status van de volgende onderdelen in uw workloads te controleren. Zie Toegang tot Kubernetes-resources vanuit Azure Portal voor meer informatie.
Implementatie, ReplicaSet
, en StatefulSet
DaemonSet
Controleer of het aantal replica's met een gereede status overeenkomt met het aantal gewenste replica's. In de portal ziet u:
Het aantal replica's dat momenteel beschikbaar is en gereed is om verkeer te verwerken. Deze replica's zijn gepland op werkknooppunten, hebben hun opstartproces voltooid en de gereedheidscontroles doorstaan.
Het gewenste aantal replica's dat is opgegeven voor de implementatie, of het aantal replica's dat de implementatie wil onderhouden. De Kubernetes-implementatiecontroller bewaakt voortdurend de status van de implementatie en zorgt ervoor dat het werkelijke aantal replica's overeenkomt met het gewenste aantal.
Services en ingresses
Zorg ervoor dat de status in orde is voor alle services en ingresses.
Storage
Zorg ervoor dat de status is gebonden aan alle permanente volumeclaims en permanente volumes.
Container Insights
Container insights is een functie van Monitor die bewakingsmogelijkheden biedt voor containerworkloads die zijn geïmplementeerd in AKS of worden beheerd door Kubernetes met Azure Arc. Deze functie verzamelt prestatie- en statusgegevens, zoals metrische geheugen- en processorgegevens van controllers, knooppunten en containers. Ook worden containerlogboeken vastgelegd voor analyse.
U kunt verschillende weergaven en vooraf gemaakte werkmappen gebruiken om de verzamelde gegevens te analyseren. Bekijk de prestaties en het gedrag van verschillende onderdelen in uw cluster. Met containerinzichten krijgt u inzicht in de algehele status van uw containerworkloads, zodat u weloverwogen beslissingen kunt nemen om hun prestaties te optimaliseren en problemen op te lossen.
U kunt containerinzichten gebruiken voor het volgende:
Identificeer resourceknelpunten door containers te identificeren die op elk knooppunt worden uitgevoerd en hun processor- en geheugengebruik.
Identificeer het processor- en geheugengebruik van containergroepen en hun containers die worden gehost in containerinstanties.
Bekijk de algehele prestaties van de controller of pod door te bepalen waar de container zich in een controller of pod bevindt.
Controleer het resourcegebruik van workloads die worden uitgevoerd op de host en zijn niet gerelateerd aan de standaardprocessen die ondersteuning bieden voor de pod.
Inzicht in het gedrag van een cluster onder gemiddelde en zware belasting, zodat u de capaciteitsbehoeften kunt identificeren en de maximale belasting kunt bepalen die het cluster kan ondersteunen.
Toegang tot live-containerlogboeken en metrische gegevens die door de containerengine worden gegenereerd, zodat u problemen in realtime kunt oplossen.
Configureer waarschuwingen om u proactief op de hoogte te stellen of te registreren wanneer het CPU- en geheugengebruik op knooppunten of containers de drempelwaarden overschrijdt, of wanneer er een statuswijziging optreedt in het cluster op de infrastructuur of knooppunten.
In Azure Portal biedt containerinzichten verschillende hulpprogramma's waarmee u de status en prestaties van een AKS-cluster kunt bewaken en analyseren.
Cluster: Deze functie biedt een overzicht van uw AKS-cluster, waaronder belangrijke metrische gegevens, zoals CPU- en geheugengebruik, aantal pods en knooppunten en netwerkverkeer. U krijgt inzicht in de algehele status en het resourcegebruik van het cluster.
Rapporten: Deze functie bevat vooraf samengestelde rapporten die u kunt gebruiken om verschillende aspecten van de prestaties van uw cluster te visualiseren en te analyseren, zoals resourcegebruik, podstatus en containerinzichten. Deze gegevens helpen u inzicht te hebben in het gedrag en de prestaties van uw containers en workloads.
Knooppunten: deze functie biedt gedetailleerde informatie over de knooppunten in uw cluster. Hierin worden de metrische gegevens weergegeven voor CPU- en geheugengebruik, schijf- en netwerk-I/O, en de voorwaarde en status van elk knooppunt. U kunt deze gegevens gebruiken om de prestaties van afzonderlijke knooppunten te bewaken, mogelijke knelpunten te identificeren en ervoor te zorgen dat resources efficiënt worden toegewezen.
Controllers: Deze functie biedt inzicht in de Kubernetes-controllers in uw AKS-cluster. Hier ziet u informatie zoals het aantal controllerexemplaren, de huidige status en de status van controllerbewerkingen. U kunt de status en prestaties van controllers bewaken die workloadimplementaties, services en andere resources beheren.
Containers: deze functie biedt inzicht in containers die worden uitgevoerd in uw AKS-cluster. Het bevat informatie met betrekking tot resourcegebruik, opnieuw opstarten en de levenscyclus-gebeurtenissen van elke container. U kunt deze gegevens gebruiken om containers in uw workloads te bewaken en problemen op te lossen.
Livelogboeken: De functie livelogboeken biedt een livestream van logboekgebeurtenissen van actieve containers, zodat u containerlogboeken in realtime kunt bekijken. U kunt deze gegevens gebruiken om toepassingen effectief te bewaken en op te lossen, en om snel problemen in uw containers te identificeren en op te lossen.
Voor meer informatie raadpleegt u de volgende bronnen:
- De prestaties van uw Kubernetes-cluster bewaken met containerinzichten
- GPU-bewaking configureren met containerinzichten
- Netwerkconfiguraties bewaken en visualiseren met Azure Network Policy Manager
- Implementaties en HPA-metrische gegevens bewaken met containerinzichten
- Metrische gegevens van persistent volume (PV) bewaken
- Beveiliging bewaken met Syslog
- Rapporten in containerinzichten
- Metrische gegevens verzameld door containerinzichten
- Kubernetes-logboeken, gebeurtenissen en metrische gegevens over pods in realtime weergeven
- Metrische clustergegevens in realtime weergeven
Opdrachtregelprogramma
Als u de status van uw workloads wilt controleren, kunt u het opdrachtregelprogramma kubectl gebruiken om te communiceren met het besturingsvlak van een Kubernetes-cluster via de Kubernetes-API.
Pods
Voer de volgende opdracht uit om de pods weer te geven die in alle naamruimten worden uitgevoerd:
kubectl get pod -A
In de uitvoer van de opdracht geeft de kolom READY belangrijke informatie over de gereedheidsstatus van de containers van de pod.
Het eerste getal geeft het aantal containers aan dat momenteel gereed is. Deze containers hebben de gereedheidstests doorstaan en zijn voorbereid om binnenkomend verkeer te verwerken. Het tweede getal vertegenwoordigt het totale aantal containers dat binnen de pod is gedefinieerd, ongeacht de gereedheidsstatus. Het bevat containers die gereed zijn en containers die nog steeds worden geïnitialiseerd of problemen ondervinden.
Zorg ervoor dat het eerste nummer (gereede containers) overeenkomt met het tweede getal (totaal aantal containers) voor de pod. Als ze verschillen, zijn sommige containers mogelijk niet gereed of kunnen er problemen zijn waardoor ze de status Gereed kunnen bereiken.
Implementatie, StatefulSet
, en DaemonSet
StatefulSet
Voer de volgende opdracht uit om de implementaties op te halen in alle naamruimten:
kubectl get deploy -A
In de uitvoer van de kubectl get deploy
opdracht geven de getallen in de kolom GEREED de huidige gereedheidsstatus van de replica's in een implementatie aan.
Het eerste getal vertegenwoordigt het aantal replica's dat gereed en beschikbaar is voor verkeer. Deze replica's zijn gestart en de gereedheidscontroles zijn geslaagd. Het tweede getal vertegenwoordigt het gewenste aantal replica's dat is opgegeven in de implementatieconfiguratie. Het is het doelaantal replica's dat de implementatie wil onderhouden.
Het is belangrijk om ervoor te zorgen dat het eerste getal overeenkomt met het tweede getal. Hiermee wordt aangegeven dat het gewenste aantal replica's wordt uitgevoerd en gereed is. Elke discrepantie tussen de twee getallen kan duiden op problemen met schalen of gereedheid die u moet oplossen.
Voer de volgende opdracht uit om de StatefulSet-functies op te halen in alle naamruimten:
kubectl get statefulset -A
Voer de volgende opdracht uit om de DaemonSet-functies op te halen in alle naamruimten:
kubectl get ds -A
U kunt de kubectl get ds
opdracht uitvoeren om te controleren of een DaemonSet
wordt uitgevoerd zoals verwacht. U kunt bijvoorbeeld de volgende opdracht uitvoeren om te controleren of de container insights-agent is geïmplementeerd:
kubectl get ds ama-logs --namespace=kube-system
Als u uw AKS-cluster configureert voor het verzamelen van metrische Prometheus-metrische gegevens in Monitor voor beheerde Prometheus, kunt u ook de volgende opdracht uitvoeren om te controleren of het DaemonSet
correct is geïmplementeerd in de Linux-knooppuntgroepen:
kubectl get ds ama-metrics-node --namespace=kube-system
Deze uitvoer bevat informatie over de DaemonSet
functies in uw cluster. Bekijk de uitvoer om ervoor te zorgen dat het aantal pods in de gereede, huidige en gewenste statussen hetzelfde is. Als ze hetzelfde zijn, is het gewenste aantal pods dat is opgegeven in de DaemonSet
configuratie gelijk aan het aantal pods dat momenteel wordt uitgevoerd en gereed is.
We raden u aan dezelfde controle uit te voeren op ReplicaSet-functies . U kunt de volgende opdracht gebruiken om de ReplicaSet
functies in alle naamruimten op te halen:
kubectl get rs -A
Zorg ervoor dat de getallen in deze uitvoer voor elke status hetzelfde zijn, zodat het beoogde aantal pods of replica's wordt uitgevoerd zoals verwacht. Afwijkingen kunnen duiden op een behoefte aan nader onderzoek of probleemoplossing met behulp van een van de volgende opdrachten.
kubectl describe: U kunt de opdracht kubectl describe gebruiken voor gedetailleerde informatie over Kubernetes-resources, zoals pods, implementaties en services. U kunt een uitgebreid overzicht krijgen van de opgegeven resource, inclusief de huidige status, gebeurtenissen, voorwaarden en gerelateerde metagegevens. De informatie wordt opgehaald van de Kubernetes-API-server. Deze opdracht is handig voor het oplossen van problemen en het begrijpen van de status van een resource.
U kunt uitvoeren kubectl describe pod <pod-name>
om gedetailleerde informatie te krijgen over een specifieke pod, inclusief de huidige status, gebeurtenissen, labels en de containers die eraan zijn gekoppeld. In de uitvoer ziet u informatie zoals podstatus, gebeurtenissen, volumes en voorwaarden.
kubectl-logboeken: u kunt de opdracht kubectl-logboeken gebruiken om logboeken op te halen die door een container in een pod worden gegenereerd. Deze opdracht is handig voor foutopsporing en probleemoplossing. U kunt de logboeken in realtime bekijken of historische logboeken ophalen uit een container.
Als u containerlogboeken wilt weergeven, kunt u de opdracht kubectl logs <pod-name> -c <container-name>
gebruiken. Vervang door <pod-name>
de naam van de pod. Vervang <container-name>
door de naam van de container waaruit u de logboeken wilt ophalen. Als er slechts één container in de pod is, hoeft u de containernaam niet op te geven. U kunt de -f
vlag ook gebruiken om kubectl logs
de logboeken in realtime te volgen. Deze vlag is vergelijkbaar met de tail -f
Linux-opdracht.
kubectl-gebeurtenissen: u kunt de opdracht kubectl-gebeurtenissen gebruiken om problemen op te lossen wanneer een implementatie, DaemonSet
, ReplicaSet
of pod geen probleem start of ondervindt tijdens het opstarten. Deze opdracht biedt een chronologische lijst met gebeurtenissen die zijn gekoppeld aan de opgegeven resource. U kunt inzicht krijgen in wat het probleem kan hebben veroorzaakt.
Als u wilt gebruiken kubectl events
, kunt u de opdracht kubectl events
uitvoeren, gevolgd door een specifieke resourcenaam. U kunt ook selectors gebruiken om gebeurtenissen te filteren op basis van labels, naamruimten of andere criteria.
Als u bijvoorbeeld gebeurtenissen wilt ophalen die betrekking hebben op een specifieke pod, kunt u uitvoeren kubectl events --field-selector involvedObject.name=<pod-name> --field-selector involvedObject.kind=Pod
. Vervang <pod-name>
door de naam van de pod die u wilt onderzoeken. In de uitvoer van de kubectl events
opdracht worden gegevens weergegeven zoals het gebeurtenistype (normaal of waarschuwing), het gebeurtenisbericht, de reden voor de gebeurtenis en het tijdstempel waarop de gebeurtenis is opgetreden. U kunt deze informatie gebruiken om te bepalen wat de fout of het probleem heeft veroorzaakt tijdens het opstarten.
Als u vermoedt dat een specifieke resource, zoals een implementatie, DaemonSet
of ReplicaSet
problemen ondervindt, kunt u gebeurtenissen filteren met behulp van selectors. Toont bijvoorbeeld kubectl events --field-selector involvedObject.name=<deployment-name> --field-selector involvedObject.kind=Deployment
gebeurtenissen met betrekking tot een specifieke implementatie. Bekijk gebeurtenissen, zodat u belangrijke informatie kunt verzamelen over mogelijke fouten, fouten of andere gebeurtenissen waardoor de resource mogelijk niet goed kan worden gestart. Gebruik deze gegevens om problemen op te lossen die van invloed zijn op de resource.
Bewaking in clusters met Prometheus en Grafana
Als u Prometheus en Grafana in uw AKS-cluster implementeert, kunt u het K8-clusterdetaildashboard gebruiken om inzichten te verkrijgen. Dit dashboard bevat informatie die wordt verzameld uit de metrische gegevens van het Prometheus-cluster, zoals CPU- en geheugengebruik, netwerkactiviteit en bestandssysteemgebruik. Er worden ook gedetailleerde statistieken weergegeven voor afzonderlijke pods, containers en systeemservices .
U kunt de functies in het dashboard gebruiken om de status en prestaties van uw implementaties, taken, pods en containers te garanderen. Selecteer Implementaties om het aantal replica's voor elke implementatie en het totale aantal replica's weer te geven. Selecteer Containers om een grafiek weer te geven waarin de actieve, in behandeling zijnde, mislukte en geslaagde containers worden weergegeven.
Beheerde service bewaken voor Prometheus en Azure Managed Grafana
U kunt vooraf gemaakte dashboards gebruiken om metrische gegevens van Prometheus te visualiseren en analyseren. Hiervoor moet u uw AKS-cluster instellen voor het verzamelen van metrische Prometheus-gegevens in de beheerde Service voor Prometheus en uw Monitor-werkruimte verbinden met een Azure Managed Grafana-werkruimte .
Installeer de vooraf gemaakte dashboards om een uitgebreid overzicht te krijgen van de prestaties en status van uw Kubernetes-cluster. Zie Prometheus Monitoring Mixin voor Kubernetes voor gedetailleerde installatie-instructies. De dashboards worden ingericht in het opgegeven Azure Managed Grafana-exemplaar in de map Managed Prometheus . Enkele dashboards zijn:
- Kubernetes/Rekenresources/Cluster
- Kubernetes/Compute-resources/naamruimte (pods)
- Kubernetes/Rekenresources/knooppunt (pods)
- Kubernetes/Rekenresources/Pod
- Kubernetes/Rekenresources/Naamruimte (workloads)
- Kubernetes/rekenresources/workload
- Kubernetes/Kubelet
- Knooppuntexporteur/USE-methode/knooppunt
- Knooppuntexporteur/knooppunten
- Kubernetes/Rekenresources/Cluster (Windows)
- Kubernetes/Rekenresources/Naamruimte (Windows)
- Kubernetes/Rekenresources/Pod (Windows)
- Kubernetes/USE-methode/cluster (Windows)
- Kubernetes/USE Method/Node (Windows)
Deze ingebouwde dashboards worden veel gebruikt in de opensource-community voor het bewaken van Kubernetes-clusters met Prometheus en Grafana. Gebruik deze dashboards om metrische gegevens weer te geven, zoals resourcegebruik, podstatus en netwerkactiviteit. U kunt ook aangepaste dashboards maken die zijn afgestemd op uw bewakingsbehoeften. Dashboards helpen u bij het effectief bewaken en analyseren van metrische Prometheus-gegevens in uw AKS-cluster, waarmee u de prestaties kunt optimaliseren, problemen kunt oplossen en de werking van uw Kubernetes-workloads soepel kunt laten verlopen.
U kunt het kubernetes-/rekenresources-/knooppuntdashboard (pods) gebruiken om metrische gegevens voor uw Linux-agentknooppunten te bekijken. U kunt het CPU-gebruik, het CPU-quotum, het geheugengebruik en het geheugenquotum voor elke pod visualiseren.
Het Kubernetes/Compute-resources/Pod Grafana-dashboard biedt inzicht in het resourceverbruik en de prestatiegegevens van een geselecteerd cluster, naamruimte en pod. U kunt dit dashboard gebruiken om metrische gegevens op te halen met betrekking tot CPU-gebruik, CPU-beperking, het CPU-quotum, het geheugengebruik, het geheugenquotum, metrische netwerkgegevens en metrische opslaggegevens. Selecteer in het dashboard een AKS-cluster, naamruimte en pod in de gekozen naamruimte om de volgende details te zien:
CPU-gebruik: in deze grafiek wordt het CPU-gebruik in de loop van de tijd voor de geselecteerde pod weergegeven. U kunt het CPU-verbruikspatroon bekijken en potentiële pieken of afwijkingen identificeren.
CPU-beperking: deze grafiek biedt inzicht in CPU-beperking. Deze grafiek treedt op wanneer een pod de limieten van de CPU-resource overschrijdt. Bewaak deze metrische waarde om gebieden te identificeren waar de prestaties van de pod worden beperkt vanwege CPU-beperking.
CPU-quotum: in deze grafiek ziet u het toegewezen CPU-quotum voor de geselecteerde pod. Als de pod het toegewezen CPU-quotum overschrijdt, zijn er mogelijk resourceaanpassingen vereist.
Geheugengebruik: in deze grafiek wordt het geheugengebruik van de geselecteerde pod weergegeven. Bewaak het geheugenverbruikspatroon en identificeer eventuele problemen met betrekking tot geheugen.
Geheugenquotum: in deze grafiek wordt het toegewezen geheugenquotum voor de pod weergegeven. Als de pod het toegewezen geheugenquotum overschrijdt, kan dit duiden op een behoefte aan resourceoptimalisatie.
Metrische netwerkgegevens: in deze grafieken wordt de ontvangen en verzonden bandbreedte en de snelheid van ontvangen en verzonden pakketten weergegeven. Met deze metrische gegevens kunt u het netwerkgebruik bewaken en potentiële netwerkknelpunten of afwijkingen detecteren.
Metrische opslaggegevens: deze sectie bevat informatie over metrische gegevens die betrekking hebben op opslag, zoals I/O-bewerkingen per seconde (IOPS) en doorvoer. Bewaak deze metrische gegevens om de prestaties en efficiëntie van de podopslag te meten.
U kunt het Kubernetes/Compute Resources/Pod Grafana-dashboard gebruiken om inzicht te krijgen in het resourcegebruik, de prestaties en het gedrag van pods in uw Kubernetes-cluster. Gebruik deze informatie om resourcetoewijzing te optimaliseren, prestatieproblemen op te lossen en weloverwogen beslissingen te nemen om de soepele werking van uw gecontaineriseerde workloads te garanderen.
Bijdragers
Dit artikel wordt onderhouden door Microsoft. De tekst is oorspronkelijk geschreven door de volgende Inzenders.
Hoofdauteur:
- Paulo Salvatori | Principal Customer Engineer
Andere Inzenders:
- Kevin Harris | Principal Solution Specialist
- Francis Simy Azure | Senior Technisch Specialist
Als u niet-openbare LinkedIn-profielen wilt zien, meldt u zich aan bij LinkedIn.