Kubernetes CrashLoopBackOff
A container is repeatedly crashing and restarting in Kubernetes.
Explanation
CrashLoopBackOff occurs when a Kubernetes pod's container is crashing repeatedly and Kubernetes is backing off the restart attempts. The container starts, crashes, Kubernetes waits an increasing amount of time (exponential backoff), then tries again. Common causes include application errors (missing config, database connection failure), misconfigured command/args, missing environment variables, insufficient resources, application bug causing immediate crash, and liveness probe failures. The pod never reaches a running state.
Common Causes
- Application crashes on startup
- Missing environment variables or config
- Database/dependency unreachable
- Incorrect container command/args
- Liveness probe failing
Solution
Check the container logs: kubectl logs pod-name. Check previous crashed container logs: kubectl logs pod-name --previous. Describe the pod for events: kubectl describe pod pod-name. Verify the container command/args are correct. Check that all required environment variables and config maps are present. Ensure database and other dependencies are accessible. Verify the container image works locally. Check resource limits - the container may be OOMKilling. Review liveness/readiness probe configuration. Check for application-level errors in the logs.
Code Example
# Check pod status
kubectl get pods
# NAME READY STATUS RESTARTS AGE
# myapp 0/1 CrashLoopBackOff 5 2m
# Check current logs
kubectl logs myapp-pod-xyz
# Check logs from crashed container
kubectl logs myapp-pod-xyz --previous
# Describe pod for events
kubectl describe pod myapp-pod-xyz
# Look at Events section for errors
# Common fixes:
# 1. Missing config
kubectl get configmap myapp-config
# 2. Database connection - check service
kubectl get svc postgres
kubectl exec -it myapp-pod-xyz -- env | grep DATABASE
# 3. Check command/args
apiVersion: v1
kind: Pod
spec:
containers:
- name: myapp
image: myapp:latest
command: ["node"]
args: ["server.js"] # verify this file exists!
# 4. Check resource limits
kubectl top pod myapp-pod-xyz
# 5. Test image locally
docker run --rm myapp:latest
Error Information
Language
bash
Framework
kubernetes
Difficulty
Intermediate
Views
124
Related Errors
ENOTFOUND
DevOps
Node.js ENOTFOUND
DNS lookup failed because the hostname could not be resolved.
ENOSPC
DevOps
Out of Disk Space
The system or application ran out of disk space.
ErrImagePull
DevOps
Kubernetes Image Pull Back Off
Kubernetes cannot pull the container image from the registry.
DevOps
SSL Certificate Expired
The SSL/TLS certificate for the website has expired and is no longer valid.