PerfectScale

Kubernetes Events: Anzeigen, Filtern und Troubleshooting

Diese Seite ist auch in English, Español, Français, Italiano, 日本語 und Português verfügbar.

Josh Palmer
By Josh Palmer
Jun 11, 202613 min read

Was sind Kubernetes Events?

TL;DR: Kubernetes Events sind kurzlebige Echtzeit-API-Ressourcen, die immer dann erzeugt werden, wenn in Ihrem Cluster eine Statusänderung, ein Fehler oder eine relevante Aktivität auftritt. Sie helfen beim Debugging und beim Auditing der Cluster-Gesundheit. Events erfassen, was passiert ist, welches Objekt betroffen war, wann es geschah, sowie eine kurze, lesbare Beschreibung.

Wesentliche Eigenschaften:

  • Typen: Üblicherweise eingeteilt in Normal (reguläre, erwartbare Änderungen) oder Warning (etwa Back-off-Schleifen oder Scheduling-Probleme).
  • Aufbewahrung: Events sind flüchtig. Sie werden in etcd standardmäßig nur bis zu einer Stunde gespeichert, bevor sie per Garbage Collection entfernt werden.
  • Kernattribute: Jedes Event enthält Last Seen, Type, Reason, Object (z. B. Pod/web-server) sowie eine Message, die den Statusübergang beschreibt.

So lassen sich Events anzeigen:

Nutzen Sie den integrierten Befehl kubectl events, um Events direkt im Terminal zu prüfen und zu überwachen:

  • Alle aktuellen Events im Standard-Namespace anzeigen: kubectl events
  • Events über alle Namespaces hinweg anzeigen: kubectl events --all-namespaces
  • Events einer bestimmten Ressource in Echtzeit beobachten: kubectl events --for pod/<pod-name> --watch
  • Aktuelle Events im YAML-Format anzeigen: kubectl events -o yaml

Dieser Artikel ist Teil einer Reihe zum Thema Kubernetes-Troubleshooting.

In diesem Artikel:


Wesentliche Eigenschaften von Kubernetes Events

1. Typen

Kubernetes Events werden im Wesentlichen in zwei Typen unterteilt: Normal und Warning:

  • Normal-Events signalisieren erfolgreiche oder erwartete Vorgänge, etwa das Erstellen eines Pods oder ein erfolgreiches Scheduling durch die Control Plane. Sie sind informativ und helfen, den regulären Betrieb von Ressourcen nachzuvollziehen.
  • Warning-Events weisen auf unerwartete oder problematische Zustände hin, etwa Scheduling- oder Image-Pull-Fehler. Solche Warnungen sind entscheidend, um Probleme früh zu erkennen und gegenzusteuern, bevor daraus größere Ausfälle oder Service-Störungen entstehen.

Beide Typen erfüllen unterschiedliche Zwecke, sind aber für die Observability des Clusters gleichermaßen wichtig. Normal-Events bestätigen, dass Ressourcen sich wie vorgesehen verhalten, während Warning-Events als Frühwarnsystem für Fehler oder Fehlkonfigurationen dienen.

2. Aufbewahrung

Kubernetes Events werden im etcd-Datastore des Clusters gespeichert, jedoch nicht dauerhaft. Standardmäßig bleiben sie eine Stunde erhalten; dieser Zeitraum lässt sich in den API-Server-Einstellungen anpassen.

Das kurze Aufbewahrungsfenster soll die Performance des Clusters möglichst wenig belasten und verhindern, dass etcd mit flüchtigen oder sich wiederholenden Event-Daten überlastet wird. Gleichzeitig heißt das: Wer Events analysieren oder für tiefergehende Untersuchungen exportieren möchte, muss zügig handeln.

Wegen der begrenzten Aufbewahrung ist es nicht empfehlenswert, sich für langfristiges Auditing oder Post-mortem-Analysen allein auf den clusterinternen Event-Store zu verlassen. Für Umgebungen mit längerem Event-Verlauf empfiehlt es sich, Events in ein externes Logging- oder Monitoring-System zu exportieren.

3. Kernattribute

