Este documento explica como usar etiquetas para organizar os seus recursos do Batch.
As etiquetas são pares de chave-valor aplicados aos recursos para os agrupar e descrever. O lote tem etiquetas predefinidas, que são aplicadas automaticamente aos recursos, e etiquetas personalizadas, que pode definir e aplicar quando cria uma tarefa.
As etiquetas permitem-lhe filtrar os resultados das listas de recursos e dos relatórios de faturação do Google Cloud. Por exemplo, pode usar etiquetas para fazer o seguinte:
Clarifique e organize a lista de tarefas do seu projeto.
Distinguir os executáveis de uma tarefa através de etiquetas para descrever o tipo de contentor ou script que especificam.
Analise os custos filtrando os relatórios de faturação do Google Cloud para os recursos criados pelo Batch ou por tarefas específicas.
Para mais informações sobre etiquetas, consulte também a documentação do Compute Engine sobre etiquetas
Antes de começar
- Se nunca usou o Batch, reveja o artigo Comece a usar o Batch e ative o Batch concluindo os pré-requisitos para projetos e utilizadores.
-
Para receber as autorizações de que precisa para criar uma tarefa, peça ao seu administrador para lhe conceder as seguintes funções de IAM:
-
Editor de tarefas em lote (
roles/batch.jobsEditor
) no projeto -
Utilizador da conta de serviço (
roles/iam.serviceAccountUser
) na conta de serviço da tarefa, que, por predefinição, é a conta de serviço predefinida do Compute Engine
Para mais informações sobre a atribuição de funções, consulte o artigo Faça a gestão do acesso a projetos, pastas e organizações.
Também pode conseguir as autorizações necessárias através de funções personalizadas ou outras funções predefinidas.
-
Editor de tarefas em lote (
Restrições
Além dos requisitos para etiquetas especificados na documentação do Compute Engine, a aplicação de etiquetas a uma tarefa em lote e aos respetivos recursos tem as seguintes restrições:
O processamento em lote só suporta etiquetas para recursos criados com o processamento em lote e dos seguintes tipos:
Empregos
Executáveis
Unidades de processamento de gráficos (GPUs) para uma tarefa (se aplicável)
Discos persistentes (discos de arranque e quaisquer volumes de armazenamento) para uma tarefa
Instâncias de máquinas virtuais (VMs) para uma tarefa
Depois de ter em conta as etiquetas predefinidas que o Batch aplica automaticamente a uma tarefa, pode definir as seguintes quantidades de etiquetas personalizadas:
Pode definir um máximo de 63 etiquetas personalizadas para aplicar à tarefa e aos respetivos elementos executáveis.
Pode definir um máximo de 61 etiquetas personalizadas para aplicar a cada GPU, disco persistente e VM criados para a tarefa.
O processamento em lote só suporta a definição de etiquetas personalizadas com nomes únicos. Isto tem as seguintes consequências:
A tentativa de substituir uma etiqueta predefinida causa erros.
A definição de uma etiqueta personalizada duplicada substitui a etiqueta personalizada existente.
O processamento em lote só suporta a definição de etiquetas quando cria uma tarefa.
Não é possível adicionar, atualizar nem remover etiquetas para tarefas e itens executáveis.
Embora seja possível usar o Compute Engine para adicionar, atualizar ou remover etiquetas para os discos persistentes e as VMs criadas para tarefas, não é recomendado. Não é possível estimar de forma fiável o período durante o qual os recursos de uma tarefa existem, e quaisquer alterações podem não funcionar corretamente com o Batch.
Para usar etiquetas para filtrar a sua lista de trabalhos, tem de ver a sua lista de trabalhos através da CLI gcloud ou da API Batch.
Etiquetas predefinidas
Cada etiqueta predefinida tem uma chave que começa com o prefixo batch-
. Por predefinição, o Batch aplica automaticamente as seguintes etiquetas predefinidas:
Para cada tarefa que criar:
batch-job-id
: o valor desta etiqueta é definido como o nome da tarefa.
Para cada GPU, disco persistente e VM criados para uma tarefa:
batch-job-id
: o valor desta etiqueta é definido como o nome da tarefa.batch-job-uid
: o valor desta etiqueta é definido como o identificador único (UID) da tarefa.batch-node
: O valor desta etiqueta é nulo. Apenas agrupa todas as GPUs, os discos persistentes e as VMs criados para tarefas. Por exemplo, use esta etiqueta quando visualizar um relatório de faturação do Google Cloud para identificar os custos de todas as GPUs, discos persistentes e VMs criados pelo Batch.
Defina etiquetas personalizadas
Opcionalmente, pode definir uma ou mais etiquetas personalizadas quando cria uma tarefa. Pode definir etiquetas personalizadas com novas chaves ou chaves que o seu projeto já usa. Para definir etiquetas personalizadas, selecione um ou mais dos seguintes métodos neste documento com base na finalidade da etiqueta:
Defina etiquetas personalizadas para a tarefa e os respetivos recursos.
Esta secção explica como aplicar uma ou mais etiquetas personalizadas à tarefa e a cada GPU, disco persistente e VM criados para a tarefa. Depois de criar a tarefa, pode usar estas etiquetas para filtrar os relatórios de faturação do Google Cloud e as listas de tarefas, discos persistentes e VMs do seu projeto.
Defina etiquetas personalizadas para o trabalho.
Esta secção explica como aplicar uma ou mais etiquetas personalizadas à tarefa. Depois de criar a tarefa, pode usar estas etiquetas para filtrar as listas de tarefas do seu projeto.
Defina etiquetas personalizadas para executáveis.
Esta secção explica como aplicar uma ou mais etiquetas personalizadas a um ou mais elementos executáveis para a tarefa. Depois de criar a tarefa, pode usar estas etiquetas para filtrar as listas de tarefas do seu projeto.
Defina etiquetas personalizadas para a tarefa e os respetivos recursos
As etiquetas definidas no campo labels
para a política de atribuição de uma tarefa são aplicadas à tarefa, bem como a cada GPU (se existir), disco persistente (todos os discos de arranque e quaisquer novos volumes de armazenamento) e VM criados para a tarefa.
Pode definir etiquetas para uma tarefa e os respetivos recursos quando cria uma tarefa através da CLI gcloud ou da API Batch.
gcloud
Por exemplo, para criar uma tarefa de contentor básica em us-central1
que defina duas etiquetas personalizadas que se aplicam à tarefa e aos recursos criados para a tarefa, siga estes passos:
Crie um ficheiro JSON que especifique os detalhes de configuração da tarefa e o 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 o seguinte:
VM_LABEL_NAME1
: O nome da primeira etiqueta a aplicar às VMs criadas para a tarefa.VM_LABEL_VALUE1
: o valor da primeira etiqueta a aplicar às VMs criadas para a tarefa.VM_LABEL_NAME2
: O nome da segunda etiqueta a aplicar às VMs criadas para a tarefa.VM_LABEL_VALUE2
: o valor da segunda etiqueta a aplicar às VMs criadas para a tarefa.
Crie a tarefa no
us-central1
com 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 ficheiro JSON com os detalhes de configuração da tarefa que criou no passo anterior.
API
Por exemplo, para criar uma tarefa de contentor básica em us-central1
que defina duas etiquetas personalizadas que se aplicam à tarefa e aos recursos criados para a tarefa, faça um pedido POST
ao 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 o seguinte:
VM_LABEL_NAME1
: o nome da primeira etiqueta a aplicar às VMs criadas para a tarefa.VM_LABEL_VALUE1
: o valor da primeira etiqueta a aplicar às VMs criadas para a tarefa.VM_LABEL_NAME2
: o nome da segunda etiqueta a aplicar às VMs criadas para a tarefa.VM_LABEL_VALUE2
: o valor da segunda etiqueta a aplicar às VMs criadas para a tarefa.
Java
Node.js
Python
Defina etiquetas personalizadas para a tarefa
As etiquetas definidas no campo labels
para o trabalho
são aplicadas apenas ao trabalho.
Pode definir etiquetas para uma tarefa quando cria uma tarefa através da CLI gcloud ou da API Batch.
gcloud
Por exemplo, para criar uma tarefa de contentor básica em us-central1
que defina duas etiquetas personalizadas que se aplicam à própria tarefa, siga estes passos:
Crie um ficheiro JSON que especifique os detalhes de configuração da tarefa 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 o seguinte:
JOB_LABEL_NAME1
: o nome da primeira etiqueta a aplicar à sua tarefa.JOB_LABEL_VALUE1
: o valor da primeira etiqueta a aplicar à sua tarefa.JOB_LABEL_NAME2
: o nome da segunda etiqueta a aplicar ao seu trabalho.JOB_LABEL_VALUE2
: o valor da segunda etiqueta a aplicar à sua tarefa.
Crie a tarefa no
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 para o ficheiro JSON com os detalhes de configuração da tarefa que criou no passo anterior.
API
Por exemplo, para criar uma tarefa de contentor em us-central1
que defina duas etiquetas personalizadas a aplicar à própria tarefa, faça um pedido POST
ao 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 o seguinte:
JOB_LABEL_NAME1
: o nome da primeira etiqueta a aplicar ao seu trabalho.JOB_LABEL_VALUE1
: o valor da primeira etiqueta a aplicar à sua tarefa.JOB_LABEL_NAME2
: o nome da segunda etiqueta a aplicar ao seu trabalho.JOB_LABEL_VALUE2
: o valor da segunda etiqueta a aplicar ao seu trabalho.
Java
Node.js
Python
Defina etiquetas personalizadas para itens executáveis
As etiquetas definidas no campo labels
para um elemento executável só são aplicadas a esse elemento executável.
Pode definir etiquetas para um ou mais executáveis quando cria uma tarefa através da CLI gcloud ou da API Batch.
gcloud
Por exemplo, para criar uma tarefa em us-central1
que defina duas etiquetas personalizadas,
uma etiqueta personalizada para cada um dos dois executáveis da tarefa, siga estes passos:
Crie um ficheiro JSON que especifique os detalhes de configuração da tarefa 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 o seguinte:
RUNNABLE1_LABEL_NAME1
: o nome da etiqueta a aplicar à primeira execução da tarefa.RUNNABLE1_LABEL_VALUE1
: o valor da etiqueta a aplicar à primeira execução da tarefa.RUNNABLE2_LABEL_NAME1
: o nome da etiqueta a aplicar ao segundo executável da tarefa.RUNNABLE2_LABEL_VALUE1
: o valor da etiqueta a aplicar à segunda execução do trabalho.
Crie a tarefa no
us-central1
com 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 ficheiro JSON com os detalhes de configuração da tarefa que criou no passo anterior.
API
Por exemplo, para criar uma tarefa em us-central1
que defina duas etiquetas personalizadas, uma para cada um dos executáveis da tarefa, faça um pedido POST
ao 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 o seguinte:
RUNNABLE1_LABEL_NAME1
: o nome da etiqueta a aplicar ao executável da primeira tarefa.RUNNABLE1_LABEL_VALUE1
: o valor da etiqueta a aplicar ao executável da primeira tarefa.RUNNABLE2_LABEL_NAME1
: o nome da etiqueta a aplicar ao executável da segunda tarefa.RUNNABLE2_LABEL_VALUE1
: o valor da etiqueta a aplicar ao executável da segunda tarefa.
Java
Node.js
Python
O que se segue?
Use etiquetas como filtros quando fizer o seguinte:
Saiba como eliminar trabalhos.