Ü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:

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:

Andere Mitwirkende:

Melden Sie sich bei LinkedIn an, um nicht öffentliche LinkedIn-Profile anzuzeigen.

Nächste Schritte