Depurando tarefas
Use as dicas de resolução de problemas para aprender a solucionar problemas de tarefas do IBM Cloud® Code Engine e de execuções de sua tarefa.
Limites de tarefa a considerar
O número máximo de tarefas que você pode ter por projeto é 100. Você está limitado a um total de 100 execuções de tarefa por projeto antes de precisar remover ou limpar as antigas.
Para obter mais informações sobre limites para tarefas, incluindo memória e CPU, consulte Limites e cotas para Code Engine.
Com a CLI, é possível usar o comando ibmcloud ce project get para exibir informações sobre limites e uso atual. Por exemplo:
ibmcloud ce project get --name myproject
Saída de exemplo
Getting project 'myproject'...
OK
Name: myproject
ID: abcdabcd-abcd-abcd-abcd-f1de4aab5d5d
Status: active
Enabled: true
Application Private Visibility Supported: true
Selected: true
Region: us-south
Resource Group: default
Service Binding Service ID: ServiceId-1234abcd-abcd-abcd-1111-1a2b3c4d5e6f
Age: 52d
Created: Tue, 28 Sep 2021 05:12:16 -0500
Updated: Tue, 28 Sep 2021 05:12:19 -0500
Quotas:
Category Used Limit
App revisions 2 120
Apps 1 40
Build runs 1 100
Builds 2 100
Configmaps 2 100
CPU 0 128
Ephemeral storage 0 512G
Functions 0 20
Instances (active) 0 250
Instances (total) 0 2500
Job runs 13 100
Jobs 2 100
Memory 0 512G
Secrets 6 100
Subscriptions (cron) 0 100
Subscriptions (IBM Cloud Object Storage) 0 100
Subscriptions (Kafka) 0 100
Obtendo logs para minhas tarefas
Os logs podem ser úteis para solucionar problemas quando você executa tarefas. É possível visualizar logs da tarefa no console ou com a CLI.
Ao visualizar logs no console, deve-se criar uma instância do IBM Cloud Logs na mesma região de seu projeto do Code Engine. Você não é obrigado a criar esta instância antes de trabalhar com a sua tarefa do Code Engine. O Code Engine facilita ativar a criação de logs para suas tarefas. É possível visualizar logs da tarefa após você incluir recursos de criação de log. Para obter mais informações, consulte Visualizando logs da tarefa por meio do console.
Ao trabalhar com a CLI, é possível exibir logs de todas as instâncias de sua tarefa em execução ou exibir logs de uma instância específica de sua tarefa.
-
Use o comando
ibmcloud ce jobrun listpara listar todas as suas execuções de tarefas definidas; por exemplo,ibmcloud ce jobrun list -
Use o comando
ibmcloud ce jobrun getpara obter os detalhes de sua execução da tarefa, incluindo o nome das instâncias para a execução da tarefa; por exemplo,ibmcloud ce jobrun get --name myjobrunSaída de exemplo
Getting jobrun 'myjobrun'... Getting instances of jobrun 'myjobrun'... Getting events of jobrun 'myjobrun'... Run 'ibmcloud ce jobrun events -n myjobrun' to get the system events of the job run instances. Run 'ibmcloud ce jobrun logs -f -n myjobrun' to follow the logs of the job run instances. OK Name: myjobrun [...] Created: 2021-03-03T14:47:04-05:00 Image: icr.io/codeengine/firstjob Resource Allocation: CPU: 1 Ephemeral Storage: 400M Memory: 4G Runtime: Mode: task Array Indices: 1 - 4 Array Size: 4 JOP_ARRAY_SIZE Value: 4 Max Execution Time: 7200 Retry Limit: 3 Status: Completed: 28m Instance Statuses: Succeeded: 4 Conditions: Type Status Last Probe Last Transition Pending True 28m 28m Running True 28m 28m Complete True 28m 28m Events: Type Reason Age Source Messages Normal Updated 29m (x8 over 29m) batch-job-controller Updated JobRun "myjobrun" Normal Completed 29m batch-job-controller JobRun completed successfully Instances: Name Running Status Restarts Age myjobrun-1-0 0/1 Succeeded 0 29m myjobrun-2-0 0/1 Succeeded 0 29m myjobrun-3-0 0/1 Succeeded 0 29m myjobrun-4-0 0/1 Succeeded 0 29mSe você quiser maior detalhamento sobre a sua execução de tarefa, use a opção
--o yamlcom o comandojobrun get; por exemplo,ibmcloud ce jobrun get --name myjobrun --o yaml. Esta opção é útil para mostrar informações mais detalhadas na CLI para a execução de tarefa. -
Exiba os logs de instâncias de sua execução da tarefa.
- Para exibir os logs de uma instância específica de sua execução da tarefa, use o comando
ibmcloud ce jobrun logs --instance INSTANCE_NAME; por exemplo,
ibmcloud ce jobrun logs --instance myjobrun-4-0 ``` Saída de exemplo ```txt {: screen} Getting logs for job run instance 'myjobrun-4-0'... OK myjobrun-4-0/myjobrun: Hi from a batch job! My index is: 4 ``` * Para exibir os logs de todas as instâncias de sua execução de tarefa, use o comando [**`ibmcloud ce jobrun logs --jobrun JOBRUN_NAME`**](/docs/codeengine?topic=codeengine-cli#cli-jobrun-logs); por exemplo, ```txt {: pre} ibmcloud ce jobrun logs --jobrun myjobrun ``` Saída de exemplo ```txt {: screen} Getting logs for all instances of job run 'myjobrun'... Getting jobrun 'myjobrun'... Getting instances of jobrun 'myjobrun'... OK myjobrun-1-0/myjobrun: Hi from a batch job! My index is: 1 myjobrun-2-0/myjobrun: Hi from a batch job! My index is: 2 myjobrun-3-0/myjobrun: Hi from a batch job! My index is: 3 myjobrun-4-0/myjobrun: Hi from a batch job! My index is: 4 ``` - Para exibir os logs de uma instância específica de sua execução da tarefa, use o comando
Para obter mais informações, consulte Visualizando logs da tarefa com a CLI.
Obtendo informações de eventos do sistema para minhas tarefas
As informações de evento do sistema podem ser úteis para solucionar problemas quando você executa tarefas. É possível visualizar informações do evento do sistema com a CLI.
É possível exibir eventos do sistema de todas as instâncias de uma execução de tarefa ou eventos do sistema de exibição de uma instância específica de uma execução de tarefa.
-
Use o comando
ibmcloud ce jobrun listpara listar todas as suas execuções de tarefas definidas; por exemplo,ibmcloud ce jobrun list -
Use o comando
ibmcloud ce jobrun getpara obter os detalhes de suas execuções da tarefa, incluindo o nome delas; por exemplo,ibmcloud ce jobrun get --name myjobrunSaída de exemplo
Getting jobrun 'myjobrun'... Getting instances of jobrun 'myjobrun'... Getting events of jobrun 'myjobrun'... OK Name: myjobrun [...] Created: 2021-03-03T14:47:04-05:00 Image: icr.io/codeengine/firstjob Resource Allocation: CPU: 1 Ephemeral Storage: 400M Memory: 4G Runtime: Mode: task Array Indices: 1 - 4 Array Size: 4 JOP_ARRAY_SIZE Value: 4 Max Execution Time: 7200 Retry Limit: 3 Status: Completed: 28m Instance Statuses: Succeeded: 4 Conditions: Type Status Last Probe Last Transition Pending True 28m 28m Running True 28m 28m Complete True 28m 28m Events: Type Reason Age Source Messages Normal Updated 29m (x8 over 29m) batch-job-controller Updated JobRun "myjobrun" Normal Completed 29m batch-job-controller JobRun completed successfully Instances: Name Running Status Restarts Age myjobrun-1-0 0/1 Succeeded 0 29m myjobrun-2-0 0/1 Succeeded 0 29m myjobrun-3-0 0/1 Succeeded 0 29m myjobrun-4-0 0/1 Succeeded 0 29mSe você quiser maior detalhamento sobre a sua execução de tarefa, use a opção
--o yamlcom o comandojobrun get; por exemplo,ibmcloud ce jobrun get --name myjobrun --o yaml. Esta opção é útil para mostrar informações mais detalhadas na CLI para a execução de tarefa. -
Exiba os eventos do sistema das instâncias de sua execução da tarefa.
- Para exibir os eventos de uma instância específica de sua execução da tarefa, use o comando
ibmcloud ce jobrun events --instance INSTANCE_NAME; por exemplo,
ibmcloud ce jobrun events --instance myjobrun-4-0 ``` Saída de exemplo ```txt {: screen} Getting events for job run instance 'myjobrun-4-0'... OK myjobrun-4-0: Type Reason Age Source Messages Normal Scheduled 2m14s default-scheduler Successfully assigned 4svg40kna19/myjobrun-4-0 to 10.240.64.10 Normal Pulling 2m13s kubelet, 10.240.64.10 Pulling image "icr.io/codeengine/firstjob" Normal Pulled 2m12s kubelet, 10.240.64.10 Successfully pulled image "icr.io/codeengine/firstjob" in 1.234456436s Normal Created 2m11s kubelet, 10.240.64.10 Created container myjobrun Normal Started 2m11s kubelet, 10.240.64.10 Started container myjobrun ``` * Para exibir eventos de todas as instâncias de sua execução de tarefas, use o comando [**`ibmcloud ce jobrun events --jobrun JUBRUN_NAME`**](/docs/codeengine?topic=codeengine-cli#cli-jobrun-events); por exemplo, ```txt {: pre} ibmcloud ce jobrun events --jobrun myjobrun ``` Saída de exemplo ```txt {: screen} Getting jobrun 'myjobrun'... Getting instances of jobrun 'myjobrun'... Getting events for all instances of job run 'myjobrun'... OK myjobrun-1-0: Type Reason Age Source Messages Normal Scheduled 66s default-scheduler Successfully assigned 4svg40kna19/myjobrun-1-0 to 10.240.128.22 Normal Pulling 65s kubelet, 10.240.128.22 Pulling image "icr.io/codeengine/firstjob" Normal Pulled 64s kubelet, 10.240.128.22 Successfully pulled image "icr.io/codeengine/firstjob" in 427.276949ms Normal Created 64s kubelet, 10.240.128.22 Created container myjobrun Normal Started 64s kubelet, 10.240.128.22 Started container myjobrun myjobrun-2-0: Type Reason Age Source Messages Normal Scheduled 66s default-scheduler Successfully assigned 4svg40kna19/myjobrun-2-0 to 10.240.0.11 Normal Pulling 65s kubelet, 10.240.0.11 Pulling image "icr.io/codeengine/firstjob" Normal Pulled 63s kubelet, 10.240.0.11 Successfully pulled image "icr.io/codeengine/firstjob" in 1.268252989s Normal Created 63s kubelet, 10.240.0.11 Created container myjobrun Normal Started 63s kubelet, 10.240.0.11 Started container myjobrun myjobrun-3-0: Type Reason Age Source Messages Normal Scheduled 66s default-scheduler Successfully assigned 4svg40kna19/myjobrun-3-0 to 10.240.0.37 Normal Pulling 65s kubelet, 10.240.0.37 Pulling image "icr.io/codeengine/firstjob" Normal Pulled 63s kubelet, 10.240.0.37 Successfully pulled image "icr.io/codeengine/firstjob" in 1.118647987s Normal Created 63s kubelet, 10.240.0.37 Created container myjobrun Normal Started 63s kubelet, 10.240.0.37 Started container myjobrun myjobrun-4-0: Type Reason Age Source Messages Normal Scheduled 66s default-scheduler Successfully assigned 4svg40kna19/myjobrun-4-0 to 10.240.64.10 Normal Pulling 65s kubelet, 10.240.64.10 Pulling image "icr.io/codeengine/firstjob" Normal Pulled 64s kubelet, 10.240.64.10 Successfully pulled image "icr.io/codeengine/firstjob" in 1.234456436s Normal Created 63s kubelet, 10.240.64.10 Created container myjobrun Normal Started 63s kubelet, 10.240.64.10 Started container myjobrun ``` - Para exibir os eventos de uma instância específica de sua execução da tarefa, use o comando
Entender por que os índices de execução de trabalho podem falhar
Quando os índices de execução de trabalho falham no console, é possível procurar os erros e o raciocínio para ajudar a solucionar problemas, corrigir os problemas e, em seguida, executar novamente os índices de execução de trabalho.
Para trabalhar com seus trabalhos e execuções de trabalho, na página “Projetos” do Code Engine, clique no nome do seu projeto na lista de projetos e, em
seguida, clique em “Trabalhos ”. Na guia “Execuções de tarefas ”, veja as instâncias de execução das tarefas. As execuções de tarefas incompletas são exibidas como “ Failed (<error>) ” na
coluna “Status ”. A tabela a seguir explica os erros comuns de índice de execução de trabalho e as ações a serem tomadas:
| Erro | Explicação | Ação sugerida ao usuário |
|---|---|---|
ContainerExitedCode |
Um erro que inclui um código de saída fornecido pela carga de trabalho do usuário. | Determine o motivo do código de saída em seu aplicativo e depure-o. |
ExceededEphemeralStorage |
A instância alocou mais armazenamento efêmero em seu contêiner do que o permitido. | Aumente o armazenamento efêmero do seu recurso. |
ExecutableNotFound |
Não foi possível localizar o arquivo executável especificado no contêiner. O contêiner não pode iniciar sem ele. | Verifique se o ponto de entrada especificado na imagem do contêiner está correto e se o executável existe na imagem. |
MaxExecutionTimeExceeded |
A execução do trabalho não foi concluída dentro do tempo máximo de execução. Se várias instâncias estiverem em execução, todas as instâncias que ainda não foram concluídas mostrarão esse erro. | Aumentar o valor do tempo limite de execução do trabalho. |
OOMKilled |
Um erro de falta de memória. A instância excedeu o limite de memória alocada. | Aumente a CPU e a memória de seu recurso. |
Depois de solucionar os erros, clique em Rerun failed indexes (Reexecutar índices com falha ) para executar o trabalho novamente para os índices que falharam.
Verificando a referência de imagem de contêiner para minha tarefa
Ao trabalhar com tarefas Code Engine, deve-se especificar uma referência de imagem de contêiner e um segredo de registro para acessar a imagem. Para que a tarefa funcione corretamente, a referência de imagem e suas propriedades de acesso devem permanecer válidas durante a vida da tarefa..