Executando uma tarefa

Após a criação de sua tarefa, é possível executá-la com base na definição dela ou com propriedades substitutas. Execute sua tarefa por meio do console ou com a CLI.

Sempre que sua tarefa é executada, a versão mais recente de sua imagem de contêiner referenciada é usada para a execução da tarefa, a menos que uma tag seja especificada para a imagem. Se uma tag for especificada para a imagem, a imagem marcada será usada para a execução da tarefa.

As tarefas em lote enviadas serão executadas em paralelo, se possível. Se o número ou o tamanho das tarefas submetidas excede os limites de cotas configuradas, como o número máximo de instâncias em execução, então, as Code Engine as tarefas entram na fila e sua execução será atrasada até que tarefas suficientes sejam concluídas. Para obter mais informações sobre trabalhos em lote, consulte Carga de trabalho de trabalhos em lote. Para obter mais informações sobre cotas e limites de tarefas, incluindo memória e CPU, consulte Limites e cotas para Code Engine.

As execuções de tarefas criadas por assinaturas são excluídas após dez minutos. Para obter mais informações sobre as assinaturas, consulte Introdução às assinaturas.

As execuções de trabalho concluídas são automaticamente excluídas após uma semana.

Executando uma tarefa por meio do console

Ao criar uma tarefa, é possível executá-la imediatamente. No entanto, é possível enviar e reenviar uma tarefa a qualquer momento. Também é possível enviar ou reenviar uma tarefa que você tenha criado anteriormente.

  1. Navegue para a sua página de tarefa.

    1. Na página “Projetos” do Code Engine, clique no nome do seu projeto.
    2. Clique em “Trabalhos” e, em seguida, clique na guia “Trabalhos ”.
    3. Clique no nome da tarefa que você deseja executar.
  2. Clique em Enviar tarefa para abrir o diálogo Enviar tarefa. Revise e, opcionalmente, mude os valores de configuração padrão, como instâncias, CPU, memória, número de novas tentativas de tarefa e tempo limite de tarefa. Para obter mais informações sobre essas opções, consulte Opções para criar e executar uma tarefa.

  3. Clique em Enviar tarefa para executá-la. O sistema exibe o status das instâncias de sua tarefa na página de detalhes da tarefa.

  4. Se alguma das instâncias de seu trabalho não for executada, solucione o erro e clique em Rerun failed indexes (Reexecutar índices com falha ) para executar o trabalho novamente para os índices que falharam. No painel “Enviar tarefa”, verifique e, se desejar, altere os valores de configuração. A seção “Índices da matriz ” lista automaticamente os índices das instâncias de execução da tarefa que falharam. Após revisar e opcionalmente mudar os valores de configuração, clique em Enviar tarefa para executar a tarefa.

Para solucionar erros comuns nos índices de execução de tarefas, consulte “Entendendo por que os índices de execução de tarefas podem falhar ”.

Você também pode reexecutar execuções de trabalhos existentes. Para executar uma execução da tarefa específica novamente, clique na guia Execuções da tarefa e, em seguida, clique no nome da execução da tarefa com a qual você deseja trabalhar Clique em Executar novamente para executar esta tarefa novamente.

É possível visualizar logs da tarefa após você incluir recursos de criação de log. Para obter mais informações, consulte Visualizando logs .

A variável de ambiente JOB_INDEX é injetada automaticamente em cada instância da sua tarefa sempre que a tarefa é executada. Para obter mais informações sobre variáveis de ambiente que são configuradas por Code Engine, consulte Eu vejo configmaps que não criei. Posso excluí-los?.

Executando uma tarefa com a CLI

Antes de Iniciar

Para executar uma tarefa com a CLI, use o comando jobrun submit. Para obter uma listagem completa de opções, consulte o comando ibmcloud ce jobrun submit.

Com a CLI, é possível executar uma tarefa com base em uma configuração de tarefa ou executar uma tarefa sem antes criar uma configuração de tarefa.

Executando uma tarefa com a CLI baseado em uma configuração de tarefas

