Repository navigation
CronJobs
ii02735 edited this page Oct 12, 2026
·
1 revision
Un CronJob planifie des Jobs à intervalles réguliers, comme cron sous Linux : à chaque déclenchement, il crée un Job, qui s'exécute puis se termine.
-
schedulesuit le format cron (5 champs : minute, heure, jour du mois, mois, jour de la semaine) ; - le CronJob ne fait que créer des Jobs : la gestion des Pods (relances, comptage) reste celle d'un Job ;
- un Job créé par un CronJob porte un nom horodaté (ex.
sauvegarde-28313840).
minute heure jour-du-mois mois jour-de-la-semaine
Quelques exemples :
-
"*/30 * * * *": toutes les 30 minutes ; -
"0 2 * * *": chaque jour à 02:00 ; -
"0 0 * * 1": chaque lundi à minuit ; -
"*/10 * * * *": toutes les 10 minutes (la granularité la plus fine de cron).
Note
Le champ spec.timeZone permet de choisir le fuseau horaire du planning (ex. Europe/Paris). Sinon, c'est le fuseau de l'apiserver qui est utilisé.
Que se passe-t-il si un déclenchement arrive alors que le Job précédent tourne encore ?
-
Allow(défaut) : on lance le nouveau Job en même temps. -
Forbid: on saute ce déclenchement, on attend le suivant. -
Replace: on annule le Job en cours et on en démarre un nouveau.
Quand choisir quoi ?
-
Tâche idempotente (envoyer un e-mail, un rapport) →
AllowouReplace. -
Tâche à ne jamais doubler (backup, migration, purge) →
Forbid.
- Si le cluster a été inactif à l'heure prévue (ou le CronJob désactivé), le déclenchement est manqué.
-
startingDeadlineSecondstolère un retard : le Job peut encore être créé tant qu'on reste dans la fenêtre (ex.300= jusqu'à 5 min après l'heure prévue) ; au-delà, le déclenchement est compté comme manqué.
-
successfulJobsHistoryLimit(défaut 3) : combien de Jobs réussis conserver. -
failedJobsHistoryLimit(défaut 1) : combien de Jobs échoués conserver. - Sans ces limites, les Jobs accumulés rempliraient le cluster. On peut aussi les combiner avec
ttlSecondsAfterFinished.
apiVersion: batch/v1
kind: CronJob
metadata:
name: sauvegarde
spec:
schedule: "0 2 * * *"
concurrencyPolicy: Forbid
startingDeadlineSeconds: 300
successfulJobsHistoryLimit: 3
failedJobsHistoryLimit: 1
jobTemplate:
spec:
completions: 1
backoffLimit: 2
template:
spec:
restartPolicy: OnFailure
containers:
- name: backup
image: busybox
command: ["sh", "-c", "echo sauvegarde effectuee"]- Une seule fois → un Job (voir Les Jobs).
- Régulièrement, selon un planning cron → un CronJob.
- Créer un CronJob (impératif) :
kubectl create cronjob sauvegarde --image=busybox --schedule="0 2 * * *" -- echo ok - Lister les CronJobs :
kubectl get cronjobs - Obtenir les détails :
kubectl describe cronjob sauvegarde - Voir les Jobs qu'il a créés :
kubectl get jobs - Supprimer un CronJob (sans supprimer les Jobs déjà créés) :
kubectl delete cronjob sauvegarde
Kubernetes (k8s)
- Accueil
- Vue d'ensemble
- Les containers
- L'orchestration
- L'architecture de k8s
- Les composants de k8s
- Noeud maître vs noeud esclave
- Les namespaces
- Les pods
- Les sondes et le cycle de vie
- Les ReplicaSets
- Les Deployments
- Les Jobs
- Les CronJobs
- Les DaemonSets
- Les StatefulSets
- Les ConfigMaps et Secrets
- Les volumes persistants (PV & PVC)
- Les Services
- Les Ingress
- Le Gateway API
- La mise à l'échelle
- Le RBAC
- Helm
- kubectl