Jedes Kubernetes Event enthält mehrere Kernattribute, die Kontext darüber liefern, was passiert ist und wo. Wichtige Attribute sind:

  • Das betroffene Objekt (etwa ein Pod oder Node)
  • Der Event-Typ (Normal oder Warning)
  • Ein Reason-Code, der die Ursache zusammenfasst
  • Eine lesbare Message
  • Zeitstempel für das erste und letzte Auftreten des Events

Diese strukturierten Attribute erleichtern Filtern, Suchen und das Korrelieren mit anderen Observability-Daten. Ihr Verständnis ist die Grundlage für effektives Troubleshooting. So liefern die Felder Reason und Message häufig direkt Hinweise auf zugrunde liegende Probleme, während Zeitstempel helfen, die Reihenfolge zusammenhängender Events zu bestimmen. Die Referenz auf das betroffene Objekt erlaubt den gezielten Blick in die betroffene Ressource.


Kubernetes Events vs. Logs vs. Metriken

Kubernetes Events, Logs und Metriken erfüllen in der Cluster-Observability jeweils unterschiedliche Aufgaben:

  • Events erfassen übergeordnete Statusänderungen und wichtige Aktionen innerhalb von Kubernetes-Ressourcen, etwa Pod-Scheduling oder Fehler.
  • Logs liefern detaillierte, zeitgestempelte Aufzeichnungen über Anwendungs- oder Systemaktivitäten und geben tiefen Einblick in das Geschehen innerhalb der Container oder der Kubernetes-Komponenten selbst.
  • Metriken sind numerische Messwerte über die Zeit, etwa CPU- oder Speicherauslastung. Sie dienen dem Trend-Monitoring und dem Auslösen von Alerts.

Während Events sich eignen, um den Lebenszyklus von Cluster-Ressourcen nachzuverfolgen und die Ursache plötzlicher Änderungen zu identifizieren, sind Logs besser geeignet, um Anwendungsverhalten zu debuggen und komplexe Probleme zu diagnostizieren. Metriken erlauben es, Ressourcenzustand und Performance im großen Maßstab zu überwachen und unterstützen Kapazitätsplanung und Autoscaling.


Kubernetes Events anzeigen

Kubernetes bietet mehrere Wege, Events direkt über die Kommandozeile mit kubectl anzuzeigen. Am gebräuchlichsten ist der Befehl kubectl get events, der eine Liste der Events aus dem aktuellen Namespace abruft. Die Ausgabe enthält Details wie Event-Typ, Reason, betroffenes Objekt und Message.

Um Events über alle Namespaces hinweg anzuzeigen, ergänzen Sie das Flag --all-namespaces.

Terminal window
kubectl get events
kubectl get events --all-namespaces

Da Events zeitkritisch sind, ist es beim Troubleshooting oft hilfreich, sie nach Zeitstempel zu sortieren. Kubernetes erlaubt das Sortieren nach Erstellungszeit über die Option --sort-by. So lässt sich die Reihenfolge der Aktionen vor einem Fehler oder Deployment-Problem nachvollziehen.

Terminal window
kubectl get events --sort-by=.metadata.creationTimestamp

Events zu einer bestimmten Ressource lassen sich gezielt mit kubectl describe prüfen. Beim Beschreiben eines Pods werden neben den Ressourcendetails am Ende ein eigener Events-Abschnitt angezeigt. Das ist einer der schnellsten Wege, um Probleme wie fehlgeschlagenes Scheduling, Container-Crashes oder Image-Pull-Fehler zu erkennen.

Terminal window
kubectl describe pod my-pod

In Produktivumgebungen werden Events häufig in zentrale Observability-Plattformen wie Elasticsearch, Loki oder cloud-native Monitoring-Tools integriert. Das ermöglicht längere Aufbewahrung, erweiterte Suche sowie die Korrelation mit Logs und Metriken — und macht Troubleshooting im großen Maßstab effizienter.


Kubernetes Events filtern

Das Filtern von Kubernetes Events hilft, sich beim Troubleshooting auf die wesentlichen Informationen zu konzentrieren. Da Cluster große Mengen an Events erzeugen können, lassen sich Probleme durch Filtern nach Namespace, Objekt, Typ oder Reason schneller eingrenzen.