Após criar uma configuração de tarefa, será mais fácil executar sua tarefa várias vezes.

Por exemplo, o comando jobrun submit cria cinco novas instâncias para executar a imagem do contêiner que está especificada na configuração da tarefa definida em myjob. Para fazer referência a uma configuração de tarefa definida, use a opção --job. Enquanto a opção --name não é obrigatória se a opção --job for especificada, o comando exemplo a seguir especifica a opção --name para fornecer um nome para esta execução de tarefa. Para tarefas, o valor padrão para cpu é 1 e o valor padrão para memory é 4G. Os limites e as solicitações de recurso são aplicados por instância, portanto, cada instância obtém 4 G de memória e 1 vCPU. Essa tarefa aloca 5 * 4 G = 20 G de memória e 5 * 1 vCPU = 5 vCPUs.

ibmcloud ce jobrun submit --name testjobrun --job myjob --array-indices "1 - 5"

A tabela a seguir resume as opções que são usadas com o comando jobrun submit neste exemplo. Consulte o comando ibmcloud ce jobrun submit para obter mais informações sobre ele e as opções que ele oferece.

Opções de comando
Opção Descrição
--name

O nome dessa execução da tarefa. O --name e os valores --image serão necessários, se você não especificar o valor --job. Use um nome que seja exclusivo dentro do projeto.

  • O nome deve começar e terminar com um caractere alfanumérico minúsculo.
  • O nome deve ter 53 caracteres ou menos e pode conter letras, números, pontos (.) e hifens (-).
--job O nome da tarefa a ser executada. Esse valor será necessário se você não especificar os valores --name e --image.
--array-indices Especifica os índices das instâncias utilizadas para executar o trabalho. Especifique a lista ou o intervalo de índices separados por hífens (-) ou vírgulas (,); por exemplo, 1,3,6,9 ou 1-5,7-8,10. O máximo é 999999. Este valor é opcional. O valor padrão é 0.

A variável de ambiente JOB_INDEX é injetada automaticamente em cada instância da sua tarefa sempre que a tarefa é executada. Para obter mais informações sobre variáveis de ambiente que são configuradas por Code Engine, consulte Eu vejo configmaps que não criei. Posso excluí-los?.

Execução de tarefa na CLI sem antes criar uma configuração de tarefas

Com a CLI, é possível enviar uma execução de tarefa sem antes criar uma configuração de tarefas. É possível especificar as mesmas opções de configuração com os comandos jobrun submit e jobrun resubmit que estão disponíveis com o comando job create.

Por exemplo, o comando a seguir ibmcloud ce jobrun submit envia uma execução de tarefa para fazer referência à imagem us.icr.io/mynamespace/myhello_bld usando a informação de acesso myregistry. Como essa execução de tarefa não está fazendo referência a uma configuração de tarefa definida, deve-se especificar valores para as opções --name e image. Use --name para especificar o nome desta execução de tarefa e use --image para fornecer o nome da imagem que é usada para esta execução de tarefa. A opção --array-indices cria cinco novas instâncias para executar a imagem do contêiner. Para execuções de tarefa, o valor padrão para cpu é 1 e o valor padrão para a memory é 4G. Os limites e as solicitações de recurso são aplicados por instância, portanto, cada instância obtém 4 G de memória e 1 vCPU. Esta execução de tarefas aloca 5 \ * 4 G = memória de 20 G e 5 \ * 1 vCPU = 5 vCPUs.

ibmcloud ce jobrun submit --name myhellojob-jobruna --image us.icr.io/mynamespace/myhello_bld --registry-secret myregistry   --array-indices "1 - 5"

Execute o comando jobrun get -n myhellojob-jobruna para verificar o status de execução da tarefa.

Saída de exemplo

[...]
Name:          myhellojob-jobruna
ID:            abcdefgh-abcd-abcd-abcd-1a2b3c4d5e6f
Project Name:  myproject
Project ID:    01234567-abcd-abcd-abcd-abcdabcd1111
Age:           3m6s
Created:       2021-06-04T11:56:22-04:00
Image:                us.icr.io/mynamespace/myhello_bld
Resource Allocation:
    CPU:                1
    Ephemeral Storage:  400M
    Memory:             4G
