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) oderWarning(etwa Back-off-Schleifen oder Scheduling-Probleme). - Aufbewahrung: Events sind flüchtig. Sie werden in
etcdstandardmäß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 eineMessage, 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
- Kubernetes Events vs. Logs vs. Metriken
- Kubernetes Events anzeigen
- Kubernetes Events filtern
- Häufige Kubernetes-Event-Typen und Ursachen
- Troubleshooting mit Kubernetes Events
- Best Practices für die Arbeit mit Kubernetes Events
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.
kubectl get events
kubectl get events --all-namespacesDa 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.
kubectl get events --sort-by=.metadata.creationTimestampEvents 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.
kubectl describe pod my-podIn 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.
kubectl get events -n production2. 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.
kubectl get events --field-selector type=Warning3. Um Events zu einem bestimmten Pod anzuzeigen, filtern Sie nach dem Objektnamen.
kubectl get events --field-selector involvedObject.name=my-podAuch das Filtern nach Reason ist nützlich, wenn wiederkehrende Probleme diagnostiziert werden sollen. So lassen sich etwa Scheduling-Fehler im gesamten Cluster aufspüren.
kubectl get events --field-selector reason=FailedScheduling4. 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.
kubectl get events --watchFü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:
kubectl describe pod my-podIm 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:
kubectl get events --field-selector reason=FailedSchedulingDurch 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:
kubectl describe pod my-podIm 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:
kubectl describe pod my-podDie 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:
kubectl logs my-podHä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:
kubectl get events --field-selector reason=FailedSchedulingTypische 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.