1. Am einfachsten ist es, die Ergebnisse auf einen bestimmten Namespace zu beschränken.

Terminal window
kubectl get events -n production

2. Field Selectors bieten erweiterte Filtermöglichkeiten. Events lassen sich nach Name oder Kind des betroffenen Objekts, nach Reason oder Event-Typ filtern. Der folgende Befehl zeigt beispielsweise nur Warning-Events an — also jene, die typischerweise mit Fehlern oder abnormalen Zuständen einhergehen.

Terminal window
kubectl get events --field-selector type=Warning

3. Um Events zu einem bestimmten Pod anzuzeigen, filtern Sie nach dem Objektnamen.

Terminal window
kubectl get events --field-selector involvedObject.name=my-pod

Auch das Filtern nach Reason ist nützlich, wenn wiederkehrende Probleme diagnostiziert werden sollen. So lassen sich etwa Scheduling-Fehler im gesamten Cluster aufspüren.

Terminal window
kubectl get events --field-selector reason=FailedScheduling

4. Kubernetes Events lassen sich zudem in Echtzeit streamen — mit dem Flag --watch. Das ist während Deployments oder im Incident Response besonders wertvoll, da neue Events fortlaufend angezeigt werden, sobald sie auftreten.

Terminal window
kubectl get events --watch

Für fortgeschrittenere Workflows werden Events üblicherweise in Monitoring- und Logging-Plattformen exportiert, wo sich komplexe Abfragen, Dashboards und Alerts einrichten lassen. So können Teams die Incident-Erkennung automatisieren und Events mit Logs und Metriken korrelieren, um Ursachen schneller zu finden.


Häufige Kubernetes-Event-Typen und Ursachen

Normal-Events

Normal-Events stehen für erwartete oder erfolgreiche Vorgänge im Kubernetes-Cluster. Beispiele sind die Pod-Erstellung, erfolgreiche Image-Pulls oder das Beitreten von Nodes zum Cluster. Diese Events bestätigen, dass Control Plane und Ressourcen wie vorgesehen funktionieren. Wer Normal-Events sichtet, kann überprüfen, ob Workflows — etwa Deployments oder Autoscaling — fehlerfrei voranschreiten und der Cluster reibungslos läuft.

Bedeutung: Obwohl rein informativ, sind Normal-Events für Troubleshooting und Auditing hilfreich. Wer Probleme untersucht, kann anhand des Vorhandenseins oder Fehlens bestimmter Normal-Events eingrenzen, an welcher Stelle ein Prozess vom erwarteten Pfad abgewichen ist. So kann etwa ein fehlendes "Scheduled"-Event während der Pod-Erstellung auf ein Scheduling-Problem hinweisen, selbst wenn keine Warnungen erzeugt wurden.

Warning-Events

Warning-Events deuten auf Probleme oder unerwartete Zustände im Kubernetes-Cluster hin. Sie signalisieren etwa fehlgeschlagenes Scheduling, Image-Pull-Fehler oder Verletzungen von Ressourcenbeschränkungen. Sie werden erzeugt, wenn die Control Plane oder zugrunde liegende Komponenten auf Situationen stoßen, die Aufmerksamkeit erfordern, aber nicht zwangsläufig zu einem unmittelbaren Ressourcenausfall führen.

Bedeutung: Die Überwachung von Warning-Events ist entscheidend für ein proaktives Cluster-Management. Da sie Abweichungen vom Normalbetrieb hervorheben, sind sie häufig der erste Hinweis auf Fehlkonfigurationen, Ressourcenengpässe oder Infrastrukturprobleme.


Troubleshooting mit Kubernetes Events

1. Pod hängt im Status Pending

Bleibt ein Pod im Status Pending, kann Kubernetes ihn in der Regel nicht auf einem Node platzieren oder einen der vor dem Start nötigen Initialisierungsschritte nicht abschließen. Events sind oft der schnellste Weg, die Ursache zu identifizieren, da sie direktes Feedback von Scheduler und kubelet liefern. Häufige Gründe sind unzureichende CPU- oder Speicherressourcen, fehlende PersistentVolumeClaims, Node-Taints oder nicht erfüllte Affinity-Regeln.

