Tous les produits
Search
Centre de documentation

Container Service for Kubernetes:Create CronJobs for scheduled tasks

Dernière mise à jour :Aug 11, 2026

Un CronJob est un type de workload qui ne gère pas directement les Pods. Il crée des instances Job indépendantes selon une planification définie et en assure le suivi. Utilisez-le pour exécuter des tâches périodiques, telles que les sauvegardes, la génération de rapports ou l'envoi d'e-mails. Cette rubrique explique comment créer un CronJob via la console ou avec kubectl.

Créez un CronJob à l'aide de la console ACK ou de kubectl.

Important

Les images d'exemple sont publiques. Votre cluster doit disposer d'un accès Internet pour les extraire :

Prérequis

Créer un CronJob via la console

  1. Connectez-vous à la console ACK. Dans le volet de navigation de gauche, cliquez sur Clusters.

  2. Sur la page Clusters, cliquez sur le nom de votre cluster. Dans le volet de gauche, sélectionnez Workloads > CronJobs.

  3. Sur la page CronJobs, cliquez sur Create from Image.

  4. Sur la page Basic Information, configurez les paramètres de base et cliquez sur Next pour accéder à la page Container.

  5. Dans la section General, définissez Image Name sur registry.cn-hangzhou.aliyuncs.com/acs-sample/nginx:latest. Dans la section Lifecycle, configurez le paramètre Start. Cliquez sur Next pour accéder à la page Advanced.

    • Command: /bin/sh

    • Parameter: ["-c", "echo 'starting...'; COUNTER=0; while [ $COUNTER -lt 5 ]; do sleep 2; COUNTER=$((COUNTER+1)); echo $COUNTER; done; echo 'finished'; exit 0"]

    Important

    Le cluster doit disposer d'un accès Internet pour extraire registry.cn-hangzhou.aliyuncs.com/acs-sample/nginx:latest. Si vous avez sélectionné Configure SNAT for VPC lors de la création du cluster, cette option est déjà activée. Sinon, activez l'accès Internet pour le cluster.

    image.png

  6. Sur la page Advanced, configurez les paramètres de planification et de job. Pour cet exemple, définissez la planification toutes les 2 minutes et conservez les autres options par défaut. Cliquez sur Create.

    CronJob settings

    Paramètre Description
    Schedule Fréquence. Choisissez un préréglage (horaire, quotidien, hebdomadaire, mensuel) ou saisissez une expression cron personnalisée (minute hour day-of-month month day-of-week). Consultez la section Syntaxe des expressions Cron.
    Concurrency policy Comportement lorsqu'un nouveau Job est prévu alors que le précédent est toujours en cours d'exécution. Forbid : ignore le nouveau Job (pour les jobs séquentiels ou dépendants). Allow : exécute les deux simultanément (pour les jobs indépendants). Replace : termine le Job en cours d'exécution et en démarre un nouveau (lorsque seul le dernier résultat importe).

    Job history

    Paramètre Description
    Successful Jobs History Limit Nombre de Jobs réussis récents à conserver. Les plus anciens sont supprimés.
    Failed Jobs History Limit Nombre de Jobs ayant échoué récents à conserver.

    Job settings

    Paramètre Champ Kubernetes Description Valeur par défaut
    Completions jobTemplate.spec.completions Nombre de Pods devant se terminer avec succès pour que le Job soit considéré comme réussi. —
    Parallelism jobTemplate.spec.parallelism Nombre maximal de Pods s'exécutant simultanément. —
    Timeout jobTemplate.spec.activeDeadlineSeconds Durée d'exécution maximale d'un Job. Le Job s'arrête lorsque cette limite est atteinte, quel que soit son état d'avancement. 600 secondes
    BackoffLimit jobTemplate.spec.backoffLimit Nombre maximal de tentatives sur l'ensemble des Pods avant que le Job ne soit marqué comme ayant échoué. 6
    Restart jobTemplate.spec.template.spec.restartPolicy Comportement de redémarrage du Pod en cas d'échec. Never : redémarre le conteneur sur place sans créer de nouveau Pod (les redémarrages ne comptent pas dans backoffLimit). On Failure : crée un nouveau Pod pour remplacer celui qui a échoué. —

    Labels, annotations

    Paramètre Description
    Pod Labels Libellés ajoutés à chaque Pod. ACK ajoute app: <application-name> par défaut. Utilisé pour associer les Pods aux workloads et aux services.
    Pod Annotations Annotations ajoutées à chaque Pod. Certaines fonctionnalités ACK nécessitent des annotations spécifiques.

    image.png

  7. Une fois créé, les Jobs apparaissent à des intervalles de 2 minutes.

    image.png

