Organizar los recursos con etiquetas

En este documento, se explica cómo usar etiquetas para organizar tus recursos de Batch.

Las etiquetas son pares clave-valor que se aplican a los recursos para agrupar y describir de ellos. Batch tiene etiquetas predefinidas, que se que se aplican a los recursos, y las etiquetas personalizadas, que puedes definir y aplicar cuando en la creación de un trabajo.

Las etiquetas te permiten filtrar los resultados de las listas de recursos y de Facturación de Cloud informes. Por ejemplo, puedes usar etiquetas para lo siguiente:

  • Aclara y organiza la lista de trabajos de tu proyecto.

  • Distinguir los ejecutables de un trabajo usando etiquetas para describir el tipo de contenedor o secuencia de comandos que especifique.

  • Analiza los costos filtrando los informes de Facturación de Cloud para los recursos creados por lotes o trabajos específicos.

Para obtener más información sobre las etiquetas, consulta la documentación de Compute Engine sobre las etiquetas.

Antes de comenzar

  1. Si nunca usaste Batch, consulta Cómo comenzar a usar Batch y habilita Batch completando los requisitos previos para proyectos y usuarios.
  2. A fin de obtener los permisos que necesitas para crear un trabajo, solicita a tu administrador que te otorgue el los siguientes roles de IAM:

    Para obtener más información sobre cómo otorgar roles, consulta Administra el acceso a proyectos, carpetas y organizaciones.

    También puedes obtener los permisos necesarios mediante roles personalizados o cualquier otro rol predefinido.

Restricciones

Además del artículo requisitos para las etiquetas especificadas en la documentación de Compute Engine, El trabajo por lotes y sus recursos tienen las siguientes restricciones:

  • Batch solo admite etiquetas para los recursos que se crean con Batch y de los siguientes tipos:

  • Luego de considerar las etiquetas predefinidas que Batch se aplica automáticamente a un trabajo, puedes definir la las siguientes cantidades de etiquetas personalizadas:

    • Puedes definir un máximo de 63 etiquetas personalizadas para aplicar al trabajo y a su ejecutables.

    • Puedes definir un máximo de 61 etiquetas personalizadas para aplicar a cada GPU. el disco persistente y la VM creada para el trabajo.

  • Los lotes solo admiten la definición de etiquetas personalizadas con nombres únicos. Esto tiene las siguientes consecuencias:

    • Si intentas anular una etiqueta predefinida, se generarán errores.

    • La definición de una etiqueta personalizada duplicada anula la etiqueta personalizada existente.

  • Batch solo admite la definición de etiquetas cuando se crea un trabajo.

    • No se pueden agregar, actualizar ni quitar etiquetas para trabajos y ejecutables.

    • Aunque es posible usar Compute Engine para agregar, actualizar o quitar etiquetas de los discos persistentes y VMs creadas para los trabajos, no se recomienda. El período en que existen los recursos para un trabajo no se puede se calcula de manera confiable, y es posible que los cambios no funcionen correctamente con por lotes.

  • Para usar etiquetas y filtrar tu lista de trabajos, debes ver tu lista de trabajos con la CLI de gcloud o la API de Batch.

Etiquetas predefinidas

Cada etiqueta predefinida tiene una clave que comienza con el prefijo batch-. De Batch aplica automáticamente los siguientes parámetros predefinidos etiquetas:

  • Sigue estos pasos en cada trabajo que crees:

    • batch-job-id: El valor de esta etiqueta se establece en el nombre del trabajo.
  • A cada GPU, disco persistente y VM creada para un trabajo, haz lo siguiente:

    • batch-job-id: El valor de esta etiqueta se establece en el nombre del trabajo.

    • batch-job-uid: El valor de esta etiqueta se establece en el nombre único del trabajo. identificador (UID).

    • batch-node: El valor de esta etiqueta es nulo, solo agrupa todos las GPU, los discos persistentes y las VMs que se crean para los trabajos. Por ejemplo: usa esta etiqueta cuando ver un informe de Facturación de Cloud para identificar los costos de todas las GPU, discos persistentes y VMs creados por por lotes.

Define etiquetas personalizadas

