# Job has reached the specified backoff limit

- **ID:** `kubernetes/job-backoff-limit-exceeded`
- **Domain:** kubernetes
- **Category:** runtime_error
- **Verification:** ai_generated
- **Fix Rate:** 85%

## Root Cause

A Kubernetes Job's pod has failed more times than the backoffLimit allows, causing the Job to stop retrying.

## Version Compatibility

| Version | Status | Introduced | Deprecated |
|---------|--------|------------|------------|
| Kubernetes v1.26.0 | active | — | — |
| Kubernetes v1.28.0 | active | — | — |
| Kubernetes v1.30.0 | active | — | — |

## Workarounds

1. **Check the logs of the failed pod: `kubectl logs job/my-job --previous` to see the last attempt's error.** (90% success)
   ```
   Check the logs of the failed pod: `kubectl logs job/my-job --previous` to see the last attempt's error.
   ```
2. **Fix the container command or image, then delete and recreate the Job: `kubectl delete job my-job && kubectl create job my-job --image=correct-image -- /correct-command`.** (85% success)
   ```
   Fix the container command or image, then delete and recreate the Job: `kubectl delete job my-job && kubectl create job my-job --image=correct-image -- /correct-command`.
   ```
3. **If the failure is transient, increase backoffLimit and add a restartPolicy: set `backoffLimit: 10` and `restartPolicy: OnFailure` in the Job spec.** (70% success)
   ```
   If the failure is transient, increase backoffLimit and add a restartPolicy: set `backoffLimit: 10` and `restartPolicy: OnFailure` in the Job spec.
   ```

## Dead Ends

- **Increasing backoffLimit to a very high number without fixing the underlying pod failure** — The Job will still fail after exhausting the new limit; the root cause in the container remains. (70% fail)
- **Deleting and recreating the Job with the same spec** — The same pod failures will repeat because the container image or command is still broken. (90% fail)
