Aide-mémoire CKAD
exemple YAML Job k8s
Un Job lance des Pods jusqu’à N succès. Un CronJob crée des Jobs selon un cron.
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
Champs
- completions
- Succès totaux requis. Pas « combien en même temps ».
- parallelism
- Pods max en parallèle. 3 completions / 2 parallelism → deux, puis un.
- restartPolicy
- Never ou OnFailure. Always est rejeté sur un Job.
- template
- Les labels demandés vont sur template.metadata, pas sur le Job.
- schedule
- Cinq champs, pas six. Minute heure jour mois jour-semaine.
- jobTemplate
- Trois spec : spec.jobTemplate.spec.template.spec.
Pièges
- restartPolicy doit être Never ou OnFailure. Always est rejeté.
- completions = succès totaux. parallelism = Pods max en parallèle. Les labels demandés vont sur template.metadata.
- CronJob empile trois spec : spec.jobTemplate.spec.template.spec. schedule a cinq champs, pas six.