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.
-
Navegue para a sua página de tarefa.
- Na página “Projetos” do Code Engine, clique no nome do seu projeto.
- Clique em “Trabalhos” e, em seguida, clique na guia “Trabalhos ”.
- Clique no nome da tarefa que você deseja executar.
-
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.
-
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.
-
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
- Configure seu ambiente do Code Engine.
- Crie uma tarefa.
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ção | Descrição |
|---|---|
--name |
O nome dessa execução da tarefa. O
|
--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 createe especificou a opção--build-sourcepara 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, executeibmcloud 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.