Mit folgendem Befehl lassen sich Events zum Pod prüfen:

Terminal window
kubectl describe pod my-pod

Im Events-Abschnitt zeigt Kubernetes unter Umständen Meldungen wie FailedScheduling an, samt Erläuterung, warum kein passender Node gefunden wurde. So kann ein Event etwa darauf hinweisen, dass den Nodes verfügbare Ressourcen fehlen oder dass Taints das Scheduling verhindern. Diese Meldungen helfen, das Troubleshooting schnell einzugrenzen, ohne tief in Scheduler-Logs eintauchen zu müssen.

Eine weitere nützliche Vorgehensweise ist das clusterweite Filtern von Scheduling-Events:

Terminal window
kubectl get events --field-selector reason=FailedScheduling

Durch das Sichten dieser Events lässt sich erkennen, ob das Problem auf einen einzelnen Workload begrenzt ist oder mehrere Pods im Cluster betrifft. Pending-Pods löst man häufig durch Skalieren der Cluster-Ressourcen, Anpassen der Resource Requests, Beheben von Storage-Abhängigkeiten oder Aktualisieren der Scheduling-Constraints.

2. ImagePullBackOff oder ErrImagePull

ImagePullBackOff- und ErrImagePull-Events treten auf, wenn Kubernetes ein Container-Image nicht aus einer Registry herunterladen kann. Häufige Ursachen sind falsche Image-Namen, fehlende Tags, Authentifizierungsfehler oder Probleme mit der Netzwerkverbindung. Events liefern detaillierte Meldungen dazu, warum der Image-Pull fehlgeschlagen ist, und sind damit essenziell für die Diagnose von Deployment-Problemen.

Am schnellsten lässt sich der betroffene Pod über describe untersuchen:

Terminal window
kubectl describe pod my-pod

Im Events-Abschnitt finden sich häufig Meldungen wie Failed to pull image oder Back-off pulling image. Diese können Fehler wie ungültige Image-Referenzen, verweigerten Registry-Zugriff oder fehlende Anmeldedaten offenbaren. Erfordert die Registry Authentifizierung, weist Kubernetes unter Umständen auch darauf hin, dass das konfigurierte Image-Pull-Secret ungültig oder nicht verfügbar ist.

Prüfen Sie Image-Namen und Tag in der Pod-Spezifikation, stellen Sie die Erreichbarkeit der Registry sicher und vergewissern Sie sich, dass die erforderlichen Secrets im richtigen Namespace vorhanden sind. Sobald das Problem behoben ist, versucht Kubernetes automatisch erneut, das Image zu ziehen, und startet den Container erfolgreich.

3. CrashLoopBackOff

Ein CrashLoopBackOff-Event zeigt an, dass ein Container zwar erfolgreich startet, kurz darauf jedoch immer wieder abstürzt. Kubernetes versucht fortlaufend, den Container neu zu starten, und erhöht nach jedem Fehlschlag die Wartezeit zwischen den Versuchen. Typische Ursachen sind Anwendungsfehler, eine ungültige Konfiguration, fehlende Abhängigkeiten oder fehlgeschlagene Health Checks.

Events helfen, das Neustart-Muster und die damit verbundenen Fehler zu identifizieren:

Terminal window
kubectl describe pod my-pod

Die Ausgabe kann Events wie Back-off restarting failed container enthalten. Während Events das Neustartverhalten sichtbar machen, liefern Container-Logs in der Regel die konkrete Ursache des Absturzes.

Häufig kombiniert man die Event-Analyse mit dem Prüfen der Logs:

Terminal window
kubectl logs my-pod

Häufige Neustart-Events können auch auf fehlgeschlagene Liveness Probes oder Ressourcen-Engpässe wie Out-of-Memory-Kills hindeuten. In diesen Fällen ist es wichtig, Probe-Konfigurationen und die Resource Limits der Container zu überprüfen.

4. FailedScheduling