Registry Secrets:
    myregistry
Runtime:
    Mode:                  task
    Array Indices:         1 - 5
    Array Size:            5
    JOP_ARRAY_SIZE Value:  5
    Max Execution Time:    7200
    Retry Limit:           3
Status:
    Completed:          9s
    Instance Statuses:
        Succeeded:  5
    Conditions:
        Type      Status  Last Probe  Last Transition
    Pending   True    16s         16s
    Running   True    13s         13s
    Complete  True    9s          9s
Events:
    Type    Reason     Age                Source                Messages
    Normal  Updated    11s (x8 over 18s)  batch-job-controller  Updated JobRun "myhellojob-jobruna"
    Normal  Completed  11s                batch-job-controller  JobRun completed successfully
Instances:
    Name                    Running  Status     Restarts  Age
    myhellojob-jobruna-1-0  0/1      Succeeded  0         18s
    myhellojob-jobruna-2-0  0/1      Succeeded  0         18s
    myhellojob-jobruna-3-0  0/1      Succeeded  0         18s
    myhellojob-jobruna-4-0  0/1      Succeeded  0         18s
    myhellojob-jobruna-5-0  0/1      Succeeded  0         18s

As execuções de tarefas enviadas (ou reenviadas) na CLI que não fazem referência a uma configuração de tarefa definida não podem ser visualizadas a partir do console.

Reenviando a sua tarefa com a CLI

Se você desejar reenviar uma execução de tarefa com base na configuração de uma execução de tarefa anterior, use o comando jobrun resubmit. Esse comando requer o nome da execução da tarefa anterior e também permite outros argumentos opcionais. Para obter uma listagem completa de opções, consulte o comando ibmcloud ce jobrun resubmit.

Por exemplo, o comando jobrun resubmit a seguir reenvia a execução da tarefa testjobrun.

ibmcloud ce jobrun resubmit --jobrun testjobrun

Saída de exemplo

Getting job run 'testjobrun'...
Getting job 'myjob'...
Rerunning job run 'myjob-jobrun-fji48'...
Run 'ibmcloud ce jobrun get -n myjob-jobrun-fji48' to check the job run status.

Por exemplo, o comando jobrun resubmit reenvia a execução de tarefa myhellojob-jobruna, que foi executada sem antes criar a configuração da tarefa. Como a execução de tarefa referenciada não tem uma configuração de tarefa relacionada, deve-se indicar a opção --name para especificar um nome para esta execução de tarefa.

ibmcloud ce jobrun resubmit --jobrun myhellojob-jobruna --name myhellojob-jobrunb

Execute o comando jobrun get -n myhellojob-jobrunb para verificar o status de execução da tarefa.

Saída de exemplo

Getting jobrun 'myhellojob-jobrunb'...
[...]
Name:          myhellojob-jobrunb
ID:            abcdefgh-abcd-abcd-abcd-1a2b3c4d5e6f
Project Name:  myproject
Project ID:    01234567-abcd-abcd-abcd-abcdabcd1111
Age:           3m6s
Created:       2021-06-04T11:56:22-04:00
Image:                us.icr.io/mynamespace/myhello_bld
Resource Allocation:
    CPU:                1
Ephemeral Storage:  400M
Memory:             4G
Registry Secrets:
    myregistry
Runtime:
    Mode:                  task
    Array Indices:         1 - 5
    Array Size:            5
    JOP_ARRAY_SIZE Value:  5
    Max Execution Time:    7200
    Retry Limit:           3
Status:
    Completed:          91s
Instance Statuses:
    Succeeded:  5
Conditions:
    Type      Status  Last Probe  Last Transition
    Pending   True    96s         96s
    Running   True    92s         92s
    Complete  True    91s         91s
Events:
    Type    Reason     Age                Source                Messages
