CKAD field manual
k8s Job YAML example
A Job runs Pods until N succeed. A CronJob creates Jobs on a schedule.
kubectl create job ping --image=busybox:1.36 -- echo ok
apiVersion: batch/v1
kind: Job
metadata:
name: ping
namespace: default
spec:
completions: 3
parallelism: 2
backoffLimit: 6
template:
metadata:
labels:
job: ping
spec:
restartPolicy: Never
containers:
- name: ping
image: busybox:1.36
command: ["echo", "ok"]
apiVersion: batch/v1
kind: CronJob
metadata:
name: ping
namespace: default
spec:
schedule: "*/5 * * * *"
concurrencyPolicy: Forbid
jobTemplate:
spec:
template:
spec:
restartPolicy: OnFailure
containers:
- name: ping
image: busybox:1.36
command: ["echo", "ok"]
kubectl get job,cronjob,po
kubectl logs job/ping
kubectl delete job ping
Fields
- completions
- Total successes needed. Not “how many run at once”.
- parallelism
- Max Pods at once. 3 completions / 2 parallelism → two run, then one.
- restartPolicy
- Never or OnFailure. Always is rejected on a Job.
- template
- Labels the question wants go on template.metadata, not Job metadata.
- schedule
- Five fields, not six. Minute hour day month weekday.
- jobTemplate
- Three specs deep: spec.jobTemplate.spec.template.spec.
Watch
- restartPolicy must be Never or OnFailure. Always is rejected.
- completions = total successes. parallelism = max Pods at once. Labels the question wants go on template.metadata.
- CronJob nests three specs: spec.jobTemplate.spec.template.spec. schedule is five fields, not six.