Kubernetes-Monitoring für Einsteiger

Kubernetes ist eines der besten Container-Orchestrierung-Tools, das Ihnen die nahtlose Verwaltung Ihrer containerisierten Workloads ermöglicht.

Vor Kubernetes mussten DevOps-Teams und IT-Teams viele manuelle Schritte durchführen, um ihre containerisierten Applikationen einzurichten, zu verwalten und zu skalieren. Kubernetes hat diesen Prozess revolutioniert, indem es die automatische Bereitstellung, Verwaltung und Skalierung Ihrer Container ermöglicht.

Kubernetes kümmert sich um die komplexen Aufgaben der Container-Orchestrierung und ermöglicht es Unternehmen, sich auf die Applikation zu konzentrieren. Kein Wunder, dass Tech-Giganten wie Google, Spotify, Airbnb und viele andere Kubernetes für die Skalierung ihres Geschäfts einsetzen. Lesen Sie unseren praktischen Leitfaden zu Kubernetes, um die Vorteile von Kubernetes zu entdecken.

Während Kubernetes den Prozess des Container-Managements vereinfacht, erhöht es auch die Komplexität des Monitorings und der Protokollierung verschiedener Metriken. Beides ist wichtig  für DevOps-Teams und IT-Teams, um einen reibungslosen Ablauf zu gewährleisten. In diesem Artikel werden wir das Kubernetes-Monitoring im Detail besprechen.

Was ist Kubernetes-Monitoring?

Kubernetes-Monitoring bezieht sich auf das proaktive Management Ihrer Applikationen, die auf Kubernetes-Clustern bereitgestellt werden. Mithilfe von Kubernetes-Monitoring können Sie den Status Ihrer Kubernetes-Umgebung verfolgen und tiefer in die Nutzung einsteigen. Bevor wir uns mit den Details des Kubernetes-Monitorings befassen, sollten wir uns die wichtigsten Komponenten ansehen.

Was sind die Komponenten von Kubernetes?

Zu den Komponenten von Kubernetes gehören Cluster, Nodes, Pods, Namespaces und Deployments. Aufgrund der dynamischen Natur von Kubernetes und der Interaktion der verschiedenen Objekte und Funktionen werden K8s schnell sehr komplex. Das Monitoring hilft dabei, diese Komplexität zu durchbrechen und den reibungslosen Betrieb der Kubernetes-Umgebung zu gewährleisten.

Warum ist es wichtig, Ihre Kubernetes-Umgebung zu überwachen?

Checkmk Dashboard zur Überwachung eines Kubernetes-Clusters

Das Kubernetes-Monitoring bietet viele Vorteile für Unternehmen. Einige der wichtigsten Vorteile sind:

  1. Optimierung Ihrer Kubernetes-Umgebung. Eine geeignete Monitoring-Software bietet Einblicke in die Ressourcennutzung Ihrer Kubernetes-Umgebung. Durch ein richtig konfiguriertes Monitoring können Sie die Unter- oder Überauslastung der Infrastruktur bewerten und erhalten Alerts, wenn Ihre Metriken einen bestimmten Schwellwert überschreiten.  
  2. Effiziente Fehlersuche. Die Komplexität der Fehlersuche kann problematisch sein. Kubernetes mit einer Monitoring-Software zu überwachen hilft Ihnen, die Protokolle und Daten schnell zu lokalisieren und das Problem zu lösen.
  3. Performance-Optimierung. Auf der Grundlage der Monitoring-Daten können Sie verschiedene Komponenten Ihres Kubernetes-Clusters optimieren, ohne die Performance der Applikation zu beeinträchtigen. Wenn beispielsweise ein Kubernetes-Pod wegen unzureichender Speicherkapazität ausfällt, können Sie diesem Pod mehr Speicher zuweisen.

Warum sollten Sie Kubernetes mit einer Monitoring-Software überwachen?

Die Vorteile des Kubernetes-Monitorings stehen und fallen mit den Funktionen der eingesetzten Monitoring-Lösung. Obwohl es in Kubernetes bereits native Monitoring-Tools gibt, kommen diese aufgrund des limitierten Funktionsumfangs nicht an die Möglichkeiten einer Monitoring-Software heran.