De manera opcional, puedes definir una o más etiquetas personalizadas cuando creas un trabajo. Puedes definir etiquetas personalizadas con claves nuevas o claves que ya usa tu proyecto. Para definir etiquetas personalizadas, selecciona uno o más de los siguientes métodos en esta documento según el propósito de la etiqueta:

  • Define etiquetas personalizadas para la tarea y sus recursos.

    Esta sección explica cómo aplicar una o más etiquetas personalizadas al trabajo y a cada GPU, disco persistente y VM creada para el trabajo. Después de crear el trabajo, puedes usar estas etiquetas para filtrar los informes de Facturación de Cloud y las listas de trabajos, discos persistentes y VMs de tu proyecto.

  • Definir etiquetas personalizadas para el trabajo

    En esta sección, se explica cómo aplicar una o más etiquetas personalizadas al trabajo. Después del cuando creas el trabajo, puedes usar estas etiquetas para filtrar las listas de de seguridad en la nube.

  • Definir etiquetas personalizadas para ejecutables.

    En esta sección, se explica cómo aplicar una o más etiquetas personalizadas a una o más de ellas. ejecutables para el trabajo. Después de crear el trabajo, puedes usar estas etiquetas para filtrar las listas de trabajos de tu proyecto.

Define etiquetas personalizadas para el trabajo y sus recursos

Las etiquetas definidas en el Campo labels para la política de asignación de un trabajo al trabajo, así como a cada GPU (si corresponde), disco persistente (todos discos de arranque y cualquier volumen de almacenamiento nuevo) y una VM creada para el trabajo.

Puedes definir etiquetas para un trabajo y sus recursos cuando creas un trabajo con el gcloud CLI o la API de Batch.

gcloud

Por ejemplo, para crear un trabajo de contenedor básico en us-central1 que defina dos las etiquetas personalizadas que se aplican al trabajo y los recursos sigue estos pasos:

  1. Crear un archivo JSON que especifique los detalles de configuración del trabajo y la 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!"
                  ]
                }
              }
            ]
          }
        }
      ]
    }
    

    Reemplaza lo siguiente:

    • VM_LABEL_NAME1: Es el nombre de la primera etiqueta que se aplicará. a las VMs creadas para el trabajo.

    • VM_LABEL_VALUE1: Es el valor de la primera etiqueta que se usará. se aplican a las VMs creadas para el trabajo.

    • VM_LABEL_NAME2: Es el nombre de la segunda etiqueta que se aplicará. a las VMs creadas para el trabajo.

    • VM_LABEL_VALUE2: El valor de la segunda etiqueta que se enviará se aplican a las VMs creadas para el trabajo.

  2. Crea el trabajo en us-central1 con el comando Comando gcloud batch jobs submit:

    gcloud batch jobs submit example-job \
        --config=JSON_CONFIGURATION_FILE \
        --location=us-central1
    

    Reemplaza JSON_CONFIGURATION_FILE por la ruta de acceso al archivo JSON con los detalles de configuración del trabajo que creaste en el paso anterior.

API

Por ejemplo, para crear un trabajo de contenedor básico en us-central1 que defina dos las etiquetas personalizadas que se aplican al trabajo y los recursos realiza 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!"
              ]
            }
          }
        ]
      }
    }
  ]
}

Reemplaza lo siguiente:

  • VM_LABEL_NAME1: Es el nombre de la primera etiqueta a la que se aplicará. las VMs creadas para el trabajo.

  • VM_LABEL_VALUE1: Es el valor de la primera etiqueta que se aplicará a las VMs creadas para la tarea.

  • VM_LABEL_NAME2: Es el nombre de la segunda etiqueta a la que se aplicará. las VMs creadas para el trabajo.

  • VM_LABEL_VALUE2: Es el valor de la segunda etiqueta que se aplicará. a las VMs creadas para el trabajo.

Definir etiquetas personalizadas para el trabajo

Etiquetas definidas en el campo labels del trabajo. solo se aplican al trabajo.

Puedes definir etiquetas para un trabajo cuando lo creas con el gcloud CLI o la API de Batch.

gcloud

