Todos os produtos
Search
Central de documentação

Container Service for Kubernetes:Criar um Job

Última atualização: Aug 20, 2026

Um Job executa tarefas únicas e garante que o número necessário de pods seja concluído com êxito. Este tópico explica o funcionamento dos Jobs e como criar um no ACK pelo console ou kubectl.

Funcionamento dos Jobs

Diferentemente de Deployments, StatefulSets e DaemonSets — que mantêm um número alvo de pods em execução contínua —, um Job rastreia as conclusões bem-sucedidas de pods. Defina spec.completions para estabelecer o número de sucessos necessários e spec.parallelism para limitar a concorrência máxima.

Tipos de execução

Escolha um tipo de execução:

Não paralelo (sequencial)

Executa um pod por vez. O Job é considerado concluído quando o pod termina com êxito.

**spec.completions**

**spec.parallelism**

1

1

Ideal para tarefas de inicialização única, como migrações de banco de dados.

Paralelo com contagem fixa de conclusões

Executa vários pods simultaneamente. O Job termina quando spec.completions pods forem concluídos com êxito.

**spec.completions**

**spec.parallelism**

N

M (M ≤ N)

  • Se M = N: todos os N pods executam em paralelo e devem ter êxito. Recomendado quando há recursos computacionais suficientes.

  • Se M < N: até M pods executam simultaneamente até que N pods sejam concluídos com êxito. Útil para redundância — por exemplo, tarefas distribuídas em várias zonas nas quais apenas um resultado é necessário.

Paralelo com restrição de recursos

Caso os recursos sejam insuficientes para executar N pods em paralelo, limite a concorrência com spec.parallelism.

**spec.completions**

**spec.parallelism**

N

M (M < N)

M pods executam por vez. À medida que cada pod é concluído com êxito, novos pods iniciam até que N atinjam o sucesso.

Pré-requisitos

Verifique se você tem:

  • Um cluster ACK com acesso à rede pública (para baixar a imagem de exemplo)

  • kubectl conectado ao cluster (apenas para o método kubectl)

Para ativar o acesso à rede pública:

Criar um Job

Criar um Job usando o console do ACK

  1. Faça login no console do ACK. No painel de navegação à esquerda, clique em Clusters.

  2. Na página Clusters, clique no nome do cluster desejado. No painel à esquerda, escolha Workloads > Jobs.

  3. Na página Jobs, clique em Create from Image.

  4. Na etapa Basic Information, configure as definições básicas e clique em Next.

  5. Na seção General, insira registry.cn-hangzhou.aliyuncs.com/acs-sample/nginx:latest no campo Image Name. Na parte Start da seção Lifecycle, insira /bin/sh no campo Command e ["-c", "echo 'starting...'; COUNTER=0; while [ $COUNTER -lt 5 ]; do sleep 2; COUNTER=$((COUNTER+1)); echo $COUNTER; done; echo 'finished'; exit 0"] no campo Parameter. Em seguida, clique em Next.

    Importante

    Baixar a imagem registry.cn-hangzhou.aliyuncs.com/acs-sample/nginx:latest requer acesso à Internet. Se você ativou a opção Configure SNAT for VPC durante a criação do cluster, ele já possui acesso à Internet. Para clusters existentes, habilite o acesso à Internet.

    image.png

  6. Na etapa Advanced, configure as Job Settings. Neste exemplo, defina Completions como 2 e clique em Create.

    Parâmetro

    Descrição

    Completions

    Número necessário de conclusões bem-sucedidas de pods. Corresponde a spec.completions.

    Parallelism

    Quantidade máxima de pods simultâneos. Corresponde a spec.parallelism.

    Timeout

    Duração máxima do Job em segundos. Corresponde a spec.activeDeadlineSeconds. Padrão: 600. O Job termina quando essa duração é excedida, independentemente de quantos pods tenham sido concluídos com êxito.

    BackoffLimit

    Limite de falhas de pod antes que o Job falhe. Corresponde a spec.backoffLimit. Padrão: 6.

    Restart

    Política de reinicialização de pod. Corresponde a template.spec.restartPolicy. Opções: Never (reinicia o pod existente; não conta para spec.backoffLimit) ou On Failure (cria um novo pod para substituir aquele que falhou).

    Pod Labels

    Rótulos do pod. O ACK adiciona app:<application-name> por padrão.

    Pod Annotations

    Anotações do pod. Alguns recursos do ACK utilizam anotações para configuração.

    image.png

  7. Visualize os logs do Job no console do ACK. Ambos os pods produzem saída idêntica.

    image

Criar um Job usando kubectl

Importante

Conecte-se ao cluster com kubectl antes de prosseguir. Consulte Obter o arquivo kubeconfig de um cluster e usar kubectl para conectar-se ao cluster.

  1. Crie um arquivo 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. Aplique o manifesto:

    kubectl apply -f job.yaml

    Saída esperada:

    job.batch/example-job created
  3. Após cerca de 15 segundos, verifique o status do Job:

    kubectl get job example-job

    Um pod foi concluído com êxito; o Job ainda está em execução:

    NAME          STATUS    COMPLETIONS   DURATION   AGE
    example-job   Running   1/2           16s        16s
  4. Após aproximadamente 40 segundos, verifique novamente:

    kubectl get job example-job

    O Job foi concluído:

    NAME          STATUS     COMPLETIONS   DURATION   AGE
    example-job   Complete   2/2           27s        37s
  5. Visualize os logs de todos os pods:

    kubectl logs -l job-name=example-job

    Saída (dois conjuntos idênticos, um por pod):

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

Próximas etapas