Guide · Kubernetes
Surveiller un CronJob Kubernetes
Un CronJob échoue en silence de deux façons : un Job tourne mais plante, ou le contrôleur cesse complètement de les planifier (deadlines manquées, dérive d'horloge, un mauvais patch). Un interrupteur « homme mort » attrape les deux, car il se déclenche sur le silence, pas sur un événement d'erreur.
1. Créez un check
Créez un check dans Mortemain avec la même période que votre planning, et copiez son URL de ping.
2. Pinguez quand le conteneur réussit
Chaînez un curl après votre commande pour ne pinguer que si le job est sorti proprement. Aucune modification d'image au-delà de la commande :
apiVersion: batch/v1 kind: CronJob metadata: name: etl-nocturne spec: schedule: "0 3 * * *" jobTemplate: spec: template: spec: restartPolicy: OnFailure containers: - name: etl image: votre/etl:latest command: ["/bin/sh", "-c"] args: - >- run-etl.sh && curl -fsS -m 10 https://ping.mortemain.com/votre-uuid-de-check
3. Pas de curl dans l'image ?
Utilisez wget s'il est présent, ou lancez le ping comme deuxième étape avec une image minimale pour que votre image applicative reste intacte :
# si wget est disponible au lieu de curl run-etl.sh && wget -qO- https://ping.mortemain.com/votre-uuid-de-check # ou ajoutez un conteneur init/suivant avec une image légère, ex. curlimages/curl
Testez
kubectl create job --from=cronjob/etl-nocturne test-run et regardez le check passer actif. Puis mettez le CronJob en pause et confirmez que l'alerte de panne arrive après la fenêtre, exactement le mode de défaillance dont Kubernetes ne vous parlera pas.