KI-generiertes Bild
11 Juni 2026

Wie funktioniert Container-Health-Checking in Kubernetes?

Kategorien: credativ® Inside
Tags: Kubernetes
KI-Offenlegung:Dieser Inhalt wurde von einer KI erzeugt und von einem Menschen geprüft.

Container-Health-Checking in Kubernetes ist ein automatisiertes System, das kontinuierlich den Zustand von Containern überwacht und bei Problemen entsprechende Maßnahmen einleitet. Kubernetes nutzt verschiedene Probe-Typen wie Liveness, Readiness und Startup Probes, um sicherzustellen, dass Container ordnungsgemäß funktionieren und Anwendungen verfügbar bleiben.

Fehlgeschlagene Health-Checks führen zu unvorhersehbaren Ausfallzeiten

Wenn Container-Health-Checks falsch konfiguriert oder gar nicht implementiert sind, bleiben defekte Container unentdeckt im Cluster aktiv und verursachen sporadische Anwendungsausfälle. Benutzer erhalten Fehlermeldungen, Transaktionen schlagen fehl und der Support wird mit schwer nachvollziehbaren Problemen überlastet. Die Lösung liegt in der präzisen Konfiguration von Liveness und Readiness Probes, die automatisch defekte Container erkennen und neu starten.

Aggressive Health-Check-Parameter verursachen instabile Cluster

Zu kurze Timeouts und niedrige Failure-Schwellenwerte führen dazu, dass gesunde Container fälschlicherweise als defekt erkannt und unnötig neu gestartet werden. Dies erzeugt eine Kaskade von Neustarts, die das gesamte System destabilisiert und die Performance drastisch verschlechtert. Verwenden Sie realistische Timeout-Werte basierend auf der tatsächlichen Startup-Zeit Ihrer Anwendungen und implementieren Sie Startup Probes für langsam startende Container.

Was ist Container-Health-Checking in Kubernetes?

Container-Health-Checking in Kubernetes ist ein Mechanismus zur automatischen Überwachung des Zustands von Containern durch verschiedene Probe-Typen. Das System erkennt defekte Container, startet sie neu oder entfernt sie aus dem Load Balancing, um die Anwendungsverfügbarkeit sicherzustellen.

Kubernetes führt diese Checks regelmäßig durch und reagiert basierend auf den Ergebnissen. Bei fehlgeschlagenen Liveness Probes wird der Container neu gestartet, während fehlgeschlagene Readiness Probes dazu führen, dass der Container temporär aus dem Service-Load-Balancing entfernt wird. Startup Probes bieten zusätzlichen Schutz für Container mit längeren Initialisierungszeiten.

Das Health-Checking erfolgt auf Container-Ebene innerhalb von Pods und ist essenziell für selbstheilende Systeme. Ohne ordnungsgemäße Health-Checks können defekte Container unentdeckt bleiben und Benutzeranfragen an nicht funktionsfähige Instanzen weiterleiten.

Korrekt konfigurierte Health Checks reduzieren manuelle Eingriffe im Betrieb erheblich, da Kubernetes defekte Container eigenständig erkennt und ersetzt. Durch die kontinuierliche Zustandsbewertung berücksichtigt Kubernetes beim Load Balancing gezielt nur gesunde Instanzen, was die Fehlerrate für Endnutzer senkt. Im Zusammenspiel mit dem Horizontal Pod Autoscaler (HPA) ermöglichen Readiness Probes eine präzisere Skalierung, da nur wirklich betriebsbereite Pods in die Lastenverteilung einbezogen werden. Dies führt zu einer effizienteren Ressourcennutzung und senkt die Betriebskosten im Cluster, was Health Checks auch aus unternehmerischer Sicht zu einem zentralen Bestandteil eines stabilen Kubernetes-Betriebs macht.

Welche Arten von Health-Probes gibt es in Kubernetes?

