Trabajos de depuración

Utilice los consejos de resolución de problemas para aprender a resolver problemas con las compilaciones y ejecuciones de IBM Cloud® Code Engine de una compilación.

Límites de trabajo a tener en cuenta

El número máximo de trabajos que se pueden tener en un proyecto es 100. Está limitado a un total de 100 ejecuciones de trabajo por proyecto antes de tener que eliminar o limpiar las antiguas.

Para obtener información adicional sobre los límites de los trabajos, incluidas memoria y CPU, consulte Límites y cuotas de Code Engine.

Con la CLI, puede utilizar el mandato ibmcloud ce project get para visualizar información sobre los límites y el uso actual. Por ejemplo:

ibmcloud ce project get --name myproject

Salida de ejemplo

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

Obtención de los registros de mis trabajos

Los registros pueden ser útiles para resolver problemas cuando se ejecutan trabajos. Puede ver los registros de un trabajo desde la consola o con la CLI.

Cuando se consultan los registros en la consola, hay que crear una instancia de IBM Cloud Logs en la misma región que el proyecto de Code Engine. No es necesario que cree esta instancia antes de trabajar con el trabajo de Code Engine. En Code Engine es muy fácil habilitar el registro para sus trabajos. Puede ver registros de trabajo después de añadir prestaciones de registro. Para obtener más información, consulte Visualización de registros del trabajo desde la consola.

Al trabajar con la CLI, puede visualizar los registros de todas las instancias del trabajo en ejecución o visualizar los registros de una instancia específica del trabajo.

  1. Utilice el mandato ibmcloud ce jobrun list para listar todas las ejecuciones de trabajo definidas; por ejemplo,

    ibmcloud ce jobrun list
    
  2. Utilice el mandato ibmcloud ce jobrun get para obtener los detalles de la ejecución del trabajo, incluido el nombre de las instancias para la ejecución del trabajo; por ejemplo,

    ibmcloud ce jobrun get --name myjobrun
    

    Salida de ejemplo

    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         29m
    

    Si desea detalles más precisos sobre la ejecución del trabajo, utilice la opción --o yaml con el mandato jobrun get; por ejemplo, ibmcloud ce jobrun get --name myjobrun --o yaml. Esta opción es útil para mostrar información más detallada en la CLI para la ejecución del trabajo.

  3. Muestre los registros de las instancias del trabajo.

        ibmcloud ce jobrun logs --instance  myjobrun-4-0
        ```
        Salida de ejemplo
    
        ```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 visualizar los registros de todas las instancias de la ejecución del trabajo, utilice el mandato [**`ibmcloud ce jobrun logs --jobrun JOBRUN_NAME`**](/docs/codeengine?topic=codeengine-cli#cli-jobrun-logs); por ejemplo,
    
    ```txt {: pre}
        ibmcloud ce jobrun logs --jobrun myjobrun
        ```
        Salida de ejemplo
    
        ```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 obtener más información, consulte Visualización de registros de trabajo con la CLI.

Obtención de la información de sucesos del sistema de los trabajos

La información de sucesos del sistema puede ser útil para resolver problemas al ejecutar trabajos. Se puede ver la información de sucesos del sistema con la CLI.

Puede visualizar sucesos del sistema de todas las instancias de una ejecución de trabajo o visualizar sucesos del sistema de una instancia específica de una ejecución de trabajo.

  1. Utilice el mandato ibmcloud ce jobrun list para listar todas las ejecuciones de trabajo definidas; por ejemplo,

    ibmcloud ce jobrun list
    
  2. Utilice el mandato ibmcloud ce jobrun get para obtener los detalles de la ejecución del trabajo, incluido el nombre de las instancias de la ejecución del trabajo; por ejemplo,

    ibmcloud ce jobrun get --name myjobrun
    

    Salida de ejemplo

    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         29m
    

    Si desea detalles más precisos sobre la ejecución del trabajo, utilice la opción --o yaml con el mandato jobrun get; por ejemplo, ibmcloud ce jobrun get --name myjobrun --o yaml. Esta opción es útil para mostrar información más detallada en la CLI para la ejecución del trabajo.

  3. Muestre los sucesos del sistema de las instancias del trabajo.

        ibmcloud ce jobrun events --instance myjobrun-4-0
        ```
        Salida de ejemplo
    
        ```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 visualizar sucesos de todas las instancias de la ejecución del trabajo, utilice el mandato [**`ibmcloud ce jobrun events --jobrun JUBRUN_NAME`**](/docs/codeengine?topic=codeengine-cli#cli-jobrun-events); por ejemplo,
    
    ```txt {: pre}
        ibmcloud ce jobrun events --jobrun myjobrun
        ```
        Salida de ejemplo
    
        ```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
        ```
    

Entender por qué los índices de ejecución de trabajos pueden fallar

Cuando los índices de ejecución de trabajos fallan en la consola, puede buscar los errores y el razonamiento para ayudar a solucionar los problemas, rectificar las cuestiones y, a continuación, volver a ejecutar los índices de ejecución de trabajos.

Para gestionar tus trabajos y ejecuciones de trabajos, desde la página «Proyectos» de Code Engine, haz clic en el nombre de tu proyecto en la lista de proyectos y, a continuación, haz clic en « Trabajos ». En la pestaña «Ejecuciones de tareas», consulta las instancias de ejecución de las tareas. Las ejecuciones de tareas incompletas aparecen como « Failed (<error>) » en la columna « Estado ». La siguiente tabla explica los errores comunes del índice de ejecución de trabajos y las acciones a tomar:

Índices de errores y motivos de trabajos fallidos
Error Explicación Acción sugerida al usuario
ContainerExitedCode Un error que incluye un código de salida proporcionado por la carga de trabajo del usuario. Determine el motivo del código de salida dentro de su aplicación y depúrelo.
ExceededEphemeralStorage La instancia ha asignado más almacenamiento efímero dentro de su contenedor del permitido. Aumenta el almacenamiento efímero de tu recurso.
ExecutableNotFound No se puede encontrar el archivo ejecutable especificado dentro del contenedor. El contenedor no puede arrancar sin él. Verifique que el punto de entrada especificado en su imagen contenedora sea correcto y que el ejecutable exista dentro de la imagen.
MaxExecutionTimeExceeded El trabajo no se completó dentro del tiempo máximo de ejecución. Si se estaban ejecutando varias instancias, todas las instancias que aún no se completaron muestran este error. Aumentar el valor de tiempo de espera de ejecución del trabajo.
OOMKilled Un error de falta de memoria. La instancia superó el límite de memoria asignado. Aumenta la CPU y la memoria de tu recurso.

Después de corregir los errores, haga clic en Volver a ejecutar índices fallidos para volver a ejecutar el trabajo para los índices que fallaron.

Verificación de la referencia de imagen de contenedor para mi trabajo

Cuando trabaja con trabajos Code Engine, debe especificar una referencia de imagen de contenedor y un secreto de registro para acceder a la imagen. Para que el trabajo funcione correctamente, la referencia de imagen y sus propiedades de acceso deben seguir siendo válidas durante la vida del trabajo.

Consulte ¿Cómo puedo verificar mi referencia de imagen?