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.

Anneaux numérotés, chacun avec sa propre caisse. Anneaux numérotés, chacun avec sa propre caisse.
Créer
kubectl create job ping --image=busybox:1.36 -- echo ok
Job YAML
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"]
CronJob YAML
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"]
Inspecter
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.

Doc officielle Jobs CronJobs

S’entraîner sur un cluster réel →