Kubernetes bietet drei Arten von Health-Probes: Liveness Probes erkennen defekte Container und starten sie neu, Readiness Probes bestimmen, ob Container bereit für Traffic sind, und Startup Probes schützen langsam startende Container vor vorzeitigen Neustarts.

  • Liveness Probes überwachen kontinuierlich, ob ein Container ordnungsgemäß funktioniert. Bei wiederholten Fehlschlägen startet Kubernetes den Container automatisch neu. Diese Probes sind besonders wichtig für Anwendungen, die in einen nicht behebbaren Zustand geraten können.
  • Readiness Probes prüfen, ob ein Container bereit ist, Anfragen zu bearbeiten. Container mit fehlgeschlagenen Readiness Probes werden temporär aus dem Service-Endpoint entfernt, bleiben aber weiterhin aktiv. Dies verhindert, dass nicht bereite Container Traffic erhalten.
  • Startup Probes wurden speziell für Container mit langen Initialisierungszeiten entwickelt. Sie deaktivieren Liveness und Readiness Probes während der Startup-Phase und verhindern so vorzeitige Container-Neustarts bei langsam startenden Anwendungen.

Startup-Probe-Berechnung und Zusammenspiel mit der Liveness Probe

Die maximale Startup-Toleranz berechnet sich direkt aus den konfigurierten Parametern: failureThreshold × periodSeconds = maximale Startup-Toleranz in Sekunden. Bei einem failureThreshold von 30 und einem periodSeconds-Wert von 10 hat der Container 300 Sekunden (5 Minuten) Zeit zum Starten. Schlägt die Startup Probe in diesem Zeitraum dauerhaft fehl, beendet Kubernetes den Container und wendet die konfigurierte restartPolicy des Pods an.

Sobald die Startup Probe erfolgreich abgeschlossen ist, übernehmen Liveness und Readiness Probes die laufende Überwachung des Containers. Dieses Zusammenspiel stellt sicher, dass langsam startende Anwendungen ausreichend Zeit zur Initialisierung erhalten, ohne dass die regulären Überwachungsmechanismen dauerhaft deaktiviert bleiben. Für SREs und DevOps-Engineers ist die präzise Dimensionierung dieser Parameter entscheidend, um Restart-Schleifen und instabile Deployments zu vermeiden.

Welchen Probe-Typ sollte man wann verwenden?

Die Wahl des richtigen Probe-Typs und des passenden Probe-Mechanismus ist entscheidend für eine stabile und effiziente Health-Check-Strategie. Die folgende Entscheidungshilfe unterstützt Sie bei der Auswahl der geeigneten Konfiguration für Ihre Anwendungsarchitektur.

Auswahl des Probe-Typs

  • Liveness Probe: Verwenden Sie diese, wenn die Anwendung in einen nicht behebbaren Fehlerzustand geraten kann und ein Neustart des Containers die geeignete Lösung ist.
  • Readiness Probe: Setzen Sie diese ein, wenn die Anwendung vorübergehend nicht in der Lage ist, Anfragen zu bearbeiten, beispielsweise während des Aufbaus einer Datenbankverbindung oder beim Laden externer Konfigurationen.
  • Startup Probe: Wählen Sie diese, wenn die Anwendung mehr als 30 Sekunden zum Starten benötigt und vorzeitige Liveness-Probe-Ausfälle verhindert werden sollen.

Auswahl des Probe-Mechanismus

  • HTTP GET: Geeignet, wenn die Anwendung einen dedizierten HTTP-Health-Endpoint bereitstellt. Dies ist der gängigste und einfachste Mechanismus für webbasierte Dienste.
  • TCP Socket: Sinnvoll, wenn lediglich ein TCP-Port verfügbar ist, aber kein HTTP-Endpoint existiert, zum Beispiel bei Datenbank-Containern oder Message-Brokern.
  • exec (Command): Empfehlenswert, wenn eine benutzerdefinierte Prüflogik erforderlich ist, die sich nicht über HTTP oder TCP abbilden lässt.
  • gRPC: Verwenden Sie diesen Mechanismus, wenn die Anwendung das gRPC Health Checking Protocol implementiert und eine native gRPC-Prüfung bevorzugt wird.

Wie konfiguriert man Liveness Probes richtig?

Liveness Probes werden durch die Definition von Probe-Parametern wie initialDelaySeconds, periodSeconds, timeoutSeconds und failureThreshold in der Pod-Spezifikation konfiguriert. Der Probe-Typ kann HTTP GET, TCP Socket oder Command Execution sein.