FailedScheduling-Events treten auf, wenn der Kubernetes-Scheduler einen Pod keinem verfügbaren Node zuweisen kann. Sie zählen zu den häufigsten Warning-Events in Produktionsclustern und deuten typischerweise auf Ressourcenengpässe oder restriktive Scheduling-Regeln hin. Der Scheduler erzeugt detaillierte Meldungen, die beschreiben, warum die Platzierung fehlgeschlagen ist.

Mit folgendem Befehl lassen sich Scheduling-Events anzeigen:

Terminal window
kubectl get events --field-selector reason=FailedScheduling

Typische Meldungen sind unzureichende CPU oder Speicher, Mismatches bei Node-Affinity, Taint-Konflikte oder Einschränkungen bei der Volume-Topologie. So kann ein Event etwa melden, dass kein Node die Resource Requests des Pods erfüllt oder dass alle Nodes mit Taints belegt sind, die der Pod nicht toleriert.

Die Event-Meldung zu verstehen ist entscheidend, denn FailedScheduling ist ein Symptom und nicht die eigentliche Ursache. Zur Behebung kann es nötig sein, Cluster-Kapazität hinzuzufügen, Resource Requests anzupassen, Affinity-Regeln zu aktualisieren oder Tolerations korrekt zu konfigurieren. Da Scheduling-Probleme viele Workloads gleichzeitig betreffen können, hilft das Überwachen solcher Events dabei, clusterweite Kapazitäts- oder Konfigurationsprobleme frühzeitig zu erkennen.


Best Practices für die Arbeit mit Kubernetes Events

Hier einige nützliche Praktiken rund um Events, die Sie beim Einsatz von Kubernetes berücksichtigen sollten.

1. Beim Troubleshooting früh Events prüfen

Kubernetes Events sollten zu den ersten Anlaufstellen gehören, wenn Cluster- oder Anwendungsprobleme diagnostiziert werden. Sie geben Aufschluss über aktuelle Statusänderungen, Fehler und Aktionen der Control Plane.

Befehle wie kubectl describe oder kubectl get events --sort-by=.metadata.creationTimestamp machen Scheduling-Fehler, Container-Restarts oder Image-Pull-Probleme sichtbar. Ein früher Blick auf die Events hilft zu klären, ob das Problem in der Kubernetes-Infrastruktur, in der Workload-Konfiguration oder in der Anwendung selbst liegt.

Da Events chronologisch erfasst werden, lässt sich anhand von ihnen die Abfolge der Aktionen rekonstruieren, die zu einem Fehler geführt haben. Das ist bei Deployments, Rollouts oder im Incident Response besonders nützlich.

2. Events mit Logs und Metriken kombinieren

Events liefern Kontext, entfalten ihre Wirkung aber erst im Zusammenspiel mit Logs und Metriken. Events erklären, was auf der Ebene der Kubernetes-Ressourcen passiert ist, Logs zeigen das detaillierte Verhalten von Anwendungen oder Komponenten, und Metriken ergänzen Performance- und Auslastungsdaten über die Zeit.

So kann ein CrashLoopBackOff-Event etwa auf wiederholte Container-Restarts hindeuten — warum der Container abgestürzt ist, lässt sich aber meist nur über die Anwendungslogs klären. Metriken können wiederum eine Speicher-Erschöpfung oder CPU-Throttling offenlegen, die zum Ausfall beigetragen haben. Durch das Korrelieren dieser Signale gelangt man von der reinen Symptomerkennung zur eigentlichen Ursachenanalyse.

Observability-Plattformen integrieren Events, Logs und Metriken häufig in ein einheitliches Dashboard. So lassen sich Probleme über mehrere Stack-Ebenen hinweg nachverfolgen.

3. Events zur Aufbewahrung exportieren

Kubernetes Events sind per Design temporär und werden in etcd in der Regel nur kurz vorgehalten. Dadurch können diagnostisch wichtige Informationen kurz nach einem Vorfall verloren gehen. Der Export von Events in ein externes System stellt sicher, dass historische Event-Daten für Analyse und Audit weiterhin verfügbar bleiben.

Viele Organisationen leiten Events daher in zentrale Observability-Plattformen wie Elasticsearch, Loki, Splunk oder cloud-native Monitoring-Services weiter. Diese Systeme bieten längere Aufbewahrung, erweiterte Abfragen, Dashboards und die Korrelation mit Logs und Metriken.

