Ejecución de un trabajo
Después de crear el trabajo, puede ejecutar un trabajo en función de su definición o puede ejecutar el trabajo con otras propiedades. Ejecute el trabajo desde la consola o con la CLI.
Cada vez que se ejecuta el trabajo, se utiliza la última versión de la imagen de contenedor referenciada para la ejecución del trabajo, a menos que se especifique una etiqueta para la imagen. Si se especifica una etiqueta para la imagen, se utiliza la imagen etiquetada para la ejecución del trabajo.
Los trabajos por lotes enviados se ejecutan en paralelo, si es posible. Si el número o el tamaño de los trabajos enviados supera los límites de cuota configurados, como el número máximo de instancias en ejecución, Code Engine pone en cola los trabajos y los retardos que los ejecutan hasta que finalicen suficientes trabajos. Para obtener más información sobre los trabajos por lotes, consulte Carga de trabajo de los trabajos por lotes. Para obtener más información sobre cuotas y límites de los trabajos, incluida la memoria y la CPU, consulte Límites y cuotas de Code Engine.
Las ejecuciones de tareas creadas por suscripciones se eliminan al cabo de diez minutos. Para obtener información adicional sobre las suscripciones, consulte Primeros pasos con las suscripciones.
Las búsquedas de empleo que se completan se eliminan automáticamente después de una semana.
Ejecución de un trabajo desde la consola
Cuando crea un trabajo, puede ejecutarlo inmediatamente. No obstante, puede enviar y volver a enviar un trabajo en cualquier momento. También puede enviar o volver a enviar un trabajo que haya creado anteriormente.
-
Vaya a la página de trabajo.
- En la página «Proyectos» de Code Engine, haz clic en el nombre de tu proyecto.
- Haz clic en « Trabajos » y, a continuación, en la pestaña « Trabajos ».
- Haz clic en el nombre del trabajo que quieras ejecutar.
-
Pulse Enviar trabajo para abrir el diálogo Enviar trabajo. Revise y, opcionalmente, cambie los valores de configuración predeterminados como, por ejemplo, instancias, CPU, memoria, número de reintentos de trabajo y tiempo de espera de trabajo. Para obtener más información, consulte Opciones para crear y ejecutar un trabajo.
-
Pulse Enviar trabajo para ejecutar el trabajo. El sistema muestra el estado de las instancias del trabajo en la página de detalles del trabajo.
-
Si alguno de los casos de su trabajo no se ejecuta, solucione el error y, a continuación, haga clic en Volver a ejecutar índices fallidos para ejecutar de nuevo el trabajo para los índices que fallaron. En el panel «Enviar trabajo», revisa y, si lo deseas, modifica los valores de configuración. La sección «Índices de la matriz » muestra automáticamente los índices de las instancias de ejecución del trabajo que han fallado. Después de revisar y opcionalmente cambiar los valores de configuración, pulse Enviar trabajo para ejecutar el trabajo.
Para solucionar los errores habituales relacionados con los índices de ejecución de trabajos, consulta « Por qué pueden fallar los índices de ejecución de trabajos ».
También puede volver a ejecutar trabajos existentes. Para volver a ejecutar un trabajo específico, pulse la pestaña Ejecuciones de trabajo y, a continuación, pulse el nombre de la ejecución de trabajo con la que desea trabajar. Pulse Volver a ejecutar para volver a ejecutar este trabajo.
Puede ver registros de trabajo después de añadir prestaciones de registro. Para obtener más información, consulte Visualización de registros.
La variable de entorno JOB_INDEX se inyecta automáticamente en cada instancia del trabajo cuando se ejecuta el trabajo. Para obtener más información sobre las variables de entorno establecidas por Code Engine, consulte Veo configmaps que no he creado. ¿Puedo eliminarlos?.
Ejecución de un trabajo con la CLI
Antes de empezar
- Configure el entorno de Code Engine.
- Cree un trabajo.
Para ejecutar un trabajo con la CLI, utilice el mandato jobrun submit. Para ver una lista completa de opciones, consulte el mandato ibmcloud ce jobrun submit.
Con la CLI, puede ejecutar un trabajo basado en una configuración de trabajo o puede ejecutar un trabajo sin crear primero una configuración de trabajo.
Ejecución de un trabajo con la CLI según una configuración de trabajo
Al crear una configuración de trabajo, puede ejecutar más fácilmente el trabajo varias veces.
Por ejemplo, el siguiente mandato jobrun submit crea cinco nuevas instancias para ejecutar la imagen de contenedor que se especifica en la configuración de trabajo myjob definida. Para hacer referencia
a una configuración de trabajo definida, utilice la opción --job. Aunque la opción --name no es necesaria si se especifica la opción --job, el siguiente mandato de ejemplo especifica la opción --name para proporcionar un nombre para esta ejecución de trabajo. Para los trabajos, el valor predeterminado de cpu es 1 y el valor predeterminado de memory es 4G. Los límites y las solicitudes
de recursos se aplican por instancia, de modo que cada instancia obtiene 4 G de memoria y 1 vCPU. Este trabajo asigna 5 * 4 G = 20 G de memoria y 5 * 1 vCPU = 5 vCPU.
ibmcloud ce jobrun submit --name testjobrun --job myjob --array-indices "1 - 5"
En la tabla siguiente se resumen las opciones que se utilizan con el mandato jobrun submit en este ejemplo. Para obtener más información sobre el mandato y sus opciones, consulte el mandato ibmcloud ce jobrun submit.
| Opción | Descripción |
|---|---|
--name |
El nombre de esta ejecución del trabajo. Los valores
|
--job |
Nombre del trabajo que se va a ejecutar. Este valor es obligatorio si no especifica los valores --name e --image. |
--array-indices |
Especifica los índices de las instancias que se utilizan para ejecutar el trabajo. Especifica la lista o el rango de índices separados por guiones (-) o comas (,); por ejemplo, 1,3,6,9 o 1-5,7-8,10. El máximo
es 999999. Este valor es opcional. El valor predeterminado es 0. |
La variable de entorno JOB_INDEX se inyecta automáticamente en cada instancia del trabajo cuando se ejecuta el trabajo. Para obtener más información sobre las variables de entorno establecidas por Code Engine, consulte Veo configmaps que no he creado. ¿Puedo eliminarlos?.
Ejecución de un trabajo con la CLI sin crear primero una configuración de trabajo
Con la CLI, puede enviar una ejecución de trabajo sin crear primero una configuración de trabajo. Puede especificar las mismas opciones de configuración en los mandatos jobrun submit y jobrun resubmit que están disponibles
con el mandato job create.
Por ejemplo, el siguiente mandato ibmcloud ce jobrun submit envía una ejecución de trabajo para hacer referencia a la imagen us.icr.io/mynamespace/myhello_bld utilizando la opción de acceso myregistry. Debido a que esta ejecución de trabajo no hace referencia a una configuración de trabajo definida, debe especificar valores para las opciones --name e image . Utilice --name para especificar el nombre de esta ejecución de trabajo y utilice --image para proporcionar el nombre de la imagen que se utiliza para esta ejecución de trabajo. La opción --array-indices crea cinco nuevas instancias para ejecutar la imagen de contenedor. Para ejecuciones de trabajo, el valor predeterminado de cpu es 1 y el valor predeterminado de memory es 4G. Los límites
y las solicitudes de recursos se aplican por instancia, de modo que cada instancia obtiene 4 G de memoria y 1 vCPU. Esta ejecución de trabajo asigna 5 * 4 G = 20 G de memoria y 5 * 1 vCPU = 5 vCPU.
ibmcloud ce jobrun submit --name myhellojob-jobruna --image us.icr.io/mynamespace/myhello_bld --registry-secret myregistry --array-indices "1 - 5"
Ejecute el mandato jobrun get -n myhellojob-jobruna para comprobar el estado de la ejecución del trabajo.
Salida de ejemplo
[...]
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
Las ejecuciones de trabajo que se envían (o reenvían) con la CLI que no hacen referencia a una configuración de trabajo definida no se pueden visualizar desde la consola.
Cómo volver a enviar el trabajo con la CLI
Si desea volver a enviar una ejecución de trabajo basada en la configuración de una ejecución de trabajo anterior, utilice el mandato jobrun resubmit. Este mandato requiere el nombre de la ejecución de trabajo anterior
y también permite otros argumentos opcionales. Para ver una lista completa de opciones, consulte el mandato ibmcloud ce jobrun resubmit.
Por ejemplo, el siguiente mandato jobrun resubmit vuelve a enviar la ejecución del trabajo testjobrun.
ibmcloud ce jobrun resubmit --jobrun testjobrun
Salida de ejemplo
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 ejemplo, el siguiente mandato jobrun resubmit vuelve a enviar la ejecución de trabajo myhellojob-jobruna, que se ha ejecutado sin crear primero la configuración del trabajo. Debido a que la ejecución
de trabajo a la que se hace referencia no tiene una configuración de trabajo relacionada, debe especificar la opción --name para especificar un nombre para este trabajo.
ibmcloud ce jobrun resubmit --jobrun myhellojob-jobruna --name myhellojob-jobrunb
Ejecute el mandato jobrun get -n myhellojob-jobrunb para comprobar el estado de la ejecución del trabajo.
Salida de ejemplo
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
Las ejecuciones de trabajo que se envían (o reenvían) con la CLI que no hacen referencia a una configuración de trabajo definida no se pueden visualizar desde la consola.
Próximos pasos
-
Después de ejecutar el trabajo, para ver los detalles del trabajo y las ejecuciones del trabajo, consulte Detalles de trabajo.
-
Ahora que se ha creado el trabajo, se recomienda que los trabajos estén controlados por sucesos. Con las suscripciones de sucesos, puede desencadenar los trabajos utilizando planificaciones periódicas o establecer el trabajo para que reaccione a sucesos como las cargas de archivos.
-
Puede actualizar el trabajo y su código referenciado de varias formas, independientemente de cómo haya creado o actualizado el trabajo con anterioridad.
-
Si dispones de una imagen de contenedor que cumpla con el estándar de la Open Container Initiative(OCI), solo tendrás que proporcionar una referencia a dicha imagen, que apunte a la ubicación de tu registro de contenedores, al crear (o actualizar) tu trabajo. Puedes crear (o actualizar) tu trabajo a partir de imágenes de un registro público o privado y, a continuación, acceder a la imagen a la que se hace referencia desde la ejecución de tu trabajo.
Si ha creado el trabajo utilizando el mandato
job createy ha especificado la opción--build-sourcepara crear la imagen de contenedor desde el origen local o de repositorio, y desea cambiar el trabajo para que apunte a una imagen de contenedor diferente, primero debe eliminar la asociación de la compilación del trabajo. Por ejemplo, ejecuteibmcloud ce job update -n JOB_NAME --build-clear. Después de eliminar la asociación de la compilación del trabajo, puede actualizar el trabajo para que haga referencia a una imagen diferente. -
Si está empezando con un código fuente que reside en un repositorio de Git, puede dejar que Code Engine se encargue de compilar la imagen desde el código fuente y crear (o actualizar) el trabajo con una única operación. En este caso de ejemplo, Code Engine carga la imagen en IBM Cloud® Container Registry. Para obtener más información, consulte Creación de un trabajo a partir del código fuente del repositorio. Si desea tener más control sobre la compilación de la imagen, puede elegir compilar la imagen con Code Engine antes de crear (o actualizar) el trabajo y ejecutarlo.
-
Si está empezando con un código fuente que reside en una estación de trabajo local, puede dejar que Code Engine se encargue de compilar la imagen desde el código fuente y crear el trabajo con un único mandato de CLI. En este caso de ejemplo, Code Engine carga la imagen en IBM Cloud® Container Registry. Para obtener más información, consulte Creación del trabajo a partir del código fuente local con la CLI. Si desea tener más control sobre la compilación de la imagen, puede elegir compilar la imagen con Code Engine antes de crear (o actualizar) el trabajo y ejecutarlo.
Por ejemplo, puede dejar que Code Engine maneje la compilación del código fuente local mientras avanza en el desarrollo del código fuente para el trabajo. Una vez que la imagen ha madurado, puede actualizar el trabajo para que haga referencia a la imagen específica que desee. Puede repetir este proceso según sea necesario.
Cuando ejecuta el trabajo actualizado, se utiliza la última versión de la imagen de contenedor referenciada para la ejecución del trabajo, a menos que se especifique una etiqueta para la imagen. Si se especifica una etiqueta para la imagen, se utiliza la imagen etiquetada para la ejecución del trabajo.
-
¿Desea ver más ejemplos de código? Echa un vistazo a Ejemplos para el repositorio « IBM Cloud Code Engine GitHub ».