Bei HTTP-basierten Liveness Probes sollten Sie einen dedizierten Health-Endpoint verwenden, der den tatsächlichen Anwendungszustand widerspiegelt. Vermeiden Sie Endpoints, die externe Abhängigkeiten prüfen, da diese zu falschen Neustarts führen können:

  • initialDelaySeconds: Wartezeit vor dem ersten Check (empfohlenes Pattern: wenige Sekunden) – seit Kubernetes 1.16+ gilt die Empfehlung, auf eine Startup Probe zu setzen, anstatt initialDelaySeconds, wenn eine lange Startzeit abgefangen werden soll. 
  • periodSeconds: Intervall zwischen Checks (empfohlen 10-30 Sekunden)
  • timeoutSeconds: Timeout pro Check (meist 1-5 Sekunden)
  • failureThreshold: Anzahl fehlgeschlagener Checks vor Neustart (typisch 3-5)

Für TCP Socket Probes geben Sie Port und optional die IP-Adresse an. Command-basierte Probes führen Befehle im Container aus und bewerten den Exit-Code. Stellen Sie sicher, dass die Probe-Logik schnell ausführbar ist und keine ressourcenintensiven Operationen durchführt.

Wann sollte man Readiness Probes verwenden?

Readiness Probes sollten immer dann verwendet werden, wenn Container eine Initialisierungsphase haben oder von externen Abhängigkeiten wie Datenbanken abhängen. Sie verhindern, dass nicht bereite Container Traffic erhalten und verbessern so die Benutzererfahrung.

Implementieren Sie Readiness Probes besonders in folgenden Szenarien: bei Anwendungen mit Datenbankverbindungen, die Zeit zum Aufbau benötigen, bei Services mit umfangreichen Caching-Mechanismen oder wenn Container externe APIs oder Konfigurationsdateien laden müssen. Die Probe sollte alle kritischen Abhängigkeiten prüfen, die für die ordnungsgemäße Anfragenbearbeitung erforderlich sind.

Im Gegensatz zu Liveness Probes können Readiness Probes externe Abhängigkeiten einbeziehen. Wenn beispielsweise die Datenbankverbindung fehlschlägt, ist es sinnvoll, den Container als nicht bereit zu markieren, anstatt ihn neu zu starten. Dies ermöglicht eine automatische Wiederherstellung, sobald die Abhängigkeiten wieder verfügbar sind.

Was sind häufige Fehler beim Health-Checking?

Häufige Fehler beim Health-Checking umfassen zu aggressive Timeout-Einstellungen, die Verwendung derselben Probe für Liveness und Readiness und das Fehlen von Startup Probes bei langsam startenden Anwendungen. Diese Probleme führen zu instabilen Deployments und unnötigen Container-Neustarts.

Ein kritischer Fehler ist die Verwendung zu kurzer initialDelaySeconds-Werte. Wenn Container länger zum Starten benötigen als konfiguriert, werden sie sofort nach dem Start als defekt erkannt und neu gestartet, was zu endlosen Restart-Schleifen führt. Messen Sie die tatsächliche Startup-Zeit Ihrer Anwendung und addieren Sie einen Sicherheitspuffer.

Weitere häufige Probleme sind die Prüfung externer Abhängigkeiten in Liveness Probes, was zu Neustarts führt, obwohl der Container selbst funktionsfähig ist, und die Verwendung ressourcenintensiver Health-Check-Operationen, die die Anwendungsperformance beeinträchtigen. Außerdem vergessen viele Entwickler, die Probe-Konfigurationen für verschiedene Umgebungen anzupassen.

Wie überwacht man Health-Check-Status in Kubernetes?

Health-Check-Status werden über kubectl-Befehle, Kubernetes Events und Monitoring-Tools überwacht. Der Befehl kubectl describe pod zeigt aktuelle Probe-Status und Fehlerhistorien, während kubectl get events Health-Check-bezogene Ereignisse auflistet.

Verwenden Sie kubectl describe pod podname für detaillierte Informationen über Probe-Ausfälle, einschließlich der letzten Fehlermeldungen und Zeitstempel. Das Conditions-Feld zeigt den aktuellen Readiness-Status, während der Restart-Count auf wiederholte Liveness-Probe-Ausfälle hinweist.

Für produktive Umgebungen sollten Sie Monitoring-Lösungen wie Prometheus mit Kubernetes-Metriken implementieren. Diese sammeln Health-Check-Metriken automatisch und ermöglichen Alerting bei häufigen Probe-Ausfällen. Container-Logs liefern zusätzliche Einblicke in die Ursachen von Health-Check-Problemen und sollten zentral gesammelt und analysiert werden.

