BackoffLimitExceeded ☸️ Kubernetes

Job has reached the specified backoff limit (BackoffLimitExceeded)

The Job’s pods failed more times than backoffLimit (default 6), so Kubernetes marked the Job failed and stopped retrying.

Seen on: Kubernetes

Meaning

The failure is in the pods, not the Job. Failed pods may already be cleaned up; set ttl/history carefully and check the last pod’s logs. CronJobs show the same for each failed run.

Common causes

  • The task itself fails (exception, bad input)
  • Missing config/secret
  • OOMKilled or DeadlineExceeded inside pods
  • Image/command errors

⚡ Quick fix

  1. Get logs of the Job’s pods: kubectl logs job/<name>
  2. Fix the task and recreate the Job (Jobs are immutable)
  3. Raise backoffLimit only if failures are transient

Detailed fix by platform

Kubernetes

  1. bash
    kubectl describe job migrate -n app | sed -n '/Events/,$p'
    kubectl logs job/migrate -n app --tail=100
    kubectl delete job migrate -n app && kubectl apply -f job.yaml

How to diagnose

  1. Pod logs — Why did attempts fail?
  2. Exit codes — 1 app, 137 OOM
  3. Restart policy — Never/OnFailure

🔧 Still not fixed?

Many errors look alike. If the steps above didn’t solve it, one of these is probably what you’re facing:

🧠 Still stuck? Analyze your error

Paste the full message, response headers or stack trace — we'll detect the platform and point to the most likely cause.