Tools wie Kubernetes Dashboard, kubectl und Log-Aggregation muss man außerdem implementieren, was wiederum einen Overhead verursacht. Zudem eignen sie sich die Hausmittel von Kubernetes hauptsächlich nur für das Status- oder Log-Monitoring. Wenn Sie containerisierte Applikationen auf einem Kubernetes-Cluster in Ihrem Unternehmen betreiben wollen, reicht dies jedoch nicht wirklich aus.

Den nativen Monitoring-Tools fehlen die folgenden wichtigen Funktionen für die Überwachung:

  • Sie verfügen nicht über eine automatische Protokollsammlung und -aggregation. Mit nativen Lösungen müssen Sie Daten manuell sammeln und sinnvoll aggregieren.
  • Sie können keine Audit-Daten sammeln und auswerten. Dadurch können Sie Audit-Ereignisse nicht richtig verfolgen.
  • Ihnen fehlt ein umfassendes Warnsystem, das auf Ressourcenmetriken, vorkonfigurierten Alerts und Protokollwarnungen basiert.

Aufgrund der oben genannten Schwächen nativer Monitoring-Tools ist der Einsatz einer Monitoring-Software empfehlenswert, um die oben genannten Probleme einfach und mühelos zu beheben.

 

Was sind die wichtigsten Metriken beim Kubernetes-Monitoring?

Um einen generellen Überblick über die Gesundheit eines Clusters zu erhalten, müssen Sie bestimmte Metriken im Auge behalten. Zu den Wichtigsten gehören die Anzahl der Nodes in einem Cluster, die Ressourcenauslastung der Nodes und die Anzahl der Pods.

Beim Monitoring von Pods kommt es nicht nur auf die Ressourcenauslastung der einzelnen Pods an, sondern auch um die des jeweiligen Deployments an.

Zudem können Sie die Gesundheit von Deployments, etwa ob die gewünschte Menge an Replikaten bereitsteht, aber auch die Container und ihre Performance überwachen.

Eine Monitoring-Software kann Ihnen aber auch noch detailliertere Einblicke ermöglichen. Sie sollte Ihnen zum Beispiel anzeigen, wenn ein Container ständig abstürzt. Da Kubernetes ihn automatisch neu startet, können Sie dies ansonsten nicht problemlos selbst erkennen. Daher sollten Sie den Zähler der Container-Neustarts nachverfolgen, um dieses Problem im Auge zu behalten.

Allgemeine Performance-Metriken, die Sie überwachen sollten, sind zum Beispiel CPU, Speicher, Dateisysteme, Festplatten-I/O, Kernel-Performance und Threads. Auch sollte das Monitoring entsprechende Schwellwerte setzen, um bei Bedarf Alerts auszulösen.

Wie funktioniert Kubernetes-Monitoring?

Monitoring-Services eines Kubernetes-Nodes mit Metriken

Um Kubernetes zu überwachen, können Sie native Mittel verwenden. Sie können auch Tools verwenden, die Metriken für eine spätere Analyse sammeln und speichern. Oder Sie verfolgen einen holistischen Ansatz, indem Sie Metriken von jedem Node sammeln, wie Checkmk es zum Beispiel tut. Um ein vollständiges Bild zu erhalten, ist die Kombination des Monitorings der Workloads sowie der darunterliegenden Infrastruktur sinnvoll.

Zudem müssen Sie eine Log-Aggregation implementieren, um Muster zu erkennen oder Probleme zu untersuchen.

Das Monitoring der verschiedenen Kubernetes-Objekte unterscheidet sich jedoch voneinander.

Wie überwachen Sie Container in Kubernetes?

Container lassen sich über kubecetl überwachen. Dies ist ein Get-Befehl für den API-Server, der eine JSON-Datei mit dem Status und den Events des Containers liefert. Wenn Sie mehr als einen Container in einem Pod laufen haben, müssen Sie angeben, dass Sie die Daten vom gewünschten Container abrufen möchten. Allerdings stellt die API keine Nutzungsmetriken zur Verfügung.