Szenario 1: CrashLoopBackOff

Zeigt kubectl get pods einen Pod mit dem Status CrashLoopBackOff und einem stetig steigenden RESTARTS-Wert, ist dies ein klares Indiz für eine dauerhaft fehlschlagende Liveness Probe. Führen Sie anschließend kubectl describe pod podname aus und prüfen Sie den Abschnitt Events: Dort erscheint in diesem Fall die Meldung „Liveness probe failed“ zusammen mit dem jeweiligen Fehlerzeitpunkt und der Fehlermeldung des Probes. Überprüfen Sie auf Basis dieser Informationen, ob der konfigurierte Health-Endpoint erreichbar ist und ob initialDelaySeconds ausreichend dimensioniert wurde.

Szenario 2: Pod bereit, aber kein Traffic

Zeigt kubectl get pods den Status Running, aber in der Spalte READY den Wert 0/1, ist der Container aktiv, empfängt jedoch keinen Traffic. Dieser Zustand ist ein typisches Zeichen einer fehlgeschlagenen Readiness Probe: Kubernetes hat den Pod aus dem Service-Endpoint entfernt, ohne ihn neu zu starten. Prüfen Sie mit kubectl describe pod podname im Abschnitt Conditions den Eintrag Ready: False sowie die zugehörigen Events, um die genaue Ursache zu identifizieren, zum Beispiel eine nicht erreichbare Datenbankverbindung oder einen fehlenden externen Dienst.

Szenario 3: Diagnose-Workflow

Für eine strukturierte Fehlerdiagnose empfiehlt sich folgende Befehlssequenz: Beginnen Sie mit kubectl get pods, um einen Überblick über den Status aller Pods und deren Restart-Zähler zu erhalten. Wechseln Sie anschließend zu kubectl describe pod podname, um Probe-Konfigurationen, aktuelle Bedingungen und Event-Meldungen im Detail einzusehen. Ergänzen Sie die Analyse mit kubectl logs podname, um anwendungsseitige Fehlermeldungen zu identifizieren, die auf die eigentliche Ursache des Health-Check-Ausfalls hinweisen. Diese Sequenz deckt die häufigsten Fehlerquellen systematisch ab und verkürzt die Diagnosezeit in produktiven Umgebungen erheblich.

Wie credativ® bei Container-Health-Checking in Kubernetes unterstützt

Wir bei credativ® unterstützen Sie bei der optimalen Implementierung und Überwachung von Container-Health-Checking in Ihren Kubernetes-Umgebungen. Unser Expertenteam hilft Ihnen dabei, robuste und zuverlässige Health-Check-Strategien zu entwickeln:

  • Analyse und Optimierung bestehender Health-Check-Konfigurationen
  • Implementierung maßgeschneiderter Probe-Strategien für Ihre Anwendungsarchitektur
  • Einrichtung umfassender Monitoring- und Alerting-Systeme
  • Schulungen für Ihre Teams zu Best Practices im Container-Health-Checking
  • 24/7 Support bei kritischen Health-Check-Problemen

Kontaktieren Sie uns für eine individuelle Beratung zu Ihrer Kubernetes-Health-Check-Strategie und profitieren Sie von unserer langjährigen Erfahrung im Open Source-Umfeld.

Ähnliche Artikel

Kategorien: credativ® Inside
Tags: Kubernetes
KI-Offenlegung:Dieser Inhalt wurde von einer KI erzeugt und von einem Menschen geprüft.

über den Autor

Peter Dreuw

Head of Sales & Marketing

zur Person

Peter Dreuw arbeitet seit 2016 für die credativ GmbH und ist seit 2017 Teamleiter. Seit 2021 ist er Teil des Management-Teams als VP Services der Instaclustr. Mit der Übernahme durch die NetApp wurde seine neue Rolle "Senior Manager Open Source Professional Services". Im Rahmen der Ausgründung wurde er Mitglied der Geschäftsleitung als Prokurist. Sein Aufgabenfeld ist die Leitung des Vertriebs und des Marketings. Er ist Linux-Nutzer der ersten Stunden und betreibt Linux-Systeme seit Kernel 0.97. Trotz umfangreicher Erfahrung im operativen Bereich ist er leidenschaftlicher Softwareentwickler und kennt sich auch mit hardwarenahen Systemen gut aus.

Beiträge ansehen


Beitrag teilen: