CrashLoopBackOff ist ein Zustand eines Kubernetes-Pods, bei dem ein Container wiederholt startet, sofort abstürzt und vom Kubelet neu gestartet wird. kubectl get pods zeigt dann in der Status-Spalte CrashLoopBackOff.

Backoff-Verzögerung

Das Kubelet wartet zwischen den Neustartversuchen mit exponentiell wachsender Verzögerung: 10, 20, 40 Sekunden und so weiter, gedeckelt bei fünf Minuten. Nach etwa zehn Minuten fehlerfreien Laufs wird der Zähler zurückgesetzt. Die Neustarts folgen der Restart Policy — Standard ist Always, dann versucht das Kubelet es auch nach einem Fehler erneut. Der Backoff gilt für alle Container des Pods.

Typische Ursachen

  • Konfigurationsfehler: fehlende Secrets oder ConfigMaps, falsche Argumente oder Umgebungsvariablen
  • Abhängigkeiten nicht erreichbar: Datenbank oder anderer Dienst antwortet beim Start noch nicht
  • Ressourcen: der Container wird wegen seines Limits per OOMKilled beendet (Exit-Code 137)
  • Probleme im Anwendungscode, die einen sofortigen Absturz verursachen
  • Eine Liveness-Probe schlägt dauerhaft fehl

Diagnose

kubectl logs <pod> --previous
kubectl describe pod <pod>

Die Logs des letzten Laufs zeigen die Absturzursache; kubectl describe listet Events und den letzten Zustand (Last State: Terminated mit Exit-Code und Grund). Weitere Hilfen stehen unter kubectl-Befehle. Der Lebenslauf eines Pods ist im Artikel Kubernetes Pod Lifecycle erklärt.

Verwandte Grundlagen: Kubernetes Termination Grace Period, Kubernetes Image Pull Policy.