En este documento se explica cómo usar etiquetas para organizar los recursos de Batch.
Las etiquetas son pares clave-valor que se aplican a los recursos para agruparlos y describirlos. Batch tiene etiquetas predefinidas, que se aplican automáticamente a los recursos, y etiquetas personalizadas, que puedes definir y aplicar al crear un trabajo.
Las etiquetas te permiten filtrar los resultados de las listas de recursos y los informes de facturación de Cloud. Por ejemplo, puedes usar etiquetas para hacer lo siguiente:
Clarifica y organiza la lista de tareas de tu proyecto.
Distingue los elementos ejecutables de un trabajo mediante etiquetas que describan el tipo de contenedor o secuencia de comandos que especifican.
Analiza los costes filtrando los informes de facturación de Cloud por los recursos creados por Batch o por tareas específicas.
Para obtener más información sobre las etiquetas, consulta la documentación de Compute Engine sobre etiquetas.
Antes de empezar
- Si no has usado Batch antes, consulta el artículo Empezar a usar Batch y habilita Batch completando los requisitos previos para proyectos y usuarios.
-
Para obtener los permisos que necesitas para crear un trabajo, pide a tu administrador que te conceda los siguientes roles de gestión de identidades y accesos:
-
Editor de trabajos por lotes (
roles/batch.jobsEditor
) en el proyecto -
Usuario de cuenta de servicio (
roles/iam.serviceAccountUser
) en la cuenta de servicio del trabajo, que de forma predeterminada es la cuenta de servicio predeterminada de Compute Engine
Para obtener más información sobre cómo conceder roles, consulta el artículo Gestionar el acceso a proyectos, carpetas y organizaciones.
También puedes conseguir los permisos necesarios a través de roles personalizados u otros roles predefinidos.
-
Editor de trabajos por lotes (
Restricciones
Además de los requisitos de las etiquetas especificados en la documentación de Compute Engine, aplicar etiquetas a un trabajo por lotes y a sus recursos tiene las siguientes restricciones:
Batch solo admite etiquetas de recursos que se hayan creado con Batch y que sean de los siguientes tipos:
Empleo
Ejecutables
Unidades de procesamiento gráfico (GPUs) de un trabajo (si las hay)
Discos persistentes (discos de arranque y cualquier volumen de almacenamiento) de un trabajo
Instancias de máquina virtual (VM) de un trabajo
Después de tener en cuenta las etiquetas predefinidas que Batch aplica automáticamente a una tarea, puedes definir las siguientes cantidades de etiquetas personalizadas:
Puedes definir un máximo de 63 etiquetas personalizadas para aplicarlas a la tarea y a sus elementos ejecutables.
Puedes definir un máximo de 61 etiquetas personalizadas para aplicar a cada GPU, disco persistente y VM creados para el trabajo.
Batch solo permite definir etiquetas personalizadas con nombres únicos. Esto tiene las siguientes consecuencias:
Si intenta anular una etiqueta predefinida, se producirán errores.
Si define una etiqueta personalizada duplicada, se sobrescribirá la etiqueta personalizada ya creada.
Batch solo admite la definición de etiquetas al crear un trabajo.
No se pueden añadir, actualizar ni quitar etiquetas de los trabajos y los elementos ejecutables.
Aunque es posible usar Compute Engine para añadir, actualizar o quitar etiquetas de los discos persistentes y las VMs creados para los trabajos, no se recomienda. No se puede estimar de forma fiable el periodo durante el que existen los recursos de un trabajo y es posible que los cambios no funcionen correctamente con Batch.
Para usar etiquetas y filtrar la lista de tareas, debes ver la lista de tareas con gcloud CLI o la API Batch.
Etiquetas predefinidas
Cada etiqueta predefinida tiene una clave que empieza por el prefijo batch-
. De forma predeterminada, Batch aplica automáticamente las siguientes etiquetas predefinidas:
En cada trabajo que crees:
batch-job-id
: el valor de esta etiqueta es el nombre del trabajo.
A cada GPU, disco persistente y VM creados para un trabajo:
batch-job-id
: el valor de esta etiqueta es el nombre del trabajo.batch-job-uid
: el valor de esta etiqueta es el identificador único (UID) del trabajo.batch-node
: el valor de esta etiqueta es nulo. Solo agrupa todas las GPUs, los discos persistentes y las VMs que se crean para los trabajos. Por ejemplo, usa esta etiqueta cuando consultes un informe de Facturación de Cloud para identificar los costes de todas las GPUs, los discos persistentes y las VMs creados por Batch.
Definir etiquetas personalizadas
Cuando creas un trabajo, puedes definir una o varias etiquetas personalizadas. Puedes definir etiquetas personalizadas con claves nuevas o con claves que ya use tu proyecto. Para definir etiquetas personalizadas, selecciona uno o varios de los siguientes métodos de este documento en función del propósito de la etiqueta:
Define etiquetas personalizadas para el trabajo y sus recursos.
En esta sección se explica cómo aplicar una o varias etiquetas personalizadas al trabajo y a cada GPU, disco persistente y VM creados para el trabajo. Una vez creada la tarea, puedes usar estas etiquetas para filtrar los informes de facturación de Cloud y las listas de tareas, discos persistentes y VMs de tu proyecto.
Defina etiquetas personalizadas para el trabajo.
En esta sección se explica cómo aplicar una o varias etiquetas personalizadas al trabajo. Después de crear el trabajo, puedes usar estas etiquetas para filtrar las listas de trabajos de tu proyecto.
Define etiquetas personalizadas para elementos ejecutables.
En esta sección se explica cómo aplicar una o varias etiquetas personalizadas a una o varias tareas ejecutables del trabajo. Una vez que hayas creado el trabajo, podrás usar estas etiquetas para filtrar las listas de trabajos de tu proyecto.
Definir etiquetas personalizadas para el trabajo y sus recursos
Las etiquetas definidas en el campo labels
de la política de asignación de una tarea
se aplican a la tarea, así como a cada GPU (si la hay), disco persistente (todos los discos de arranque y los volúmenes de almacenamiento nuevos) y VM creados para la tarea.
Puedes definir etiquetas para un trabajo y sus recursos al crear un trabajo con la CLI de gcloud o la API Batch.
gcloud
Por ejemplo, para crear un trabajo de contenedor básico en us-central1
que defina dos etiquetas personalizadas que se apliquen al trabajo y a los recursos creados para el trabajo, sigue estos pasos:
Crea un archivo JSON que especifique los detalles de configuración del trabajo y el campo
allocationPolicy.labels
.{ "allocationPolicy": { "instances": [ { "policy": { "machineType": "e2-standard-4" } } ], "labels": { "VM_LABEL_NAME1": "VM_LABEL_VALUE1", "VM_LABEL_NAME2": "VM_LABEL_VALUE2" } }, "taskGroups": [ { "taskSpec": { "runnables": [ { "container": { "imageUri": "gcr.io/google-containers/busybox", "entrypoint": "/bin/sh", "commands": [ "-c", "echo Hello world!" ] } } ] } } ] }
Haz los cambios siguientes:
VM_LABEL_NAME1
: nombre de la primera etiqueta que se aplicará a las VMs creadas para el trabajo.VM_LABEL_VALUE1
: el valor de la primera etiqueta que se aplicará a las VMs creadas para el trabajo.VM_LABEL_NAME2
: Nombre de la segunda etiqueta que se aplicará a las VMs creadas para el trabajo.VM_LABEL_VALUE2
: valor de la segunda etiqueta que se aplicará a las VMs creadas para el trabajo.
Crea el trabajo en
us-central1
con el comandogcloud batch jobs submit
.gcloud batch jobs submit example-job \ --config=JSON_CONFIGURATION_FILE \ --location=us-central1
Sustituye
JSON_CONFIGURATION_FILE
por la ruta al archivo JSON con los detalles de configuración del trabajo que has creado en el paso anterior.
API
Por ejemplo, para crear una tarea de contenedor básica en us-central1
que defina dos etiquetas personalizadas que se apliquen a la tarea y a los recursos creados para la tarea, haz una solicitud POST
al método jobs.create
y especifica el campo allocationPolicy.labels
.
POST https://batch.googleapis.com/v1/projects/example-project/locations/us-central1/jobs?job_id=example-job
{
"allocationPolicy": {
"instances": [
{
"policy": {
"machineType": "e2-standard-4"
}
}
],
"labels": {
"VM_LABEL_NAME1": "VM_LABEL_VALUE1",
"VM_LABEL_NAME2": "VM_LABEL_VALUE2"
}
},
"taskGroups": [
{
"taskSpec": {
"runnables": [
{
"container": {
"imageUri": "gcr.io/google-containers/busybox",
"entrypoint": "/bin/sh",
"commands": [
"-c",
"echo Hello world!"
]
}
}
]
}
}
]
}
Haz los cambios siguientes:
VM_LABEL_NAME1
: nombre de la primera etiqueta que se aplicará a las VMs creadas para el trabajo.VM_LABEL_VALUE1
: valor de la primera etiqueta que se aplicará a las VMs creadas para el trabajo.VM_LABEL_NAME2
: nombre de la segunda etiqueta que se aplicará a las VMs creadas para el trabajo.VM_LABEL_VALUE2
: valor de la segunda etiqueta que se aplicará a las VMs creadas para el trabajo.
Java
Node.js
Python
Definir etiquetas personalizadas para el trabajo
Las etiquetas definidas en el campo labels
de la tarea
solo se aplican a la tarea.
Puedes definir etiquetas para una tarea al crearla con la CLI de gcloud o la API Batch.
gcloud
Por ejemplo, para crear un trabajo de contenedor básico en us-central1
que defina dos etiquetas personalizadas que se apliquen al propio trabajo, sigue estos pasos:
Crea un archivo JSON que especifique los detalles de configuración del trabajo y el campo
labels
.{ "taskGroups": [ { "taskSpec": { "runnables": [ { "container": { "imageUri": "gcr.io/google-containers/busybox", "entrypoint": "/bin/sh", "commands": [ "-c", "echo Hello World!" ] } } ] } } ], "labels": { "JOB_LABEL_NAME1": "JOB_LABEL_VALUE1", "JOB_LABEL_NAME2": "JOB_LABEL_VALUE2" } }
Haz los cambios siguientes:
JOB_LABEL_NAME1
: el nombre de la primera etiqueta que se aplicará al trabajo.JOB_LABEL_VALUE1
: El valor de la primera etiqueta que se aplicará al trabajo.JOB_LABEL_NAME2
: el nombre de la segunda etiqueta que quieres aplicar al trabajo.JOB_LABEL_VALUE2
: el valor de la segunda etiqueta que se va a aplicar al trabajo.
Crea el trabajo en
us-central1
con el comandogcloud batch jobs submit
y las siguientes marcas:gcloud batch jobs submit example-job \ --config=JSON_CONFIGURATION_FILE \ --location=us-central1
Sustituye
JSON_CONFIGURATION_FILE
por la ruta al archivo JSON con los detalles de configuración del trabajo que has creado en el paso anterior.
API
Por ejemplo, para crear un trabajo de contenedor en us-central1
que defina dos etiquetas personalizadas que se aplicarán al propio trabajo, haz una solicitud POST
al método jobs.create
y especifica el campo labels
.
POST https://batch.googleapis.com/v1/projects/example-project/locations/us-central1/jobs?job_id=example-job
{
"taskGroups": [
{
"taskSpec": {
"runnables": [
{
"container": {
"imageUri": "gcr.io/google-containers/busybox",
"entrypoint": "/bin/sh",
"commands": [
"-c",
"echo Hello World!"
]
}
}
]
}
}
],
"labels": {
"JOB_LABEL_NAME1": "JOB_LABEL_VALUE1",
"JOB_LABEL_NAME2": "JOB_LABEL_VALUE2"
}
}
Haz los cambios siguientes:
JOB_LABEL_NAME1
: el nombre de la primera etiqueta que se aplicará al trabajo.JOB_LABEL_VALUE1
: el valor de la primera etiqueta que se va a aplicar a tu trabajo.JOB_LABEL_NAME2
: nombre de la segunda etiqueta que se aplicará al trabajo.JOB_LABEL_VALUE2
: el valor de la segunda etiqueta que se va a aplicar al trabajo.
Java
Node.js
Python
Definir etiquetas personalizadas para elementos ejecutables
Las etiquetas definidas en el campo labels
de un elemento ejecutable
solo se aplican a ese elemento.
Puedes definir etiquetas para uno o varios elementos ejecutables al crear un trabajo con la CLI de gcloud o la API Batch.
gcloud
Por ejemplo, para crear un trabajo en us-central1
que defina dos etiquetas personalizadas, una para cada uno de los dos elementos ejecutables del trabajo, sigue estos pasos:
Crea un archivo JSON que especifique los detalles de configuración del trabajo y los campos
runnables.labels
.{ "taskGroups": [ { "taskSpec": { "runnables": [ { "container": { "imageUri": "gcr.io/google-containers/busybox", "entrypoint": "/bin/sh", "commands": [ "-c", "echo Hello from task ${BATCH_TASK_INDEX}!" ] }, "labels": { "RUNNABLE1_LABEL_NAME1": "RUNNABLE1_LABEL_VALUE1" } }, { "script": { "text": "echo Hello from task ${BATCH_TASK_INDEX}!" }, "labels": { "RUNNABLE2_LABEL_NAME1": "RUNNABLE2_LABEL_VALUE1" } } ] } } ] }
Haz los cambios siguientes:
RUNNABLE1_LABEL_NAME1
: nombre de la etiqueta que se va a aplicar a la primera tarea ejecutable del trabajo.RUNNABLE1_LABEL_VALUE1
: el valor de la etiqueta que se va a aplicar a la primera tarea ejecutable del trabajo.RUNNABLE2_LABEL_NAME1
: nombre de la etiqueta que se va a aplicar al segundo ejecutable del trabajo.RUNNABLE2_LABEL_VALUE1
: el valor de la etiqueta que se va a aplicar al segundo ejecutable del trabajo.
Crea el trabajo en
us-central1
con el comandogcloud batch jobs submit
.gcloud batch jobs submit example-job \ --config=JSON_CONFIGURATION_FILE \ --location=us-central1
Sustituye
JSON_CONFIGURATION_FILE
por la ruta al archivo JSON con los detalles de configuración del trabajo que has creado en el paso anterior.
API
Por ejemplo, para crear un trabajo en us-central1
que defina dos etiquetas personalizadas, una para cada uno de los dos elementos ejecutables del trabajo, haz una solicitud POST
al método jobs.create
y especifica los campos runnables.labels
.
POST https://batch.googleapis.com/v1/projects/example-project/locations/us-central1/jobs?job_id=example-job
{
"taskGroups": [
{
"taskSpec": {
"runnables": [
{
"container": {
"imageUri": "gcr.io/google-containers/busybox",
"entrypoint": "/bin/sh",
"commands": [
"-c",
"echo Hello from ${BATCH_TASK_INDEX}!"
]
},
"labels": {
"RUNNABLE1_LABEL_NAME1": "RUNNABLE1_LABEL_VALUE1"
}
},
{
"script": {
"text": "echo Hello from ${BATCH_TASK_INDEX}!"
},
"labels": {
"RUNNABLE2_LABEL_NAME1": "RUNNABLE2_LABEL_VALUE1"
}
}
]
}
}
]
}
Haz los cambios siguientes:
RUNNABLE1_LABEL_NAME1
: Nombre de la etiqueta que se va a aplicar al elemento ejecutable del primer trabajo.RUNNABLE1_LABEL_VALUE1
: valor de la etiqueta que se va a aplicar al elemento ejecutable del primer trabajo.RUNNABLE2_LABEL_NAME1
: nombre de la etiqueta que se va a aplicar al elemento ejecutable del segundo trabajo.RUNNABLE2_LABEL_VALUE1
: valor de la etiqueta que se va a aplicar al elemento ejecutable del segundo trabajo.
Java
Node.js
Python
Siguientes pasos
Usa etiquetas como filtros cuando hagas lo siguiente:
Consulta cómo eliminar trabajos.