Questo documento spiega come utilizzare le etichette per organizzare le risorse Batch.
Le etichette sono coppie chiave-valore applicate alle risorse per raggrupparle e descriverle. Batch dispone di etichette predefinite, che vengono applicate automaticamente alle risorse, e di etichette personalizzate, che puoi definire e applicare durante la creazione di un job.
Le etichette ti consentono di filtrare i risultati degli elenchi di risorse e dei report di fatturazione Cloud. Ad esempio, puoi utilizzare le etichette per:
Chiariamo e organizziamo l'elenco dei lavori del progetto.
Distinguere gli elementi eseguibili di un job utilizzando etichette per descrivere il tipo di container o script specificato.
Analizza i costi filtrando i report di fatturazione Cloud per le risorse create da Batch o da job specifici.
Per ulteriori informazioni sulle etichette, consulta anche la documentazione di Compute Engine sulle etichette.
Prima di iniziare
- Se non hai mai utilizzato Batch, consulta la sezione Guida introduttiva a Batch e attiva Batch completando i prerequisiti per progetti e utenti.
-
Per ottenere le autorizzazioni necessarie per creare un job, chiedi all'amministratore di concederti i seguenti ruoli IAM:
-
Batch Job Editor (
roles/batch.jobsEditor
) sul progetto -
Utente service account (
roles/iam.serviceAccountUser
) sul service account del job, che per impostazione predefinita è il service account Compute Engine predefinito
Per saperne di più sulla concessione dei ruoli, consulta Gestisci l'accesso a progetti, cartelle e organizzazioni.
Potresti anche riuscire a ottenere le autorizzazioni richieste tramite i ruoli personalizzati o altri ruoli predefiniti.
-
Batch Job Editor (
Limitazioni
Oltre ai requisiti per le etichette specificati nella documentazione di Compute Engine, l'applicazione di etichette a un job Batch e alle relative risorse presenta le seguenti limitazioni:
Batch supporta solo le etichette per le risorse create utilizzando Batch e dei seguenti tipi:
Job
Eseguibili
Graphics Processing Unit (GPU) per un job (se presente)
Dischi permanenti (dischi di avvio e qualsiasi volume di archiviazione) per un job
Istanze di macchine virtuali (VM) per un job
Dopo aver tenuto conto delle etichette predefinite che Batch applica automaticamente a un job, puoi definire i seguenti importi di etichette personalizzate:
Puoi definire un massimo di 63 etichette personalizzate da applicare al job e ai relativi eseguibili.
Puoi definire un massimo di 61 etichette personalizzate da applicare a ogni GPU, disco permanente e VM creati per il job.
Batch supporta solo la definizione di etichette personalizzate con nomi univoci. Ciò comporta le seguenti conseguenze:
Il tentativo di sostituire un'etichetta predefinita causa errori.
La definizione di un'etichetta personalizzata duplicata sostituisce l'etichetta personalizzata esistente.
Batch supporta la definizione delle etichette solo durante la creazione di un job.
Le etichette per i job e i runnable non possono essere aggiunte, aggiornate o rimosse.
Sebbene sia possibile utilizzare Compute Engine per aggiungere, aggiornare o rimuovere le etichette per i dischi permanenti e le VM creati per i job, questa operazione è sconsigliata. Il periodo di tempo in cui esistono le risorse per un job non può essere stimato in modo affidabile e qualsiasi modifica potrebbe non funzionare correttamente con Batch.
Per utilizzare le etichette per filtrare l'elenco dei job, devi visualizzare l'elenco dei job utilizzando gcloud CLI o l'API Batch.
Etichette predefinite
Ogni etichetta predefinita ha una chiave che inizia con il prefisso batch-
. Per
impostazione predefinita, Batch applica automaticamente le seguenti etichette
predefinite:
Per ogni job che crei:
batch-job-id
: il valore di questa etichetta è impostato sul nome del lavoro.
Per ogni GPU, disco permanente e VM creati per un job:
batch-job-id
: il valore di questa etichetta è impostato sul nome del lavoro.batch-job-uid
: il valore di questa etichetta è impostato sull'identificatore unico (UID) del job.batch-node
: il valore di questa etichetta è null, raggruppa solo tutte le GPU, i dischi permanenti e le VM creati per i job. Ad esempio, utilizza questa etichetta quando visualizzi un report di fatturazione Cloud per identificare i costi di tutte le GPU, i dischi permanenti e le VM creati da Batch.
Definire le etichette personalizzate
Se vuoi, puoi definire una o più etichette personalizzate durante la creazione di un job. Puoi definire etichette personalizzate con nuove chiavi o chiavi già utilizzate dal tuo progetto. Per definire etichette personalizzate, seleziona uno o più dei seguenti metodi in questo documento in base allo scopo dell'etichetta:
Definisci etichette personalizzate per il job e le relative risorse.
Questa sezione spiega come applicare una o più etichette personalizzate al job e a ogni GPU, disco permanente e VM creati per il job. Dopo aver creato il job, puoi utilizzare queste etichette per filtrare i report fatturazione Cloud e gli elenchi di job, dischi permanenti e VM del tuo progetto.
Definisci etichette personalizzate per il lavoro.
Questa sezione spiega come applicare una o più etichette personalizzate al job. Dopo aver creato il job, puoi utilizzare queste etichette per filtrare gli elenchi dei job del progetto.
Definisci etichette personalizzate per i runnable.
Questa sezione spiega come applicare una o più etichette personalizzate a uno o più eseguibili per il job. Dopo aver creato il job, puoi utilizzare queste etichette per filtrare gli elenchi di job del tuo progetto.
Definisci etichette personalizzate per il job e le relative risorse
Le etichette definite nel
campo labels
per la norma di allocazione di un job
vengono applicate al job, nonché a ogni GPU (se presente), a ogni disco permanente (tutti
i dischi di avvio e tutti i nuovi volumi di archiviazione) e a ogni VM creata per il job.
Puoi definire le etichette per un job e le relative risorse quando crei un job utilizzando gcloud CLI o l'API Batch.
gcloud
Ad esempio, per creare un job contenitore di base in us-central1
che definisce due
etichette personalizzate che si applicano al job e alle risorse create per il job,
segui questi passaggi:
Crea un file JSON che specifichi i dettagli di configurazione del job e il 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!" ] } } ] } } ] }
Sostituisci quanto segue:
VM_LABEL_NAME1
: Il nome della prima etichetta da applicare alle VM create per il job.VM_LABEL_VALUE1
: il valore della prima etichetta da applicare alle VM create per il job.VM_LABEL_NAME2
: il nome della seconda etichetta da applicare alle VM create per il job.VM_LABEL_VALUE2
: il valore della seconda etichetta da applicare alle VM create per il job.
Crea il job in
us-central1
utilizzando il comandogcloud batch jobs submit
.gcloud batch jobs submit example-job \ --config=JSON_CONFIGURATION_FILE \ --location=us-central1
Sostituisci
JSON_CONFIGURATION_FILE
con il percorso del file JSON con i dettagli di configurazione del job che hai creato nel passaggio precedente.
API
Ad esempio, per creare un job container di base in us-central1
che definisce due
etichette personalizzate che si applicano al job e alle risorse create per il job,
invia una richiesta POST
al
metodo jobs.create
e specifica il
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!"
]
}
}
]
}
}
]
}
Sostituisci quanto segue:
VM_LABEL_NAME1
: il nome della prima etichetta da applicare alle VM create per il job.VM_LABEL_VALUE1
: Il valore della prima etichetta da applicare alle VM create per il job.VM_LABEL_NAME2
: il nome della seconda etichetta da applicare alle VM create per il job.VM_LABEL_VALUE2
: Il valore della seconda etichetta da applicare alle VM create per il job.
Java
Node.js
Python
Definisci etichette personalizzate per il job
Le etichette definite nel campo labels
per il job
vengono applicate solo al job.
Puoi definire le etichette per un job quando lo crei utilizzando gcloud CLI o l'API Batch.
gcloud
Ad esempio, per creare un job contenitore di base in us-central1
che definisce
due etichette personalizzate che si applicano al job stesso, segui questi passaggi:
Crea un file JSON che specifichi i dettagli di configurazione del job e il 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" } }
Sostituisci quanto segue:
JOB_LABEL_NAME1
: il nome della prima etichetta da applicare al job.JOB_LABEL_VALUE1
: Il valore della prima etichetta da applicare al job.JOB_LABEL_NAME2
: Il nome della seconda etichetta da applicare al job.JOB_LABEL_VALUE2
: Il valore della seconda etichetta da applicare al tuo job.
Crea il job in
us-central1
utilizzando il comandogcloud batch jobs submit
con i seguenti flag:gcloud batch jobs submit example-job \ --config=JSON_CONFIGURATION_FILE \ --location=us-central1
Sostituisci
JSON_CONFIGURATION_FILE
con il percorso del file JSON con i dettagli di configurazione del job che hai creato nel passaggio precedente.
API
Ad esempio, per creare un job contenitore in us-central1
che definisce due
etichette personalizzate da applicare ai job stessi, effettua una richiesta POST
al
metodo jobs.create
e specifica il
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"
}
}
Sostituisci quanto segue:
JOB_LABEL_NAME1
: il nome della prima etichetta da applicare al tuo lavoro.JOB_LABEL_VALUE1
: il valore della prima etichetta da applicare al tuo annuncio di lavoro.JOB_LABEL_NAME2
: Il nome della seconda etichetta da applicare al tuo annuncio di lavoro.JOB_LABEL_VALUE2
: Il valore della seconda etichetta da applicare al tuo annuncio di lavoro.
Java
Node.js
Python
Definisci etichette personalizzate per gli eseguibili
Le etichette definite nel campo
labels
per un eseguibile
vengono applicate solo a quell'eseguibile.
Puoi definire etichette per uno o più eseguibili quando crei un job utilizzando gcloud CLI o l'API Batch.
gcloud
Ad esempio, per creare un job in us-central1
che definisce due etichette personalizzate,
una per ciascuno dei due elementi eseguibili del job, segui questi passaggi:
Crea un file JSON che specifichi i dettagli di configurazione del job e i campi
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" } } ] } } ] }
Sostituisci quanto segue:
RUNNABLE1_LABEL_NAME1
: il nome dell'etichetta da applicare al primo eseguibile del job.RUNNABLE1_LABEL_VALUE1
: il valore dell'etichetta da applicare al primo eseguibile del job.RUNNABLE2_LABEL_NAME1
: il nome dell'etichetta da applicare al secondo eseguibile del job.RUNNABLE2_LABEL_VALUE1
: Il valore dell'etichetta da applicare al secondo eseguibile del job.
Crea il job in
us-central1
utilizzando il comandogcloud batch jobs submit
.gcloud batch jobs submit example-job \ --config=JSON_CONFIGURATION_FILE \ --location=us-central1
Sostituisci
JSON_CONFIGURATION_FILE
con il percorso del file JSON con i dettagli di configurazione del job che hai creato nel passaggio precedente.
API
Ad esempio, per creare un job in us-central1
che definisce due etichette personalizzate, una per ciascuno degli elementi eseguibili del job, invia una richiesta POST
al metodo jobs.create
e specifica i campi 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"
}
}
]
}
}
]
}
Sostituisci quanto segue:
RUNNABLE1_LABEL_NAME1
: il nome dell'etichetta da applicare al runnable del primo job.RUNNABLE1_LABEL_VALUE1
: Il valore dell'etichetta da applicare al runnable del primo job.RUNNABLE2_LABEL_NAME1
: il nome dell'etichetta da applicare al runnable del secondo job.RUNNABLE2_LABEL_VALUE1
: il valore dell'etichetta da applicare al runnable del secondo job.
Java
Node.js
Python
Passaggi successivi
Utilizza le etichette come filtri quando:
Scopri come eliminare i lavori.