Todos os produtos
Search
Central de documentação

Container Service for Kubernetes:Criar um Job

Última atualização: Jun 27, 2026

Um Job executa tarefas pontuais e garante que o número necessário de pods seja concluído com sucesso. 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 a quantidade 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 paralela (sequencial)

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

**spec.completions**

**spec.parallelism**

1

1

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

Paralela com contagem fixa de conclusões

Executa vários pods simultaneamente. O Job termina quando spec.completions pods obtêm sucesso.

**spec.completions**

**spec.parallelism**

N

M (M ≤ N)

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

  • Se M < N: até M pods executam simultaneamente até que N pods concluam com sucesso. Útil para redundância — por exemplo, tarefas distribuídas em várias zonas onde apenas um resultado é necessário.

Paralela com restrição de recursos

Caso os recursos sejam insuficientes para executar N pods ao mesmo tempo, limite a concorrência com spec.parallelism.

**spec.completions**

**spec.parallelism**

N

M (M < N)

M pods executam por vez. À medida que cada pod conclui com sucesso, novos pods iniciam até que N atinjam o objetivo.

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 pelo 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 em 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 encerra quando esse tempo é excedido, independentemente de quantos pods tiveram sucesso.

    BackoffLimit

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

    Restart

    Política de reinicialização de pods. 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 dos pods. O ACK adiciona app:<application-name> por padrão.

    Pod Annotations

    Anotações dos pods. 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 teve sucesso; 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