Tous les produits
Search
Centre de documentation

Container Service for Kubernetes:Create a Job

Dernière mise à jour :Aug 20, 2026

Un Job exécute des tâches ponctuelles et garantit qu'un nombre spécifié de pods se termine avec succès. Cette rubrique explique le fonctionnement des Jobs et décrit comment en créer un dans ACK à l'aide de la console ou de kubectl.

Fonctionnement des Jobs

Contrairement aux Deployments, StatefulSets et DaemonSets, qui maintiennent en continu un nombre cible de pods en cours d'exécution, un Job suit les achèvements réussis des pods. Définissez spec.completions pour indiquer le nombre de succès requis et spec.parallelism pour définir la concurrence maximale.

Types d'exécution

Choisissez un type d'exécution :

Non parallèle (séquentiel)

Exécutez un pod à la fois. Le Job est considéré comme terminé lorsque le pod s'arrête avec succès.

**spec.completions** **spec.parallelism**
1 1

Cette méthode convient aux tâches d'initialisation uniques, telles que les migrations de base de données.

Parallèle avec un nombre d'achèvements fixe

Exécutez plusieurs pods en parallèle. Le Job se termine lorsque le nombre de pods défini par spec.completions a réussi.

**spec.completions** **spec.parallelism**
N M (M ≤ N)
  • Si M = N : tous les N pods s'exécutent en parallèle et doivent tous réussir. Utilisez cette configuration lorsque les ressources de calcul sont suffisantes.

  • Si M < N : jusqu'à M pods s'exécutent simultanément jusqu'à ce que N pods soient terminés avec succès. Cette approche est utile pour la redondance, par exemple pour des tâches réparties sur plusieurs zones où un seul résultat est nécessaire.

Parallèle avec contrainte de ressources

Lorsque les ressources sont insuffisantes pour exécuter N pods en parallèle, limitez la concurrence à l'aide de spec.parallelism.

**spec.completions** **spec.parallelism**
N M (M < N)

M pods s'exécutent à la fois. À mesure que chaque pod se termine avec succès, de nouveaux pods démarrent jusqu'à ce que N succès soient atteints.

Prérequis

Assurez-vous de disposer des éléments suivants :

  • Un cluster ACK avec accès au réseau public (pour extraire l'image d'exemple)

  • kubectl connecté au cluster (méthode kubectl uniquement)

Pour activer l'accès au réseau public :

Créer un Job

Créer un Job à l'aide de la console ACK

  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 du cluster souhaité. Dans le volet de gauche, choisissez Workloads > Jobs.

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

  4. À l'étape Basic Information, configurez les paramètres de base et cliquez sur Next.

  5. Dans la section General, saisissez registry.cn-hangzhou.aliyuncs.com/acs-sample/nginx:latest dans le champ Image Name. Dans la partie Start de la section Lifecycle, saisissez /bin/sh dans le champ Command et ["-c", "echo 'starting...'; COUNTER=0; while [ $COUNTER -lt 5 ]; do sleep 2; COUNTER=$((COUNTER+1)); echo $COUNTER; done; echo 'finished'; exit 0"] dans le champ Parameter. Cliquez ensuite sur Next.

    Important

    L'extraction de l'image registry.cn-hangzhou.aliyuncs.com/acs-sample/nginx:latest nécessite un accès à Internet. Si vous avez activé l'option Configure SNAT for VPC lors de la création du cluster, celui-ci dispose déjà d'un accès à Internet. Pour les clusters existants, activez l'accès à Internet.

    image.png

  6. À l'étape Advanced, configurez les paramètres Job Settings. Dans cet exemple, définissez Completions sur 2, puis cliquez sur Create.

    Paramètre Description
    Completions Nombre d'achèvements de pods requis avec succès. Correspond à spec.completions.
    Parallelism Nombre maximal de pods simultanés. Correspond à spec.parallelism.
    Timeout Durée maximale du Job en secondes. Correspond à spec.activeDeadlineSeconds. Par défaut : 600. Le Job se termine lorsque cette durée est dépassée, quel que soit le nombre de pods ayant réussi.
    BackoffLimit Nombre maximal d'échecs de pod avant que le Job ne soit considéré comme échoué. Correspond à spec.backoffLimit. Par défaut : 6.
    Restart Politique de redémarrage des pods. Correspond à template.spec.restartPolicy. Options : Never (redémarre le pod existant ; ne compte pas dans spec.backoffLimit) ou On Failure (crée un nouveau pod pour remplacer celui qui a échoué).
    Pod Labels Libellés des pods. ACK ajoute app:<application-name> par défaut.
    Pod Annotations Annotations des pods. Certaines fonctionnalités d'ACK utilisent des annotations pour la configuration.

    image.png

  7. Consultez les journaux du Job dans la console ACK. Les deux pods produisent une sortie identique.

    image

Créer un Job à l'aide de kubectl

Important

Connectez-vous au cluster avec kubectl avant de continuer. Consultez la rubrique Obtenir le fichier kubeconfig d'un cluster et utiliser kubectl pour se connecter au cluster.

  1. Créez un fichier job.yaml :

    apiVersion: batch/v1
    kind: Job
    metadata:
      name: example-job
    spec:
      completions: 2      # Stop the Job after two pods terminate successfully.
      parallelism: 1      # Run only one pod at a time.
      template:
        spec:
          containers:
          - name: counter
            image: registry.cn-hangzhou.aliyuncs.com/acs-sample/nginx:latest
            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
  2. Appliquez le manifeste :

    kubectl apply -f job.yaml

    Sortie attendue :

    job.batch/example-job created
  3. Après environ 15 secondes, vérifiez l'état du Job :

    kubectl get job example-job

    Un pod a réussi ; le Job est toujours en cours d'exécution :

    NAME          STATUS    COMPLETIONS   DURATION   AGE
    example-job   Running   1/2           16s        16s
  4. Après environ 40 secondes, vérifiez à nouveau :

    kubectl get job example-job

    Le Job est terminé :

    NAME          STATUS     COMPLETIONS   DURATION   AGE
    example-job   Complete   2/2           27s        37s
  5. Affichez les journaux de tous les pods :

    kubectl logs -l job-name=example-job

    Sortie (deux ensembles identiques, un par pod) :

    starting...
    1
    2
    3
    4
    5
    finished
    starting...
    1
    2
    3
    4
    5
    finished

Étapes suivantes