Ein erhaltener Event-Verlauf ist für Post-mortem-Analysen und das Erkennen wiederkehrender Betriebsmuster wertvoll.

4. Nur bei aussagekräftigen Events alarmieren

Nicht jedes Kubernetes Event erfordert einen Alert. Große Cluster erzeugen riesige Mengen informativer Events; ein Alert auf jedes einzelne führt zu Rauschen und Alert Fatigue. Konzentrieren Sie Alerts stattdessen auf aussagekräftige Warning-Events, die auf operative Probleme oder Service-Risiken hinweisen.

Beispiele sind wiederholte FailedScheduling-, CrashLoopBackOff-, ImagePullBackOff- oder Node-bezogene Warning-Events. Das Filtern von Alerts nach Event-Typ, Reason, Häufigkeit oder betroffenen Ressourcen reduziert überflüssige Benachrichtigungen.

Effektives Event-Alerting sollte umsetzbare Signale über das reine Event-Volumen stellen.

5. Nicht auf den exakten Wortlaut von Event-Messages verlassen

Kubernetes-Event-Messages sind auf Lesbarkeit ausgelegt und können sich zwischen Kubernetes-Versionen oder Implementierungen ändern. Wer in Skripten, Automatisierungen oder Monitoring-Regeln auf den genauen Wortlaut setzt, baut fragile Workflows, die nach Upgrades oder Plattformwechseln brechen.

Statt vollständige Event-Messages abzugleichen, sollten Sie auf strukturierte Felder wie Event Reason, Type, betroffenes Objekt oder Labels setzen. Diese Felder sind stabiler und für programmatisches Filtern und Automatisierung gedacht. So ist beispielsweise das Matching auf den Reason FailedScheduling zuverlässiger als die Suche nach einem bestimmten Scheduler-Fehlerstring.


Über Events hinaus: Kubernetes-Probleme erkennen und beheben mit PerfectScale

Kubernetes Events zeigen Ihnen, was schiefgelaufen ist — in großen Umgebungen darauf zu reagieren, bedeutet jedoch nach wie vor permanente manuelle Triage. PerfectScale by DoiT schließt diese Lücke, indem es autonom genau jene Resilienz- und Performance-Probleme erkennt und behebt, die Events sichtbar machen — etwa OOM-Kills, CPU-Throttling, Evictions und wiederholte Pod-Restarts — und gleichzeitig kontinuierliches Right-Sizing der Workloads betreibt, damit Cluster stabil bleiben und eine Verfügbarkeit von bis zu 99,99 % erreichen.

Zentrale Funktionen von PerfectScale:

  • Automatische Problembehebung: Erkennt und behebt Resilienz-Risiken wie Out-of-Memory-Kills, CPU-Throttling, Evictions und Pod-Restarts unmittelbar — für maximale Uptime und ohne zusätzliche Latenz.
  • Vermeidung von Konfigurationsfehlern: Erkennt Fehlkonfigurationen wie fehlende CPU- und Memory-Requests oder -Limits, vermutete Memory Leaks sowie Workloads, die ihre maximale Replica-Zahl erreichen, bevor sie Incidents auslösen.
  • Härtung der Infrastruktur: Schafft ganzheitliche Transparenz über Ihre Nodes hinweg, um Probleme wie Node-Übercommitment oder unpassende Node-Affinities und Taints proaktiv aufzudecken, die zu Evictions und Scheduling-Fehlern führen.
  • Wirkungsorientierte Priorisierung: Bewertet Probleme in Echtzeit und richtet das Alerting an Ihren SLAs und SLOs aus, damit Teams sich auf die Probleme konzentrieren, die die Service-Konsistenz am stärksten beeinträchtigen.
  • Integriertes Alerting und Ticketing: Sendet sofortige Benachrichtigungen über Slack, MS Teams oder Datadog und ermöglicht es, jedes Problem mit einem Klick in ein Ticket zu eskalieren.

Erfahren Sie mehr darüber, wie PerfectScale Ihre Kubernetes-Resilienz und -Performance autonom steigert.