Sie können auch Tools wie das Kubernetes Dashboard verwenden, um die Daten einer Basis-Metrik in einer Benutzeroberfläche zu erhalten. Allerdings müssen Sie Dashboard implementieren, was einen gewissen Overhead bedeutet.

Um Container zu überwachen, verfügt Kubernetes über die Funktion Liveness Check. Auf dieser Grundlage überwacht Kubernetes anhand von Liveness Probes, ob die Applikation verfügbar ist oder nicht. Alternativ lässt sich der Status auch mittels Readiness Probes ermitteln, in der Regel verwendet man jedoch Liveness Probes.

Wie überwachen Sie Logs in Kubernetes?

Das Log-Monitoring ist vor allem für ein erfolgreiches Troubleshooting wichtig. Mit kubectl können Sie auf die Logs zugreifen und mit der Fehlersuche beginnen, wenn Sie ein Problem feststellen.

Normalerweise arbeitet man jedoch mit Health-Endpunkten, um den Status von Applikationen zu überwachen. Sollte etwas nicht in Ordnung sein, versendet die Monitoring-Software einen Alert.

Wie überwachen Sie Services in Kubernetes?

Services are responsible for the communication of the individual objects within a cluster. They assign a name and a unique IP address to a pod group and ensure that they are accessible to other pods.

However, the monitoring of a service is only interesting when it opens an application to the outside world. The service thus enables access to application endpoints. You can monitor these, for example, with an HTTP check in Checkmk and check the health of the application. So, in the end, you are not monitoring the Kubernetes object ‘service’, but you are using the application service to monitor the application and check whether it is running or not.

Warum funktioniert Kubernetes nicht?

Es gibt viele Gründe, warum ein Kubernetes-Cluster oder -Pod innerhalb eines Clusters fehlerhaft ist. Zu den häufigsten Gründen gehören Ressourcenengpässe, Konfigurationsfehler, Abhängigkeitsprobleme, Netzwerkprobleme und gezielte Angriffe.

Häufige Fehlermeldungen bei Pods sind:

  • CrashLoopBackOff: Dieser Fehler weist darauf hin, dass der Pod nicht gestartet werden kann oder wiederholt abstürzt.
  • ImagePullBackOff: Dieser Fehler zeigt an, dass der Pod nicht in der Lage ist, das erforderliche Container-Image zu beziehen.
  • ErrImagePull: Dieser Fehler weist darauf hin, dass beim Beziehen des erforderlichen Container-Images ein Fehler aufgetreten ist.
  • ErrContainerNotFound: Diese Fehlermeldung besagt, dass der in der Konfiguration des Pods angegebene Container nicht gefunden werden kann.
  • ContainerCannotRun: Dieser Fehler zeigt an, dass der in der Konfiguration des Pods angegebene Container aus irgendeinem Grund nicht ausgeführt werden kann, etwa aufgrund von nicht ausreichenden Ressourcen oder Konfigurationsfehlern.

Die besten Praktiken für Kubernetes-Monitoring

Checkmk Dashboard zur Überwachung eines Kubernetes-Deployments

Ein Kubernetes-Monitoring kann Ihnen eine Menge Vorteile bieten. Unsere Tipps helfen Ihnen dabei, die für Sie richtige Lösung zu finden:

1. Finden Sie die richtige Software für Ihre Anforderungen

Kennen Sie Ihre Anforderungen und wählen Sie die Software, die Ihren Bedürfnissen entspricht. Development-Teams haben beispielsweise andere Anforderungen an das Kubernetes-Monitoring als Cluster-Admins. Einem Development-Team reicht es, wenn eine Software alle benötigten Metriken für eine spätere Analyse speichert. Ein Cluster-Admin hingegen ist für das Ressourcenmanagement verantwortlich und muss unter anderem sicherstellen, dass genügend Ressourcen zur Verfügung stehen, dass die Nodes verfügbar und gesund sind und dass ein Namespace nicht alle Ressourcen aufbraucht. Daher benötigt er eine Monitoring-Software, die alle wichtigen Erkenntnisse und Alerts liefert.

