← Tous les guides

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 :

 cronjob.yaml
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 :

 options
# 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.