Este documento explica como usar rótulos para organizar seus recursos do Batch.
Os rótulos são pares de chave-valor aplicados aos recursos para agrupá-los e descrevê-los. O Batch tem rótulos predefinidos, que são aplicados automaticamente aos recursos, e rótulos personalizados, que podem ser definidos e aplicados ao criar um job.
Os rótulos permitem filtrar os resultados das listas de recursos e dos relatórios do Cloud Billing. Por exemplo, é possível usar rótulos para fazer o seguinte:
Esclarecer e organizar a lista de jobs do projeto.
Distinguir os executáveis de um job usando rótulos para descrever o tipo de contêiner ou script que eles especificam.
Analisar custos filtrando relatórios do Cloud Billing para os recursos criados pelo Batch ou jobs específicos.
Para mais informações sobre rótulos, consulte também a documentação do Compute Engine sobre rótulos
Antes de começar
- Se você nunca usou o Batch, consulte Introdução ao Batch e ative o Batch concluindo os pré-requisitos para projetos e usuários.
-
Para receber as permissões necessárias para criar um job, peça ao administrador para conceder a você os seguintes papéis do IAM:
- Editor de jobs do Batch (
roles/batch.jobsEditor) no projeto - Usuário da conta de serviço (
roles/iam.serviceAccountUser) na conta de serviço do job, que, por padrão, é a conta de serviço padrão do Compute Engine
Para mais informações sobre a concessão de papéis, consulte Gerenciar o acesso a projetos, pastas e organizações.
Também é possível conseguir as permissões necessárias com papéis personalizados ou outros papéis predefinidos.
- Editor de jobs do Batch (
Restrições
Além dos requisitos para rótulos especificados na documentação do Compute Engine, a aplicação de rótulos a um job em lote do Batch e aos recursos dele tem as seguintes restrições:
O Batch só oferece suporte a rótulos para recursos criados usando o Batch e dos seguintes tipos:
Jobs
Executáveis
Unidades de processamento gráfico (GPUs) para um job (se houver)
Discos permanentes (discos de inicialização e quaisquer volumes de armazenamento) para um job
Instâncias de máquina virtual (VM) para um job
Depois de contabilizar os rótulos predefinidos que o Batch aplica automaticamente a um job, é possível definir as seguintes quantidades de rótulos personalizados:
É possível definir um máximo de 63 rótulos personalizados para aplicar ao job e aos executáveis dele.
É possível definir um máximo de 61 rótulos personalizados para aplicar a cada GPU, disco permanente e VM criados para o job.
O Batch só oferece suporte à definição de rótulos personalizados com nomes exclusivos. Isso tem as seguintes consequências:
Tentar substituir um rótulo predefinido causa erros.
Definir um rótulo personalizado duplicado substitui o rótulo personalizado atual.
O Batch só oferece suporte à definição de rótulos ao criar um job.
Não é possível adicionar, atualizar ou remover rótulos para jobs e executáveis.
Embora seja possível usar o Compute Engine para adicionar, atualizar ou remover rótulos para os discos permanentes e VMs criados para jobs, isso não é recomendado. O período em que os recursos de um job existem não pode ser estimado de forma confiável, e as mudanças podem não funcionar corretamente com o Batch.
Para usar rótulos para filtrar sua lista de jobs, é necessário visualizar a lista de jobs usando a CLI gcloud ou a API Batch.
Rótulos predefinidos
Cada rótulo predefinido tem uma chave que começa com o prefixo batch-. Por padrão, o Batch aplica automaticamente os seguintes rótulos predefinidos:
Para cada job criado:
batch-job-id: o valor desse rótulo é definido como o nome do job.
Para cada GPU, disco permanente e VM criados para um job:
batch-job-id: o valor desse rótulo é definido como o nome do job.batch-job-uid: o valor desse rótulo é definido como o identificador exclusivo (UID) do job.batch-node: o valor desse rótulo é nulo. Ele apenas agrupa todas as GPUs, discos permanentes e VMs criados para jobs. Por exemplo, use esse rótulo ao visualizar um relatório de faturamento do Cloud Billing para identificar os custos de todas as GPUs, discos permanentes e VMs criados pelo Batch.
Definir rótulos personalizados
É possível definir um ou mais rótulos personalizados ao criar um job. É possível definir rótulos personalizados com novas chaves ou chaves que seu projeto já usa. Para definir rótulos personalizados, selecione um ou mais dos seguintes métodos neste documento com base na finalidade do rótulo:
Definir rótulos personalizados para o job e os recursos dele.
Esta seção explica como aplicar um ou mais rótulos personalizados ao job e a cada GPU, disco permanente e VM criados para o job. Depois de criar o job, é possível usar esses rótulos para filtrar relatórios do Cloud Billing e listas de jobs, discos permanentes e VMs do projeto.
Definir rótulos personalizados para o job.
Esta seção explica como aplicar um ou mais rótulos personalizados ao job. Depois de criar o job, é possível usar esses rótulos para filtrar as listas de jobs do projeto.
Definir rótulos personalizados para executáveis.
Esta seção explica como aplicar um ou mais rótulos personalizados a um ou mais executáveis do job. Depois de criar o job, é possível usar esses rótulos para filtrar as listas de jobs do projeto.
Definir rótulos personalizados para o job e os recursos dele
Os rótulos definidos no
labels campo para uma política de alocação de um job
são aplicados ao job, bem como a cada GPU (se houver), disco permanente (todos os
discos de inicialização e novos volumes de armazenamento) e VM criados para o job.
É possível definir rótulos para um job e os recursos dele ao criar um job usando a CLI gcloud ou a API Batch.
gcloud
Por exemplo, para criar um job de contêiner básico em us-central1 que define dois rótulos personalizados aplicados ao job e aos recursos criados para o job, siga estas etapas:
Crie um arquivo JSON que especifique os detalhes de configuração do job e o
allocationPolicy.labelscampo.{ "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!" ] } } ] } } ] }Substitua:
VM_LABEL_NAME1: o nome do primeiro rótulo a ser aplicado às VMs criadas para o job.VM_LABEL_VALUE1: o valor do primeiro rótulo a ser aplicado às VMs criadas para o job.VM_LABEL_NAME2: o nome do segundo rótulo a ser aplicado às VMs criadas para o job.VM_LABEL_VALUE2: o valor do segundo rótulo a ser aplicado às VMs criadas para o job.
Crie o job em
us-central1usando ogcloud batch jobs submitcomando.gcloud batch jobs submit example-job \ --config=JSON_CONFIGURATION_FILE \ --location=us-central1Substitua
JSON_CONFIGURATION_FILEpelo caminho do arquivo JSON com os detalhes de configuração do job que você criou na etapa anterior.
API
Por exemplo, para criar um job de contêiner básico em us-central1 que define dois
rótulos personalizados aplicados ao job e aos recursos criados para o job,
faça uma solicitação POST para o
jobs.create método
e especifique o
allocationPolicy.labels campo.
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!"
]
}
}
]
}
}
]
}
Substitua:
VM_LABEL_NAME1: o nome do primeiro rótulo a ser aplicado às VMs criadas para o job.VM_LABEL_VALUE1: o valor do primeiro rótulo a ser aplicado às VMs criadas para o job.VM_LABEL_NAME2: o nome do segundo rótulo a ser aplicado às VMs criadas para o job.VM_LABEL_VALUE2: o valor do segundo rótulo a ser aplicado às VMs criadas para o job.
Java
Node.js
Python
Definir rótulos personalizados para o job
Os rótulos definidos no campo labels para o job
só são aplicados ao job.
É possível definir rótulos para um job ao criar um job usando a CLI gcloud ou a API Batch.
gcloud
Por exemplo, para criar um job de contêiner básico em us-central1 que define dois rótulos personalizados aplicados ao job, siga estas etapas:
Crie um arquivo JSON que especifique os detalhes de configuração do job e o
labelscampo.{ "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" } }Substitua:
JOB_LABEL_NAME1: o nome do primeiro rótulo a ser aplicado ao job.JOB_LABEL_VALUE1: o valor do primeiro rótulo a ser aplicado ao job.JOB_LABEL_NAME2: o nome do segundo rótulo a ser aplicado ao job.JOB_LABEL_VALUE2: o valor do segundo rótulo a ser aplicado ao job.
Crie o job em
us-central1usando ogcloud batch jobs submitcomando com as seguintes flags:gcloud batch jobs submit example-job \ --config=JSON_CONFIGURATION_FILE \ --location=us-central1Substitua
JSON_CONFIGURATION_FILEpelo caminho do arquivo JSON com os detalhes de configuração do job que você criou na etapa anterior.
API
Por exemplo, para criar um job de contêiner em us-central1 que define dois
rótulos personalizados a serem aplicados aos jobs, faça uma solicitação POST para o
jobs.create método
e especifique o
labels campo.
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"
}
}
Substitua:
JOB_LABEL_NAME1: o nome do primeiro rótulo a ser aplicado ao job.JOB_LABEL_VALUE1: o valor do primeiro rótulo a ser aplicado ao job.JOB_LABEL_NAME2: o nome do segundo rótulo a ser aplicado ao job.JOB_LABEL_VALUE2: o valor do segundo rótulo a ser aplicado ao job.
Java
Node.js
Python
Definir rótulos personalizados para executáveis
Os rótulos definidos no
labels campo para um executável
só são aplicados a esse executável.
É possível definir rótulos para um ou mais executáveis ao criar um job usando a CLI gcloud ou a API Batch.
gcloud
Por exemplo, para criar um job em us-central1 que define dois rótulos personalizados, um rótulo personalizado para cada um dos dois executáveis do job, siga estas etapas:
Crie um arquivo JSON que especifique os detalhes de configuração do job e os
runnables.labelscampos.{ "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" } } ] } } ] }Substitua:
RUNNABLE1_LABEL_NAME1: o nome do rótulo a ser aplicado ao primeiro executável do job.RUNNABLE1_LABEL_VALUE1: o valor do rótulo a ser aplicado ao primeiro executável do job.RUNNABLE2_LABEL_NAME1: o nome do rótulo a ser aplicado ao segundo executável do job.RUNNABLE2_LABEL_VALUE1: o valor do rótulo a ser aplicado ao segundo executável do job.
Crie o job em
us-central1usando ogcloud batch jobs submitcomando.gcloud batch jobs submit example-job \ --config=JSON_CONFIGURATION_FILE \ --location=us-central1Substitua
JSON_CONFIGURATION_FILEpelo caminho do arquivo JSON com os detalhes de configuração do job que você criou na etapa anterior.
API
Por exemplo, para criar um job em us-central1 que define dois rótulos personalizados,
um para cada um dos dois executáveis do job, faça uma solicitação POST para o
jobs.create método
e especifique os
runnables.labels campos.
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"
}
}
]
}
}
]
}
Substitua:
RUNNABLE1_LABEL_NAME1: o nome do rótulo a ser aplicado ao primeiro executável do job.RUNNABLE1_LABEL_VALUE1: o valor do rótulo a ser aplicado ao primeiro executável do job.RUNNABLE2_LABEL_NAME1: o nome do rótulo a ser aplicado ao segundo executável do job.RUNNABLE2_LABEL_VALUE1: o valor do rótulo a ser aplicado ao segundo executável do job.
Java
Node.js
Python
A seguir
Use rótulos como filtros ao fazer o seguinte:
Saiba como excluir jobs.