Kubernetes ist sehr komplex und es ist leicht den Überblick zu verlieren. Ihre Monitoring-Software muss daher die Komplexität herausnehmen und mit den dynamischen Änderungen in Kubernetes umgehen können. Es braucht eine automatische Erkennung der Assets und muss außerdem in der Lage sein, mit sich ändernden Workloads umzugehen.

2. Erhalten Sie einen holistischen Überblick

Es reicht nicht aus, nur Ihre Kubernetes-Workloads zu überwachen. Sie müssen auch die Infrastruktur, auf der Ihre Applikation ausgeführt werden – die Worker Nodes –, in Ihr Monitoring integrieren. Dies ist auch in Managed-Kubernetes-Umgebungen der Fall. Sie müssen wissen, was auf Ihren Nodes passiert, falls beispielsweise Zombie-Prozesse ausgelöst werden oder eine Applikation versehentlich Ihr Dateisystem vollschreibt. Beide Fälle könnten Ihre Kubernetes-Umgebung lahmlegen.

3. Behalten Sie die Wissenslücke bei Kubernetes im Auge

Machen Sie sich nicht von einer einzelnen Person abhängig, sondern setzen Sie auf eine Software, die die Komplexität von Kubernetes herunterbricht. Auch wenn sich ein Mitglied Ihres Teams sehr gut mit Kubernetes auskennen sollte, um etwa Monitoring-Alerts einzurichten, müssen auch die anderen mit keinen oder geringen K8s-Kenntnissen in der Lage sein, diese verstehen und nachvollziehen zu können.

Stellen Sie sich folgendes Szenario vor: Ihre Kubernetes-Expert:innen sind nicht verfügbar, und Sie müssen einen Alert für einen bestimmten Kubernetes-Cron-Job einrichten. Nehmen wir an, es wurde folgender Alert eingerichtet oder – was auch häufig passiert – einfach aus dem Internet kopiert:

Regeln, um Cron jobs in Kubernetes mit Prometheus zu überwachen
Quelle: https://stackoverflow.com/questions/47343842/is-there-a-way-to-monitor-kube-cron-jobs-using-prometheus

Wie würden Sie das angehen? Checkmk zum Beispiel stellt nicht nur vorkonfigurierte Alarme für Kubernetes-Objekte bereit. Es weist automatisch Labels zu, die es Ihnen ermöglichen, die Benachrichtigungen leicht an Ihre Bedürfnisse anzupassen.

Fazit

Die Container-Orchestrierungsplattform Kubernetes hat die Art und Weise verändert, wie Unternehmen ihre containerisierten Applikationen erstellen. Es automatisiert die Bereitstellung und Verwaltung von großen Mengen an Containern und reduziert so die manuelle Arbeit bezüglich der Überwachung, dem Ausrollen, Fixen, Kopieren und Migrieren von Containern.

In diesem Artikel sind wir auf verschiedene Aspekte des Kubernetes-Monitorings eingegangen. Wir haben die grundlegende Architektur von Kubernetes, essenzielle Metriken, die zentralen Vorteile und die besten Praktiken für ein effektives Monitoring besprochen.

Checkmk ist eine Monitoring-Lösung, die Sie bei der Überwachung Ihrer Kubernetes-Umgebung unterstützen kann. Die Kubernetes-Monitoring-Software erfasst nicht nur alle wichtigen Aspekte Ihrer Kubernetes-Umgebung, sodass Sie einen holistischen Blick auf Ihre Nodes erhalten. Dank der miteinander verbundenen Kubernetes-Dashboards ermöglicht sie Ihnen auch das Navigieren von Cluster- bis hinunter auf Pod-Ebene, sodass Sie auch ohne Kubernetes-Vorwissen Zusammenhänge in Ihrer Umgebung analysieren können. Nehmen Sie an der Kubernetes-Tour teil, um das Kubernetes-Monitoring in Checkmk live zu erleben.