Überwachen von Workloadbereitstellungen
Dieser Artikel ist Teil einer Serie. Beginnen Sie mit der Übersicht.
Es ist wichtig, die Integrität und Leistung Ihrer Kubernetes-Workloads zu überwachen, um sicherzustellen, dass sie optimal ausgeführt werden. Azure Kubernetes Service (AKS) verfügt über mehrere Tools, mit denen Sie den Status und die Leistung Ihrer Bereitstellungen, DaemonSet
-Features und Dienste überprüfen können.
Extras
Es ist wichtig, dass Sie feststellen, ob alle Bereitstellungen und DaemonSet
-Features ausgeführt werden. In diesem Artikel wird beschrieben, wie Sie ermitteln, ob die Replikate mit dem Status bereit und verfügbar mit der erwarteten Replikatanzahl übereinstimmen. Sie können dazu folgende Tools verwenden:
- Das Azure-Portal.
- Das Feature Container Insights von Azure Monitor
- Das Befehlszeilentool kubectl
- Prometheus und Grafana
Das Azure-Portal
Sie können das Azure-Portal nutzen, um die Integrität der folgenden Komponenten in Ihren Workloads zu überprüfen. Weitere Informationen finden Sie unter Zugreifen auf Kubernetes-Ressourcen über das Azure-Portal.
Bereitstellung, ReplicaSet
, StatefulSet
und DaemonSet
Vergewissern Sie sich, dass die Anzahl der Replikate mit dem Status bereit mit der Anzahl der gewünschten Replikate übereinstimmt. Das Portal zeigt Folgendes an:
Die Anzahl der Replikate, die derzeit verfügbar und für den Datenverkehr bereit sind. Diese Replikate wurden erfolgreich auf Workerknoten geplant, haben ihren Startvorgang abgeschlossen und die Prüfung ihrer Bereitschaft bestanden.
Die gewünschte Anzahl der Replikate, die für die Bereitstellung angegeben wurden, oder die Anzahl der Replikate, die von der Bereitstellung verwaltet werden sollen. Der Kubernetes-Bereitstellungscontroller überwacht ständig den Bereitstellungsstatus und stellt sicher, dass die tatsächliche Anzahl der Replikate der gewünschten Anzahl entspricht.
Dienste und eingehende Elemente
Stellen Sie sicher, dass der Status für alle Dienste und Eingänge ok ist.
Storage
Vergewissern Sie sich, dass der Status für alle persistenten Volumeansprüche und persistenten Volumes gebunden ist.
Container Insights
Container Insights ist ein Feature von Monitor, das Überwachungsfunktionen für Containerworkloads bietet, die für AKS bereitgestellt oder von Azure Arc-fähigen Kubernetes-Cluster verwaltet werden. Dieses Feature sammelt Informationen zur Leistung und Integrität, z. B. Arbeitsspeicher- und Prozessormetriken von Controllern, Knoten und Containern. Zudem werden Containerprotokolle für die Analyse erfasst.
Sie können verschiedene Ansichten und vordefinierte Arbeitsmappen zum Analysieren der gesammelten Daten verwenden. Untersuchen Sie die Leistung und das Verhalten verschiedener Komponenten in Ihrem Cluster. Mit Container Insights können Sie Erkenntnisse über den Gesamtzustand Ihrer Containerworkloads gewinnen, damit Sie fundierte Entscheidungen treffen und deren Leistung optimieren sowie Probleme beheben können.
Sie können Container Insights für folgende Aufgaben nutzen:
Ermitteln von Ressourcenengpässe, indem Sie Container, die in jedem Knoten ausgeführt werden, sowie deren Prozessor- und Arbeitsspeicherauslastung identifizieren.
Ermitteln der Prozessor- und Arbeitsspeicherauslastung von Containergruppen und den zugehörigen Containern, die in Containerinstanzen gehostet werden.
Zeigen Sie die Gesamtleistung des Controllers oder Pods an, indem Sie ermitteln, wo sich der Container in einem Controller oder einem Pod befindet.
Sie können den Ressourceneinsatz der Workloads überprüfen, die auf dem Host ausgeführt werden und nichts mit den Standardprozessen zu tun haben, die den Pod unterstützen.
Verstehen des Verhaltens eines Clusters bei durchschnittlicher und starker Last, um die Kapazitätsanforderungen und die maximal tolerierbare Last des Clusters zu ermitteln.
Zugreifen auf die von der Container-Engine generierten Livecontainerprotokolle und -metriken, um Probleme in Echtzeit behandeln zu können.
Konfigurieren von Warnungen, sodass Sie proaktiv benachrichtigt werden oder verzeichnet wird, wenn die CPU- und Speicherauslastung in Knoten oder Containern die von Ihnen definierten Schwellenwerte überschreitet oder wenn eine Änderung des Integritätsstatus im Cluster beim Rollup der Infrastruktur- oder Knotenintegrität erfolgt.
Im Azure-Portal bietet Container Insights mehrere Tools, mit denen Sie die Integrität und Leistung eines AKS-Clusters überwachen und analysieren können.
Cluster: Dieses Feature bietet eine Übersicht über Ihren AKS-Cluster, einschließlich wichtiger Metriken wie CPU- und Arbeitsspeicherauslastung, Pod- und Knotenanzahl und Netzwerkdatenverkehr. Sie können Erkenntnisse über die allgemeine Integrität und den Ressourceneinsatz des Clusters gewinnen.
Berichte: Dieses Feature bietet vorgefertigte Berichte, mit denen Sie verschiedene Aspekte der Leistung Ihres Clusters visualisieren und analysieren können, z. B. Ressourceneinsatz, Podintegrität und Container Insights. Diese Daten helfen Ihnen, das Verhalten und die Leistung Ihrer Container und Workloads zu verstehen.
Knoten: Dieses Feature bietet detaillierte Informationen zu den Knoten in Ihrem Cluster. Es zeigt die Metriken für CPU- und Arbeitsspeicherauslastung, Datenträger- und Netzwerk-E/A sowie den Zustand und Status jedes Knotens an. Sie können mithilfe dieser Daten die Leistung einzelner Knoten überwachen, potenzielle Engpässe identifizieren und eine effiziente Ressourcenzuordnung sicherstellen.
Controller: Dieses Feature bietet Sichtbarkeit in die Kubernetes-Controller in Ihrem AKS-Cluster. Damit werden Informationen wie die Anzahl der Controllerinstanzen, der aktuelle Zustand und der Status der Controllervorgänge angezeigt. Sie können die Integrität und Leistung von Controllern, die Workloadbereitstellungen, Dienste und andere Ressourcen verwalten, überwachen.
Container: Dieses Feature liefert Erkenntnisse über Container, die in Ihrem AKS-Cluster ausgeführt werden. Hier werden Informationen zu Ressourceneinsatz, Neustarts und zu den Lebenszyklusereignissen jedes Containers angezeigt. Sie können diese Daten verwenden, um Container in Ihren Workloads zu überwachen und Probleme zu beheben.
Liveprotokolle: Das Feature Liveprotokolle stellt einen Livestream von Protokollereignissen aus ausgeführten Containern bereit, sodass Sie Containerprotokolle in Echtzeit anzeigen können. Sie können diese Daten nutzen, um Anwendungen effektiv zu überwachen und Anwendungsprobleme zu beheben sowie um Probleme in Ihren Containern schnell zu identifizieren und zu beheben.
Weitere Informationen finden Sie in den folgenden Ressourcen:
- Überwachen der Leistung Ihres Kubernetes-Clusters mit Container Insights
- Konfigurieren der GPU-Überwachung mit Container Insights
- Überwachen und Visualisieren von Netzwerkkonfigurationen mit dem Azure-Netzwerkrichtlinien-Manager
- Überwachen von Bereitstellungs- und HPA-Metriken mit Container Insights
- Überwachen von Metriken für persistente Volumes (PV)
- Überwachen der Sicherheit mit Syslog
- Berichte in Container Insights
- Von Container Insights gesammelte Metriken
- Anzeigen von Kubernetes-Protokollen, -Ereignissen und -Podmetriken in Echtzeit
- Anzeigen von Clustermetriken in Echtzeit
Befehlszeilentool
Um den Status Ihrer Workloads zu überprüfen, können Sie das Befehlszeilentool kubectl verwenden, um über die Kubernetes-API mit der Steuerebene eines Kubernetes-Clusters zu kommunizieren.
Pods
Führen Sie den folgenden Befehl aus, um die in allen Namespaces ausgeführten Pods aufzulisten:
kubectl get pod -A
In der Ausgabe des Befehls stellt die Spalte READY wichtige Informationen zum Bereitschaftsstatus der Container des Pods bereit.
Die erste Zahl gibt die Anzahl der Container an, die derzeit den Status bereit aufweisen. Diese Container haben die Bereitschaftstests bestanden und sind bereit, eingehenden Datenverkehr zu verarbeiten. Die zweite Zahl stellt die Gesamtanzahl der Container dar, die innerhalb des Pods definiert sind, unabhängig von ihrem Bereitschaftsstatus. Sie enthält Container, die bereit sind und sich noch in der Initialisierungsphase befinden oder bei denen Probleme auftreten.
Stellen Sie sicher, dass die erste Zahl (bereite Container) mit der zweiten Zahl (Gesamtzahl der Container) für den Pod übereinstimmt. Wenn sie unterschiedlich sind, sind einige Container möglicherweise nicht bereit, oder es gibt Probleme, die verhindern, dass sie den Status bereit erreichen.
Bereitstellung, StatefulSet
, DaemonSet
und StatefulSet
Führen Sie den folgenden Befehl aus, um die Bereitstellungen in allen Namespaces abzurufen:
kubectl get deploy -A
In der Ausgabe des Befehls kubectl get deploy
geben die Zahlen in der Spalte READY den aktuellen Bereitschaftsstatus der Replikate in einer Bereitstellung an.
Die erste Zahl stellt die Anzahl der Replikate dar, die bereit und für Datenverkehr verfügbar sind. Diese Replikate wurden erfolgreich gestartet und haben die Überprüfung ihrer Bereitschaft bestanden. Die zweite Zahl stellt die gewünschte Anzahl von Replikaten dar, die in der Bereitstellungskonfiguration angegeben sind. Es ist die Zielanzahl der Replikate, die von der Bereitstellung beibehalten werden sollen.
Es ist wichtig sicherzustellen, dass die erste Zahl mit der zweiten Zahl übereinstimmt. Sie gibt an, dass die gewünschte Anzahl von Replikaten ausgeführt und bereit ist. Jede Diskrepanz zwischen den beiden Zahlen kann auf Skalierungs- oder Bereitschaftsprobleme hinweisen, die Sie beheben müssen.
Führen Sie den folgenden Befehl aus, um die StatefulSet-Features in allen Namespaces abzurufen:
kubectl get statefulset -A
Führen Sie den folgenden Befehl aus, um die DaemonSet-Features in allen Namespaces abzurufen:
kubectl get ds -A
Sie können mit dem Befehl kubectl get ds
überprüfen, ob ein DaemonSet
wie erwartet ausgeführt wird. Führen Sie den folgenden Befehl aus, um zu überprüfen, ob der Container Insights-Agent erfolgreich bereitgestellt wurde:
kubectl get ds ama-logs --namespace=kube-system
Wenn Sie Ihren AKS-Cluster so konfigurieren, dass Prometheus-Metriken in Monitor für verwaltetes Prometheus erfasst werden, können Sie den folgenden Befehl ausführen, um zu überprüfen, ob DaemonSet
ordnungsgemäß in den Linux-Knotenpools bereitgestellt wird:
kubectl get ds ama-metrics-node --namespace=kube-system
Diese Ausgabe enthält Informationen zu den DaemonSet
-Features in Ihrem Cluster. Überprüfen Sie die Ausgabe, um sicherzustellen, dass die gleiche Anzahl von Pods den Status bereit, aktuell und gewünschten aufweisen. Wenn sie identisch sind, entspricht die gewünschte Anzahl von Pods, die in der DaemonSet
-Konfiguration angegeben ist, der Anzahl der aktuell ausgeführten und bereiten Pods.
Es wird empfohlen, die gleiche Überprüfung für ReplicaSet- Features durchzuführen. Führen Sie den folgenden Befehl aus, um die ReplicaSet
-Features in allen Namespaces abzurufen:
kubectl get rs -A
Stellen Sie sicher, dass die Zahlen in dieser Ausgabe für jeden Status identisch sind, damit die beabsichtigte Anzahl von Pods oder Replikaten wie erwartet ausgeführt wird. Diskrepanzen können darauf hinweisen, dass eine weitere Untersuchung oder Problembehandlung mithilfe eines der folgenden Befehle erforderlich ist.
kubectl describe: Sie können den Befehl kubectl describe verwenden, um detaillierte Informationen zu Kubernetes-Ressourcen wie Pods, Bereitstellungen und Dienste zu erhalten. Sie erhalten einen umfassenden Überblick über die angegebene Ressource, einschließlich des aktuellen Status, der Ereignisse, der Bedingungen und der zugehörigen Metadaten. Die Informationen werden vom Kubernetes-API-Server abgerufen. Dieser Befehl ist hilfreich für die Problembehandlung und das Verständnis des Status einer Ressource.
Sie können kubectl describe pod <pod-name>
ausführen, um detaillierte Informationen zu einem bestimmten Pod zu erhalten, einschließlich des aktuellen Status, der Ereignisse, Beschriftungen und der Container, die ihm zugeordnet sind. Die Ausgabe zeigt Informationen wie Pod-Status, Ereignisse, Volumes und Bedingungen an.
kubectl logs: Mit dem Befehl kubectl logs können Sie Protokolle abrufen, die von einem Container innerhalb eines Pods generiert werden. Dieser Befehl ist hilfreich für das Debuggen und Troubleshooting. Sie können die Protokolle in Echtzeit anzeigen oder Verlaufsprotokolle aus einem Container abrufen.
Zum Anzeigen von Containerprotokollen können Sie den Befehl kubectl logs <pod-name> -c <container-name>
verwenden. Ersetzen Sie <pod-name>
durch den Namen des Pods. Ersetzen Sie <container-name>
durch den Namen des Containers, aus dem Sie die Protokolle abrufen möchten. Wenn der Pod nur einen Container enthält, müssen Sie den Containernamen nicht angeben. Sie können auch das Flag -f
mit kubectl logs
verwenden, um die Protokolle in Echtzeit zu verfolgen. Dieses Flag ähnelt dem Linux-Befehl tail -f
.
kubectl events: Sie können den Befehl kubectl events zur Problembehandlung verwenden, wenn eine Bereitstellung, ein DaemonSet
, ReplicaSet
oder Pod nicht gestartet wird oder wenn während des Starts ein Problem auftritt. Dieser Befehl stellt eine chronologische Liste von Ereignissen bereit, die der angegebenen Ressource zugeordnet sind. Sie können Erkenntnisse über die mögliche Problemursache gewinnen.
Um kubectl events
zu verwenden, können Sie den Befehl kubectl events
gefolgt vom Namen einer bestimmten Ressource ausführen. Stattdessen können Sie auch Selektoren verwenden, um Ereignisse basierend auf Bezeichnungen, Namespaces oder anderen Kriterien zu filtern.
Um beispielsweise Ereignisse im Zusammenhang mit einem bestimmten Pod abzurufen, können Sie kubectl events --field-selector involvedObject.name=<pod-name> --field-selector involvedObject.kind=Pod
ausführen. Ersetzen Sie <pod-name>
durch den Namen des Pods, den Sie untersuchen möchten. Die Ausgabe des Befehls kubectl events
zeigt Informationen wie den Ereignistyp (normal oder Warnung), die Ereignismeldung, den Grund für das Ereignis und den Zeitstempel des aufgetretenen Ereignisses an. Sie können anhand dieser Informationen ermitteln, was beim Start zu einem Fehler oder Problem geführt hat.
Wenn Sie vermuten, dass bei einer bestimmten Ressource wie einer Bereitstellung, einem DaemonSet
oder ReplicaSet
Probleme auftreten, können Sie Ereignisse mithilfe von Selektoren filtern. Beispielsweise zeigt kubectl events --field-selector involvedObject.name=<deployment-name> --field-selector involvedObject.kind=Deployment
Ereignisse im Zusammenhang mit einer bestimmten Bereitstellung an. Untersuchen Sie Ereignisse, damit Sie wichtige Details zu potenziellen Fehlern, Ausfällen oder anderen Ereignissen sammeln können, die möglicherweise verhindert haben, dass die Ressource ordnungsgemäß gestartet wird. Nutzen Sie diese Daten, um Probleme zu behandeln und zu beheben, die sich auf die Ressource auswirken.
Clusterinterne Überwachung mit Prometheus und Grafana
Wenn Sie Prometheus und Grafana in Ihrem AKS-Cluster bereitstellen, können Sie das K8-Dashboard mit Clusterdetails verwenden, um Erkenntnisse zu gewinnen. Dieses Dashboard zeigt Informationen an, die aus Prometheus-Clustermetriken erfasst wurden, wie CPU-Auslastung, Arbeitsspeicherauslastung, Netzwerkaktivität und Dateisystemnutzung. Außerdem werden hier detaillierte Statistiken zu einzelnen Pods, Containern und Diensten vom Typ systemd angezeigt.
Sie können die Features im Dashboard verwenden, um die Integrität und Leistung Ihrer Bereitstellungen, Aufträge, Pods und Container sicherzustellen. Wählen Sie Bereitstellungen aus, um die Anzahl der Replikate für jede Bereitstellung und die Gesamtanzahl der Replikate anzuzeigen. Wählen Sie Container aus, um ein Diagramm anzuzeigen, das die Anzahl der ausgeführten, ausstehenden, fehlgeschlagenen und erfolgreichen Container anzeigt.
Überwachen des verwalteten Diensts für Prometheus sowie von Azure Managed Grafana
Sie können vordefinierte Dashboards verwenden, um Prometheus-Metriken zu visualisieren und zu analysieren. Dazu müssen Sie Ihren AKS-Cluster so einrichten, dass Prometheus-Metriken im verwalteten Azure Monitor-Dienst für Prometheus gesammelt werden, und Ihren Monitor-Arbeitsbereich mit einem Azure Managed Grafana-Arbeitsbereich verbinden.
Installieren Sie diese integrierten Dashboards, um sich einen umfassenden Einblick in die Leistung und Integrität Ihres Kubernetes-Clusters zu verschaffen. Ausführliche Installationsanweisungen finden Sie unter Prometheus Monitoring Mixin for Kubernetes. Die Dashboards werden in der angegebenen Azure Managed Grafana-Instanz im Ordner Managed Prometheus bereitgestellt. Es folgen einige Beispiele für Dashboards:
- Kubernetes/Computeressourcen/Cluster
- Kubernetes/Computeressourcen/Namespace (Pods)
- Kubernetes/Computeressourcen/Knoten (Pods)
- Kubernetes/Computeressourcen/Pod
- Kubernetes/Computeressourcen/Namespace (Workloads)
- Kubernetes/Computeressourcen/Workload
- Kubernetes/Kubelet
- Knoten-Exporter/USE-Methode/Knoten
- Knoten-Exporter/Knoten
- Kubernetes/Computeressourcen/Cluster (Windows)
- Kubernetes/Computeressourcen/Namespace (Windows)
- Kubernetes/Computeressourcen/Pod (Windows)
- Kubernetes/USE-Methode/Cluster (Windows)
- Kubernetes/USE-Methode/Knoten (Windows)
Diese integrierten Dashboards werden von der Open-Source-Community gerne zum Überwachen von Kubernetes-Clustern mit Prometheus und Grafana verwendet. Verwenden Sie diese Dashboards, um Metriken wie Ressourceneinsatz, Podintegrität und Netzwerkaktivität anzuzeigen. Sie können auch benutzerdefinierte Dashboards erstellen, die auf Ihre Überwachungsanforderungen zugeschnitten sind. Dashboards ermöglichen eine effektive Überwachung und Analyse von Prometheus-Metriken in Ihrem AKS-Cluster, um die Leistung optimieren, Probleme beheben und einen reibungslosen Betrieb Ihrer Kubernetes-Workloads gewährleisten zu können.
Mit dem Dashboard Kubernetes/Computeressourcen/Knoten (Pods) können Sie Metriken für Ihre Linux-Agent-Knoten anzeigen. Sie können die CPU-Auslastung, das CPU-Kontingent, die Arbeitsspeicherauslastung und das Arbeitsspeicherkontingent für jeden Pod visualisieren.
Das Dashboard Kubernetes/Computeressourcen/ Pod Grafana liefert Erkenntnisse über Ressourcenverbrauchs- und Leistungsmetriken eines ausgewählten Clusters, Namespaces und Pods. Mit diesem Dashboard können Sie Metriken im Zusammenhang mit CPU-Auslastung, CPU-Drosselung, CPU-Kontingent, Speicherauslastung, Speicherkontingent, Netzwerkmetriken und Speichermetriken abrufen. Wählen Sie im Dashboard einen AKS-Cluster, einen Namespace und einen Pod im gewählten Namespace aus, um die folgenden Details anzuzeigen:
CPU-Auslastung: In diesem Diagramm wird die CPU-Auslastung für den ausgewählten Pod über einen bestimmten Zeitraum angezeigt. Sie können das CPU-Verbrauchsmuster überprüfen und potenzielle Spitzen oder Anomalien identifizieren.
CPU-Drosselung: Dieses Diagramm bietet Erkenntnisse über die CPU-Drosselung, die auftritt, wenn ein Pod seine CPU-Ressourcengrenzwerte überschreitet. Überwachen Sie diese Metrik, um Bereiche zu identifizieren, in denen die Leistung des Pods aufgrund der CPU-Drosselung eingeschränkt wird.
CPU-Kontingent: In diesem Diagramm wird das zugewiesene CPU-Kontingent für den ausgewählten Pod angezeigt. Wenn der Pod das ihm zugewiesene CPU-Kontingent überschreitet, sind möglicherweise Ressourcenanpassungen erforderlich.
Speicherauslastung: In diesem Diagramm wird die Speicherauslastung des ausgewählten Pods dargestellt. Überwachen Sie das Speicherauslastungsmuster, und identifizieren Sie alle speicherbezogenen Probleme.
Speicherkontingent: In diesem Diagramm wird das zugewiesene Speicherkontingent für den Pod angezeigt. Wenn der Pod das ihm zugewiesene Speicherkontingent überschreitet, kann dies ein Hinweis auf eine notwendige Ressourcenoptimierung sein.
Netzwerkmetriken: Diese Diagramme zeigen die empfangene und übertragene Bandbreite sowie die Rate der empfangenen und übertragenen Pakete an. Diese Metriken helfen Ihnen, die Netzwerknutzung zu überwachen und potenzielle Engpässe oder Anomalien im Netzwerk zu erkennen.
Speichermetriken: Dieser Abschnitt bietet Informationen zu speicherbezogenen Metriken, z. B. E/A-Vorgänge pro Sekunde (IOPS) und Durchsatz. Überwachen Sie diese Metriken, um die Leistung und Effizienz des Pod-Speichers zu messen.
Sie können das Dashboard Kubernetes/Computeressourcen/Pod Grafana verwenden, um Erkenntnisse über die Ressourcennutzung, Leistung und das Verhalten von Pods in Ihrem Kubernetes-Cluster zu gewinnen. Verwenden Sie diese Informationen, um die Ressourcenzuordnung zu optimieren, Leistungsprobleme zu beheben und fundierte Entscheidungen zu treffen, um den reibungslosen Betrieb Ihrer containerisierten Workloads zu gewährleisten.
Beitragende
Dieser Artikel wird von Microsoft gepflegt. Er wurde ursprünglich von folgenden Mitwirkenden geschrieben:
Hauptautor:
- Paolo Salvatori | Principal Customer Engineer
Andere Mitwirkende:
- Kevin Harris | Principal Solution Specialist
- Francis Simy Nazareth | Senior Technical Specialist
Melden Sie sich bei LinkedIn an, um nicht öffentliche LinkedIn-Profile anzuzeigen.