In diesem Dokument wird erläutert, wie Sie Ihre Batch-Ressourcen mit Labels organisieren.
Labels sind Schlüssel/Wert-Paare, die auf Ressourcen angewendet werden, um sie zu gruppieren und zu beschreiben. Batch hat vordefinierte Labels, die automatisch auf Ressourcen angewendet werden, und benutzerdefinierte Labels, die Sie beim Erstellen eines Jobs definieren und anwenden können.
Mit Labels können Sie die Ergebnisse von Ressourcenlisten und Cloud Billing-Berichten filtern. Sie können Labels beispielsweise für Folgendes verwenden:
Liste der Jobs Ihres Projekts übersichtlicher gestalten und organisieren
Ausführbare Elemente eines Jobs unterscheiden, indem Sie mit Labels den Typ des Containers oder Skripts beschreiben, den sie angeben
Kosten analysieren, indem Sie Cloud Billing-Berichte nach den von Batch erstellten Ressourcen oder bestimmten Jobs filtern
Weitere Informationen zu Labels finden Sie auch in der Compute Engine-Dokumentation zu Labels.
Hinweis
- Wenn Sie Batch noch nicht verwendet haben, lesen Sie den Artikel Erste Schritte mit Batch und aktivieren Sie Batch, indem Sie die Voraussetzungen für Projekte und Nutzererfüllen.
-
Bitten Sie Ihren Administrator, Ihnen die folgenden IAM-Rollen zuzuweisen, um die Berechtigungen zu erhalten, die Sie zum Erstellen eines Jobs benötigen:
- Batch Job Editor (
roles/batch.jobsEditor) für das Projekt - Dienstkonto-Nutzer (
roles/iam.serviceAccountUser) für das Dienstkonto des Jobs, das standardmäßig das Standarddienstkonto für Compute Engine ist
Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff auf Projekte, Ordner und Organisationen verwalten.
Sie können die erforderlichen Berechtigungen auch über benutzerdefinierte Rollen oder andere vordefinierte Rollen erhalten.
- Batch Job Editor (
Beschränkungen
Zusätzlich zu den Anforderungen für Labels , die in der Compute Engine-Dokumentation angegeben sind, gelten beim Anwenden von Labels auf einen Batch-Job und seine Ressourcen die folgenden Einschränkungen:
Batch unterstützt nur Labels für Ressourcen, die mit Batch erstellt wurden und die folgenden Typen haben:
Jobs
Ausführbare Elemente
Grafikprozessoren (GPUs) für einen Job (falls vorhanden)
Nichtflüchtige Speicher (Bootlaufwerke und alle Speichervolumes) für einen Job
VM-Instanzen für einen Job
Nachdem die vordefinierten Labels berücksichtigt wurden, die Batch automatisch auf einen Job anwendet, können Sie die folgenden Mengen an benutzerdefinierten Labels definieren:
Sie können maximal 63 benutzerdefinierte Labels definieren, die auf den Job und seine ausführbaren Elemente angewendet werden.
Sie können maximal 61 benutzerdefinierte Labels definieren, die auf jede GPU, jeden nichtflüchtigen Speicher und jede VM angewendet werden, die für den Job erstellt wurden.
Batch unterstützt nur das Definieren benutzerdefinierter Labels mit eindeutigen Namen. Das hat folgende Konsequenzen:
Der Versuch, ein vordefiniertes Label zu überschreiben, führt zu Fehlern.
Wenn Sie ein doppeltes benutzerdefiniertes Label definieren, wird das vorhandene benutzerdefinierte Label überschrieben.
Batch unterstützt nur das Definieren von Labels beim Erstellen eines Jobs.
Labels für Jobs und ausführbare Elemente können nicht hinzugefügt, aktualisiert oder entfernt werden.
Es ist zwar möglich, mit Compute Engine Labels für die nichtflüchtigen Speicher und VMs hinzuzufügen, zu aktualisieren oder zu entfernen, die für Jobs erstellt wurden, dies wird jedoch nicht empfohlen. Der Zeitraum, in dem die Ressourcen für einen Job vorhanden sind, kann nicht zuverlässig geschätzt werden und Änderungen funktionieren möglicherweise nicht richtig mit Batch.
Wenn Sie Labels verwenden möchten, um die Liste der Jobs zu filtern, müssen Sie die Liste der Jobs mit der gcloud CLI oder der Batch API aufrufen.
Vordefinierte Labels
Jedes vordefinierte Label hat einen Schlüssel, der mit dem Präfix batch- beginnt. Standardmäßig wendet Batch automatisch die folgenden vordefinierten Labels an:
Auf jeden Job, den Sie erstellen:
batch-job-id: Der Wert dieses Labels wird auf den Namen des Jobs festgelegt.
Auf jede GPU, jeden nichtflüchtigen Speicher und jede VM, die für einen Job erstellt wurden:
batch-job-id: Der Wert dieses Labels wird auf den Namen des Jobs festgelegt.batch-job-uid: Der Wert dieses Labels wird auf die eindeutige Kennung (UID) des Jobs festgelegt.batch-node: Der Wert dieses Labels ist null. Es werden nur alle GPUs, nichtflüchtigen Speicher und VMs gruppiert, die für Jobs erstellt wurden. Verwenden Sie dieses Label beispielsweise, wenn Sie einen Cloud Billing-Bericht aufrufen, um die Kosten aller GPUs, nichtflüchtigen Speicher und VMs zu ermitteln, die von Batch erstellt wurden.
Benutzerdefinierte Labels definieren
Sie können beim Erstellen eines Jobs optional ein oder mehrere benutzerdefinierte Labels definieren. Sie können benutzerdefinierte Labels mit neuen Schlüsseln oder Schlüsseln definieren, die bereits in Ihrem Projekt verwendet werden. Wählen Sie zum Definieren benutzerdefinierter Labels je nach Zweck des Labels eine oder mehrere der folgenden Methoden in diesem Dokument aus:
Benutzerdefinierte Labels für den Job und seine Ressourcen definieren.
In diesem Abschnitt wird erläutert, wie Sie ein oder mehrere benutzerdefinierte Labels auf den Job und auf jede GPU, jeden nichtflüchtigen Speicher und jede VM anwenden, die für den Job erstellt wurden. Nachdem Sie den Job erstellt haben, können Sie diese Labels verwenden, um Cloud Billing-Berichte und die Listen der Jobs, nichtflüchtigen Speicher und VMs Ihres Projekts zu filtern.
Benutzerdefinierte Labels für den Job definieren.
In diesem Abschnitt wird erläutert, wie Sie ein oder mehrere benutzerdefinierte Labels auf den Job anwenden. Nachdem Sie den Job erstellt haben, können Sie diese Labels verwenden, um die Listen der Jobs Ihres Projekts zu filtern.
Benutzerdefinierte Labels für ausführbare Elemente definieren.
In diesem Abschnitt wird erläutert, wie Sie ein oder mehrere benutzerdefinierte Labels auf ein oder mehrere ausführbare Elemente für den Job anwenden. Nachdem Sie den Job erstellt haben, können Sie diese Labels verwenden, um die Listen der Jobs Ihres Projekts zu filtern.
Benutzerdefinierte Labels für den Job und seine Ressourcen definieren
Labels, die im
labels Feld für die Zuweisungsrichtlinie eines Jobs
auf den Job sowie auf jede GPU (falls vorhanden), jeden nichtflüchtigen Speicher (alle
Bootlaufwerke und alle neuen Speichervolumes) und jede VM angewendet werden, die für den Job erstellt wurden.
Sie können Labels für einen Job und seine Ressourcen definieren, wenn Sie einen Job mit der gcloud CLI oder der Batch API erstellen.
gcloud
So erstellen Sie beispielsweise einen einfachen Containerjob in us-central1, der zwei benutzerdefinierte Labels definiert, die auf den Job und die für den Job erstellten Ressourcen angewendet werden:
Erstellen Sie eine JSON-Datei, in der die Konfigurationsdetails des Jobs und das
allocationPolicy.labelsFeld angegeben sind.{ "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!" ] } } ] } } ] }Ersetzen Sie Folgendes:
VM_LABEL_NAME1: Der Name des ersten Labels, das auf die für den Job erstellten VMs angewendet werden soll.VM_LABEL_VALUE1: Der Wert des ersten Labels, das auf die für den Job erstellten VMs angewendet werden soll.VM_LABEL_NAME2: Der Name des zweiten Labels, das auf die für den Job erstellten VMs angewendet werden soll.VM_LABEL_VALUE2: Der Wert des zweiten Labels, das auf die für den Job erstellten VMs angewendet werden soll.
Erstellen Sie den Job in
us-central1mit demgcloud batch jobs submitBefehl.gcloud batch jobs submit example-job \ --config=JSON_CONFIGURATION_FILE \ --location=us-central1Ersetzen Sie
JSON_CONFIGURATION_FILEdurch den Pfad zur JSON-Datei mit den Konfigurationsdetails des Jobs, die Sie im vorherigen Schritt erstellt haben.
API
Wenn Sie beispielsweise einen einfachen Containerjob in us-central1 erstellen möchten, der zwei
benutzerdefinierte Labels definiert, die auf den Job und die für den Job erstellten Ressourcen angewendet werden,
senden Sie eine POST Anfrage an die
jobs.create Methode
und geben Sie das
allocationPolicy.labels Feld an.
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!"
]
}
}
]
}
}
]
}
Ersetzen Sie Folgendes:
VM_LABEL_NAME1: Der Name des ersten Labels, das auf die für den Job erstellten VMs angewendet werden soll.VM_LABEL_VALUE1: Der Wert des ersten Labels, das auf die für den Job erstellten VMs angewendet werden soll.VM_LABEL_NAME2: Der Name des zweiten Labels, das auf die für den Job erstellten VMs angewendet werden soll.VM_LABEL_VALUE2: Der Wert des zweiten Labels, das auf die für den Job erstellten VMs angewendet werden soll.
Java
Node.js
Python
Benutzerdefinierte Labels für den Job definieren
Labels, die im labels Feld für den Job
definiert sind, werden nur auf den Job angewendet.
Sie können Labels für einen Job definieren, wenn Sie einen Job mit der gcloud CLI oder der Batch API erstellen.
gcloud
So erstellen Sie beispielsweise einen einfachen Containerjob in us-central1, der zwei benutzerdefinierte Labels definiert, die auf den Job selbst angewendet werden:
Erstellen Sie eine JSON-Datei, in der die Konfigurationsdetails des Jobs und das
labelsFeld angegeben sind.{ "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" } }Ersetzen Sie Folgendes:
JOB_LABEL_NAME1: Der Name des ersten Labels, das auf Ihren Job angewendet werden soll.JOB_LABEL_VALUE1: Der Wert des ersten Labels, das auf Ihren Job angewendet werden soll.JOB_LABEL_NAME2: Der Name des zweiten Labels, das auf Ihren Job angewendet werden soll.JOB_LABEL_VALUE2: Der Wert des zweiten Labels, das auf Ihren Job angewendet werden soll.
Erstellen Sie den Job in
us-central1mit demgcloud batch jobs submitBefehl mit den folgenden Flags:gcloud batch jobs submit example-job \ --config=JSON_CONFIGURATION_FILE \ --location=us-central1Ersetzen Sie
JSON_CONFIGURATION_FILEdurch den Pfad zur JSON-Datei mit den Konfigurationsdetails des Jobs, die Sie im vorherigen Schritt erstellt haben.
API
Wenn Sie beispielsweise einen Containerjob in us-central1 erstellen möchten, der zwei
benutzerdefinierte Labels definiert, die auf den Job selbst angewendet werden, senden Sie eine POST Anfrage an die
jobs.create Methode
und geben Sie das
labels Feld an.
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"
}
}
Ersetzen Sie Folgendes:
JOB_LABEL_NAME1: Der Name des ersten Labels, das auf Ihren Job angewendet werden soll.JOB_LABEL_VALUE1: Der Wert des ersten Labels, das auf Ihren Job angewendet werden soll.JOB_LABEL_NAME2: Der Name des zweiten Labels, das auf Ihren Job angewendet werden soll.JOB_LABEL_VALUE2: Der Wert des zweiten Labels, das auf Ihren Job angewendet werden soll.
Java
Node.js
Python
Benutzerdefinierte Labels für ausführbare Elemente definieren
Labels, die im
labels Feld für ein ausführbares Element
definiert sind, werden nur auf dieses ausführbare Element angewendet.
Sie können Labels für ein oder mehrere ausführbare Elemente definieren, wenn Sie einen Job mit der gcloud CLI oder der Batch API erstellen.
gcloud
So erstellen Sie beispielsweise einen Job in us-central1, der zwei benutzerdefinierte Labels definiert, eines für jedes der beiden ausführbaren Elemente des Jobs:
Erstellen Sie eine JSON-Datei, in der die Konfigurationsdetails des Jobs und die
runnables.labelsFelder angegeben sind.{ "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" } } ] } } ] }Ersetzen Sie Folgendes:
RUNNABLE1_LABEL_NAME1: Der Name des Labels, das auf das erste ausführbare Element des Jobs angewendet werden soll.RUNNABLE1_LABEL_VALUE1: Der Wert des Labels, das auf das erste ausführbare Element des Jobs angewendet werden soll.RUNNABLE2_LABEL_NAME1: Der Name des Labels, das auf das zweite ausführbare Element des Jobs angewendet werden soll.RUNNABLE2_LABEL_VALUE1: Der Wert des Labels, das auf das zweite ausführbare Element des Jobs angewendet werden soll.
Erstellen Sie den Job in
us-central1mit demgcloud batch jobs submitBefehl.gcloud batch jobs submit example-job \ --config=JSON_CONFIGURATION_FILE \ --location=us-central1Ersetzen Sie
JSON_CONFIGURATION_FILEdurch den Pfad zur JSON-Datei mit den Konfigurationsdetails des Jobs, die Sie im vorherigen Schritt erstellt haben.
API
Wenn Sie beispielsweise einen Job in us-central1 erstellen möchten, der zwei benutzerdefinierte Labels definiert,
eines für jedes der beiden ausführbaren Elemente des Jobs, senden Sie eine POST Anfrage an die
jobs.create Methode
und geben Sie die
runnables.labels Felder an.
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"
}
}
]
}
}
]
}
Ersetzen Sie Folgendes:
RUNNABLE1_LABEL_NAME1: Der Name des Labels, das auf das erste ausführbare Element des Jobs angewendet werden soll.RUNNABLE1_LABEL_VALUE1: Der Wert des Labels, das auf das erste ausführbare Element des Jobs angewendet werden soll.RUNNABLE2_LABEL_NAME1: Der Name des Labels, das auf das zweite ausführbare Element des Jobs angewendet werden soll.RUNNABLE2_LABEL_VALUE1: Der Wert des Labels, das auf das zweite ausführbare Element des Jobs angewendet werden soll.
Java
Node.js
Python
Nächste Schritte
Verwenden Sie Labels als Filter, wenn Sie Folgendes tun:
Informationen zum Löschen von Jobs