Neste documento, explicamos como usar rótulos para organizar seus recursos do Batch.
Rótulos são pares de chave-valor aplicados a recursos para agrupar e descrever para resolvê-los com rapidez. O lote tem rótulos predefinidos, que são automaticamente aplicados a recursos, e rótulos personalizados, que podem ser definidos e aplicados criar um job.
Os rótulos permitem filtrar os resultados de listas de recursos e do Cloud Billing e detecção de ameaças. Por exemplo, você pode usar rótulos para fazer o seguinte:
Esclareça e organize a lista de jobs do projeto.
Distinguir os elementos executáveis de um job usando rótulos para descrever o tipo de contêiner ou script que especificarem.
Analise os custos filtrando os relatórios do Cloud Billing para os recursos criados por jobs específicos ou em lote.
Para mais informações sobre rótulos, consulte a documentação do Compute Engine sobre rótulos.
Antes de começar
- Se você nunca usou o Batch antes, revise Introdução ao Batch e ativar o Batch. Para isso, conclua pré-requisitos para projetos e usuários.
-
Para ter 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 em lote (
roles/batch.jobsEditor
) no projeto -
Usuário da conta de serviço (
roles/iam.serviceAccountUser
) na conta de serviço do job, que é 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 por meio de papéis personalizados ou de outros papéis predefinidos.
-
Editor de jobs em lote (
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 e aos recursos dele tem as seguintes restrições:
O Batch só aceita rótulos para recursos criados usando 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 lote aplica automaticamente a um job, é possível definir os seguintes valores de rótulos personalizados:
É possível definir até 63 rótulos personalizados para aplicar ao job e aos executáveis.
É possível definir no máximo 61 rótulos personalizados para aplicar a cada GPU. disco permanente e VM criada para o job.
O Batch é compatível apenas com a definição de rótulos personalizados com nomes exclusivos. Isso tem as seguintes consequências:
Tentar substituir um rótulo predefinido causa erros.
A definição de um rótulo personalizado duplicado substitui o rótulo personalizado atual.
O Batch é compatível apenas com a definição de rótulos ao criar um job.
Não é possível adicionar, atualizar ou remover rótulos de jobs e elementos executáveis.
Embora seja possível usar o Compute Engine para adicionar, atualizar ou remover rótulos dos discos permanentes e das VMs criadas para jobs, isso não é recomendado. O período em que os recursos de um job existem não pode ser estimado de maneira confiável, e as alterações podem não funcionar corretamente com em lote.
Para usar rótulos para filtrar a lista de jobs, você precisa ver 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 lote 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 criada 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 todos as GPUs, os discos permanentes e as VMs que são criados para jobs. Por exemplo: use esse marcador quando acessar um relatório do Cloud Billing para os custos de todas as GPUs, discos permanentes e VMs criados em lote.
Definir rótulos personalizados
Como opção, é possível definir um ou mais rótulos personalizados ao criar um job. Você pode defina 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:
Defina 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 ao para cada GPU, disco permanente e VM criados para o job. Depois de criar o job, é possível usar esses rótulos para filtrar os relatórios do Cloud Billing e suas listas de jobs, discos permanentes e VMs do projeto.
Defina 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, você pode usar esses rótulos para filtrar as listas de jobs do seu 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 para o job. Depois de criar o job, você pode usar esses rótulos para filtrar as listas de jobs do seu projeto.
Definir rótulos personalizados para o job e os recursos dele
Os rótulos definidos no
campo labels
para a 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 criada 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 que se aplicam ao job e aos recursos criados para ele;
siga estas etapas:
Crie um arquivo JSON que especifique os detalhes de configuração do job e as 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!" ] } } ] } } ] }
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 se aplicam à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-central1
usando o comandogcloud batch jobs submit
.gcloud batch jobs submit example-job \ --config=JSON_CONFIGURATION_FILE \ --location=us-central1
Substitua
JSON_CONFIGURATION_FILE
pelo caminho para o 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 defina dois rótulos personalizados que se aplicam ao job e aos recursos criados para ele, faça uma solicitação POST
para o método jobs.create
e especifique o 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!"
]
}
}
]
}
}
]
}
Substitua:
VM_LABEL_NAME1
: o nome do primeiro rótulo a ser aplicado. das VMs criadas para o job.VM_LABEL_VALUE1
: o valor do primeiro rótulo a ser aplicado das VMs criadas para o job.VM_LABEL_NAME2
: o nome do segundo rótulo a ser aplicado. das 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
do job
são aplicados apenas ao job.
Você pode definir rótulos para um job ao criá-lo usando o CLI gcloud ou API Batch.
gcloud
Por exemplo, para criar um job básico de contêiner em us-central1
que define
dois rótulos personalizados que se aplicam ao próprio job, siga estas etapas:
Crie um arquivo JSON que especifique os detalhes de configuração do job e o 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" } }
Substitua:
JOB_LABEL_NAME1
: o nome do primeiro rótulo a ser se candidatar ao seu trabalho.JOB_LABEL_VALUE1
: o valor do primeiro rótulo a ser aplicado ao job.JOB_LABEL_NAME2
: o nome do segundo rótulo a se candidatar ao seu trabalho.JOB_LABEL_VALUE2
: o valor do segundo rótulo a ser aplicado ao job.
Crie o job em
us-central1
usando o comandogcloud batch jobs submit
com as seguintes flags:gcloud batch jobs submit example-job \ --config=JSON_CONFIGURATION_FILE \ --location=us-central1
Substitua
JSON_CONFIGURATION_FILE
pelo caminho do arquivo Arquivo JSON com os detalhes de configuração do job que você criou etapa.
API
Por exemplo, para criar um job de contêiner em us-central1
que defina dois rótulos personalizados para aplicar aos próprios jobs, faça uma solicitação POST
para o método jobs.create
e especifique o 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"
}
}
Substitua:
JOB_LABEL_NAME1
: o nome do primeiro rótulo a ser aplicado. em seu trabalho.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. em seu trabalho.JOB_LABEL_VALUE2
: o valor do segundo rótulo a ser aplicado para o trabalho.
Java
Node.js
Python
Definir rótulos personalizados para executáveis
Os rótulos definidos no
campo labels
de um executável
são aplicados apenas 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 defina 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 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" } } ] } } ] }
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-central1
usando o comandogcloud batch jobs submit
.gcloud batch jobs submit example-job \ --config=JSON_CONFIGURATION_FILE \ --location=us-central1
Substitua
JSON_CONFIGURATION_FILE
pelo caminho para o 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 defina dois rótulos personalizados,
um para cada um dos dois executáveis do job, faça uma solicitação POST
para o
método jobs.create
e especifique os
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"
}
}
]
}
}
]
}
Substitua:
RUNNABLE1_LABEL_NAME1
: o nome do rótulo a ser aplicado. é possível executar o primeiro job.RUNNABLE1_LABEL_VALUE1
: o valor do rótulo a ser aplicado ao executável do primeiro job.RUNNABLE2_LABEL_NAME1
: o nome do rótulo a ser aplicado. o segundo job poderá ser executado.RUNNABLE2_LABEL_VALUE1
: o valor do rótulo a ser aplicado ao executável do segundo job.
Java
Node.js
Python
A seguir
Use rótulos como filtros ao fazer o seguinte:
Saiba como excluir jobs.