- Run workload until N successful completions; Pod stops when work finishes
- Completed Jobs/Pods not auto-cleaned: delete manually or use
ttlSecondsAfterFinished restartPolicy: only OnFailure or Never (not Always): required for Jobs
Job YAML
apiVersion: batch/v1
kind: Job
metadata:
name: db-migrate
spec:
completions: 1
parallelism: 1
backoffLimit: 3
ttlSecondsAfterFinished: 100
template:
spec:
restartPolicy: Never
containers:
- name: migrate
image: myapp:1.0
command: ["python", "manage.py", "migrate"]
Completions & parallelism
Indexed Job
spec:
completions: 5
parallelism: 2
completionMode: Indexed
backoffLimitPerIndex: 1
template:
spec:
restartPolicy: Never
containers:
- name: worker
image: busybox
command: ["sh", "-c", "echo Processing shard $JOB_COMPLETION_INDEX"]
Restart policy
backoffLimit: retries before marking Job failed (default 6)activeDeadlineSeconds: deadline; all running Pods terminated after
Imperative commands
kubectl create job myjob --image=busybox -- echo hello
kubectl get pods --watch -l job-name=myjob
kubectl get jobs
kubectl logs <pod-from-job>