Por ejemplo, para crear un trabajo de contenedor básico en us-central1 que defina si hay dos etiquetas personalizadas que corresponden al trabajo en cuestión, sigue estos pasos:

  1. Crear un archivo JSON que especifique los detalles de configuración del trabajo y la 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"
      }
    }
    

    Reemplaza lo siguiente:

    • JOB_LABEL_NAME1: Es el nombre de la primera etiqueta que se usará. se postulan a tu trabajo.

    • JOB_LABEL_VALUE1: Es el valor de la primera etiqueta que se aplicará a tu trabajo.

    • JOB_LABEL_NAME2: Es el nombre de la segunda etiqueta que se usará. se postulan a tu trabajo.

    • JOB_LABEL_VALUE2: Es el valor de la segunda etiqueta que se aplicará a tu trabajo.

  2. Crea el trabajo en us-central1 con el comando gcloud batch jobs submit y las siguientes marcas:

    gcloud batch jobs submit example-job \
        --config=JSON_CONFIGURATION_FILE \
        --location=us-central1
    

    Reemplaza JSON_CONFIGURATION_FILE por la ruta de acceso al archivo JSON con los detalles de configuración del trabajo que creaste en el paso anterior.

API

Por ejemplo, para crear un trabajo de contenedor en us-central1 que defina dos etiquetas personalizadas para aplicar a los trabajos en sí, realiza 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"
  }
}

Reemplaza lo siguiente:

  • JOB_LABEL_NAME1: Es el nombre de la primera etiqueta a la que se aplicará. en tu trabajo.

  • JOB_LABEL_VALUE1: Es el valor de la primera etiqueta que se aplicará a tu trabajo.

  • JOB_LABEL_NAME2: Es el nombre de la segunda etiqueta a la que se aplicará. en tu trabajo.

  • JOB_LABEL_VALUE2: Es el valor de la segunda etiqueta que se aplicará. a tu trabajo.

Definir etiquetas personalizadas para ejecutables

Las etiquetas definidas en el Campo labels para un ejecutable solo se aplican a ese ejecutable.

Puedes definir etiquetas para uno o más elementos ejecutables cuando creas un trabajo con la CLI de gcloud o la API de Batch.

gcloud

Por ejemplo, para crear un trabajo en us-central1 que defina dos etiquetas personalizadas, haz lo siguiente: una etiqueta personalizada para cada uno de los ejecutables de los dos trabajos, sigue estos pasos:

  1. Crear un archivo JSON que especifique los detalles de configuración del trabajo y la 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"
                }
              }
            ]
          }
        }
      ]
    }
    

    Reemplaza lo siguiente:

    • RUNNABLE1_LABEL_NAME1: Es el nombre de la etiqueta que se aplicará. al primer ejecutable del trabajo.

    • RUNNABLE1_LABEL_VALUE1: Es el valor de la etiqueta que se aplicará al primer elemento ejecutable de la tarea.

    • RUNNABLE2_LABEL_NAME1: Es el nombre de la etiqueta que se aplicará al segundo elemento ejecutable del trabajo.

    • RUNNABLE2_LABEL_VALUE1: Es el valor de la etiqueta que se usará. se aplicará al segundo ejecutable del trabajo.

  2. Crea el trabajo en us-central1 con el comando Comando gcloud batch jobs submit:

    gcloud batch jobs submit example-job \
        --config=JSON_CONFIGURATION_FILE \
        --location=us-central1
    

    Reemplaza JSON_CONFIGURATION_FILE por la ruta de acceso al Archivo JSON con los detalles de configuración del trabajo que creaste anteriormente paso.

API

Por ejemplo, para crear un trabajo en us-central1 que defina dos etiquetas personalizadas, haz lo siguiente: una para cada ejecutable de los dos trabajos, realiza una solicitud POST al Método jobs.create y especifica el 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"
            }
          }
        ]
      }
    }
  ]
}

Reemplaza lo siguiente:

  • RUNNABLE1_LABEL_NAME1: Es el nombre de la etiqueta a la que se aplicará. el primer trabajo es ejecutable.

  • RUNNABLE1_LABEL_VALUE1: Es el valor de la etiqueta que se aplicará. al ejecutable del primer trabajo.

  • RUNNABLE2_LABEL_NAME1: Es el nombre de la etiqueta a la que se aplicará. el segundo trabajo es ejecutable.

  • RUNNABLE2_LABEL_VALUE1: Es el valor de la etiqueta que se aplicará. al ejecutable del segundo trabajo.

¿Qué sigue?