Normal  Updated    93s (x7 over 97s)  batch-job-controller  Updated JobRun "myhellojob-jobrunb"
Normal  Completed  93s                batch-job-controller  JobRun completed successfully
Instances:
    Name                    Running  Status     Restarts  Age
myhellojob-jobrunb-1-0  0/1      Succeeded  0         97s
myhellojob-jobrunb-2-0  0/1      Succeeded  0         97s
myhellojob-jobrunb-3-0  0/1      Succeeded  0         97s
myhellojob-jobrunb-4-0  0/1      Succeeded  0         97s
myhellojob-jobrunb-5-0  0/1      Succeeded  0         97s

As execuções de tarefas enviadas (ou reenviadas) na CLI que não fazem referência a uma configuração de tarefa definida não podem ser visualizadas a partir do console.

Próximas etapas

  • Depois de executar sua tarefa, para visualizar detalhes da sua tarefa e das execuções de tarefa, consulte Acessar detalhes da tarefa.

  • Agora que sua tarefa foi criada, considere tornar suas tarefas orientadas para evento. Ao usar assinaturas de evento, é possível acionar suas tarefas por meio de planejamentos periódicos ou configurar sua tarefa para reagir a eventos como uploads de arquivo.

  • É possível atualizar sua tarefa e seu código referenciado de qualquer uma das maneiras a seguir, independentemente de como você criou ou atualizou previamente a sua tarefa.

    • Se você tiver uma imagem de contêiner, de acordo com o padrão da Open Container Initiative(OCI), basta fornecer apenas uma referência à imagem, que aponte para o local do seu registro de contêineres ao criar (ou atualizar) sua tarefa. Você pode criar (ou atualizar) seu trabalho a partir de imagens em um registro público ou privado e, em seguida, acessar a imagem referenciada durante a execução do seu trabalho.

      Se você criou sua tarefa usando o comando job create e especificou a opção --build-source para construir a imagem de contêiner a partir da origem local ou do repositório e desejar mudar sua tarefa para apontar para uma imagem de contêiner diferente. Primeiro, deve-se remover a associação da construção de sua tarefa Por exemplo, execute ibmcloud ce job update -n JOB_NAME --build-clear.. Depois de remover a associação da construção de sua tarefa, é possível atualizar a tarefa para referenciar uma imagem diferente

    • Se você está começando com código-fonte que reside em um repositório Git, é possível optar por deixar que o Code Engine cuide da construção da imagem por meio de sua origem e implemente (ou atualize) o app com uma operação única. Neste cenário, o Code Engine faz upload da sua imagem para o IBM Cloud® Container Registry. Para saber mais, consulte Criando uma tarefa por meio do código-fonte do repositório. Se você quiser mais controle sobre a construção da sua imagem, poderá optar por construir a imagem com o Code Engine antes de criar (ou atualizar) sua tarefa e executá-la.

    • Se você está começando com código-fonte que reside em uma estação de trabalho local, é possível optar por deixar que o Code Engine cuide da construção da imagem por meio de sua origem e da criação da tarefa com um comando da CLI único. Neste cenário, o Code Engine faz upload da sua imagem para o IBM Cloud® Container Registry. Para saber mais, consulte Criando sua tarefa por meio do código-fonte local com a CLI. Se você quiser mais controle sobre a construção da sua imagem, poderá optar por construir a imagem com o Code Engine antes de criar (ou atualizar) sua tarefa e executá-la.

    Por exemplo, você pode optar por deixar que o Code Engine cuide da construção de sua origem local enquanto você cuida do desenvolvimento de sua origem para a tarefa. Em seguida, após o amadurecimento da imagem, é possível atualizar a tarefa para referenciar a imagem específica que desejar. É possível repetir esse processo conforme necessário.

    Ao executar sua tarefa atualizada, a versão mais recente de sua imagem de contêiner referenciada é usada para a execução da tarefa, a menos que uma tag seja especificada para a imagem. Se uma tag for especificada para a imagem, a imagem marcada será usada para a execução da tarefa.

Procurando mais exemplos de código? Confira os exemplos no repositório “ IBM Cloud Code Engine ” GitHub.