Créer un CronJob avec kubectl

Important

Connectez-vous au cluster via kubectl avant de continuer.

  1. Enregistrez le code YAML suivant sous le nom cronjob.yaml. La section jobTemplate.spec possède la même structure qu'une spécification de Job autonome.

    apiVersion: batch/v1
    kind: CronJob
    metadata:
      name: example-cronjob
      labels:
        app: cronjob
    spec:
      schedule: "*/2 * * * *"           # Run every 2 minutes
      concurrencyPolicy: Forbid          # Skip new Job if previous one is still running
      successfulJobsHistoryLimit: 3      # Keep the 3 most recent successful Jobs
      failedJobsHistoryLimit: 2          # Keep the 2 most recent failed Jobs
      jobTemplate:
        spec:
          completions: 1                 # Job succeeds after 1 Pod completes
          parallelism: 1                 # Run one Pod at a time
          template:
            spec:
              containers:
              - name: counter
                image: anolis-registry.cn-zhangjiakou.cr.aliyuncs.com/openanolis/nginx:1.14.1-8.6
                command:
                - /bin/sh
                - -c
                - |
                  echo "starting...";
                  COUNTER=0;
                  while [ $COUNTER -lt 5 ]; do
                    sleep 2;
                    COUNTER=$((COUNTER+1));
                    echo "${COUNTER}";
                  done;
                  echo "finished";
                  exit 0
              restartPolicy: Never       # Do not restart the Pod on failure
  2. Appliquez le manifeste :

    kubectl apply -f cronjob.yaml

    Sortie attendue :

    cronjob.batch/example-cronjob created

Vérifier le CronJob

Confirmez que le CronJob s'exécute selon la planification définie.

  1. Vérifiez l'état du CronJob :

    kubectl get cronjob example-cronjob

    Sortie attendue :

    NAME               SCHEDULE      SUSPEND   ACTIVE   LAST SCHEDULE   AGE
    example-cronjob   */2 * * * *   False     0        <none>          15s

    SUSPEND est défini sur False, ce qui signifie que le CronJob est actif et se déclenche selon la planification.

  2. Après environ 10 minutes, listez les Jobs créés par le CronJob :

    kubectl get job

    Sortie attendue :

    NAME                       STATUS     COMPLETIONS   DURATION   AGE
    example-cronjob-2901**22   Complete   1/1           31s        5m13s
    example-cronjob-2901**23   Complete   1/1           31s        3m13s
    example-cronjob-2901**24   Complete   1/1           26s        73s

    Les Jobs apparaissent à des intervalles de 2 minutes et affichent l'état Complete une fois terminés.

  3. Consultez les journaux d'un Pod de Job :

    # List Pods for the most recent Job
    kubectl get pods --selector=job-name=<job-name>
    
    # View logs
    kubectl logs <pod-name>

    Remplacez <job-name> par un nom de Job issu de la sortie ci-dessus (par exemple, example-cronjob-2901**24). Une sortie réussie se termine par finished.

Syntaxe des expressions Cron

Une expression Cron se compose de cinq champs séparés par des espaces :

# .---------------- minute (0–59)
# |  .------------- hour (0–23)
# |  |  .---------- day of month (1–31)
# |  |  |  .------- month (1–12)
# |  |  |  |  .---- day of week (0–6, Sunday to Saturday)
# |  |  |  |  |
  *  *  *  *  *

Raccourcis courants :

Entrée Description Équivalent
@hourly Exécute une fois par heure au début de l'heure 0 * * * *
@daily (ou @midnight) Exécute une fois par jour à minuit 0 0 * * *
@weekly Exécute une fois par semaine à minuit le dimanche 0 0 * * 0
@monthly Exécute une fois par mois à minuit le premier jour du mois 0 0 1 * *
@yearly (ou @annually) Exécute une fois par an à minuit le 1er janvier 0 0 1 1 *

Construisez et validez les expressions Cron à l'aide de crontab.guru.

Étapes suivantes