In diesem Dokument wird erläutert, wie Sie Ihren Batch mithilfe von Labels organisieren Ressourcen.
Labels sind Schlüssel/Wert-Paare, die auf Ressourcen angewendet werden, um sie zu gruppieren und zu beschreiben. . Für Batch gibt es 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 filtern. Berichte. Mit Labels können Sie beispielsweise Folgendes tun:
Klärn und organisiere die Liste der Aufgaben deines Projekts.
Unterscheiden Sie die Runnables eines Jobs, indem Sie Labels verwenden, um den Typ des angegebenen Containers oder Scripts zu beschreiben.
Sie können Kosten analysieren, indem Sie Cloud Billing-Berichte nach den Ressourcen filtern, die von Batch- oder bestimmten Jobs erstellt wurden.
Weitere Informationen zu Labels finden Sie auch in der Compute Engine-Dokumentation zu Labels.
Hinweise
- Wenn Sie Batch noch nicht verwendet haben, lesen Sie den Hilfeartikel Batch-Dateien erstellen und ausführen und aktivieren Sie Batch, indem Sie die Voraussetzungen für Projekte und Nutzer erfüllen.
-
Um die Berechtigungen zu erhalten, die Sie zum Erstellen eines Jobs benötigen, bitten Sie Ihren Administrator, Ihnen folgenden IAM-Rollen:
-
Batch-Job-Editor (
roles/batch.jobsEditor
) für das Projekt -
Dienstkontonutzer (
roles/iam.serviceAccountUser
) für das Dienstkonto des Jobs, das standardmäßig das Compute Engine-Standarddienstkonto 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 an Labels in der Compute Engine-Dokumentation angegeben sind, Für den Batchjob und seine Ressourcen gelten die folgenden Einschränkungen:
Batch unterstützt nur Labels für Ressourcen, die mit Batch erstellt wurden und zu den folgenden Typen gehören:
Jobs
Runnables
Graphics Processing Units (GPUs) für ein Job (falls vorhanden)
Nichtflüchtige Speicher (Bootlaufwerke und alle Speicher-Volumes) für einen Job
VM-Instanzen für einen Job
Nachdem Sie die vordefinierten Labels berücksichtigt haben, die Batch automatisch auf einen Job anwendet, können Sie die folgenden Anzahlen von benutzerdefinierten Labels definieren:
Sie können maximal 63 benutzerdefinierte Labels definieren, die auf den Job und seine ausführbaren Dateien angewendet werden.
Sie können maximal 61 benutzerdefinierte Labels definieren, die auf jede GPU angewendet werden. den nichtflüchtigen Speicher und die VM, die für den Job erstellt wurde.
Batch unterstützt nur das Definieren von benutzerdefinierten 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 das Definieren von Labels nur beim Erstellen eines Jobs.
Labels für Jobs und ausführbare Dateien können nicht hinzugefügt, aktualisiert oder entfernt werden.
Mit Compute Engine ist es möglich, Entfernen Sie Labels für den nichtflüchtigen Speicher und die VMs, die für Jobs erstellt wurden, nicht empfohlen. Der Zeitraum, in dem die Ressourcen für einen Job vorhanden sind, darf nicht sind zuverlässig geschätzt und Änderungen funktionieren möglicherweise Batch.
Wenn Sie die Liste der Jobs mithilfe von Labels filtern möchten, 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. Von
standardmäßig, wendet Batch automatisch die folgenden vordefinierten
Labels:
Für jeden Job, den Sie erstellen:
batch-job-id
: Der Wert dieses Labels wird auf den Namen der Stelle festgelegt.
Für jede GPU, jeden nichtflüchtigen Speicher und jede VM, die für einen Job erstellt wurden, gilt Folgendes:
batch-job-id
: Der Wert dieses Labels wird auf den Namen der Stelle 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 Laufwerke und VMs gruppiert, die für Jobs erstellt werden. Beispiel: dieses Label verwenden, wenn Sie Cloud Billing-Bericht ansehen, um die Kosten für alle GPUs, nichtflüchtigen Speicher und VMs zu ermitteln, Batch.
Benutzerdefinierte Labels definieren
Sie können beim Erstellen eines Jobs optional ein oder mehrere benutzerdefinierte Labels definieren. Sie können Definieren Sie benutzerdefinierte Labels mit neuen Schlüsseln oder Schlüsseln, die in Ihrem Projekt bereits 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 beschrieben, wie Sie dem Job und jeder GPU, jedem nichtflüchtigen Laufwerk und jeder VM, die für den Job erstellt wurden, ein oder mehrere benutzerdefinierte Labels zuweisen. Nachdem Sie den Job erstellt haben, können Sie mit diesen Labels Cloud Billing-Berichte und Ihre Projektlisten mit Jobs, nichtflüchtigen Speichern und VMs erstellen.
Definieren Sie benutzerdefinierte Labels für den Job.
In diesem Abschnitt wird erläutert, wie Sie ein oder mehrere benutzerdefinierte Labels auf den Job anwenden. Nachher beim Erstellen des Jobs können Sie mit diesen Labels die Listen der Jobs.
Benutzerdefinierte Labels für Runnables definieren
In diesem Abschnitt wird erläutert, wie Sie ein oder mehrere benutzerdefinierte Labels auf ein oder mehrere Elemente anwenden. Runnables für den Job. Nach dem Erstellen des Jobs können Sie diese Labels verwenden, um die Joblisten Ihres Projekts zu filtern.
Benutzerdefinierte Labels für den Job und seine Ressourcen definieren
Labels, die in den
Feld labels
für die Zuweisungsrichtlinie eines Jobs
auf den Job angewendet sowie auf jede GPU (falls vorhanden), nichtflüchtigen Speicher (alle
Bootlaufwerke und alle neuen Speicher-Volumes sowie die für den Job erstellte VM.
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 Container-Job in us-central1
, der zwei benutzerdefinierte Labels definiert, die für den Job und die für den Job erstellten Ressourcen gelten:
Erstellen Sie eine JSON-Datei, die die Konfigurationsdetails des Jobs und den Feld
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!" ] } } ] } } ] }
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, der auf die für den Job erstellten VMs angewendet werden soll.
Erstellen Sie den Job in
us-central1
mithilfe desgcloud batch jobs submit
-Befehl:gcloud batch jobs submit example-job \ --config=JSON_CONFIGURATION_FILE \ --location=us-central1
Ersetzen Sie
JSON_CONFIGURATION_FILE
durch den Pfad zum JSON-Datei mit den Konfigurationsdetails des Jobs, die Sie im vorherigen Schritt erstellt haben Schritt.
API
Wenn Sie beispielsweise einen einfachen Containerjob in us-central1
erstellen möchten, der zwei benutzerdefinierte Labels definiert, die für den Job und die für den Job erstellten Ressourcen gelten, senden Sie eine POST
-Anfrage an die Methode jobs.create
und geben Sie das Feld allocationPolicy.labels
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, auf das angewendet werden soll die für den Job erstellten VMs.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 angewendet werden soll zu den VMs, die für den Job erstellt wurden.
Java
Node.js
Python
Benutzerdefinierte Labels für den Job definieren
Labels, die im Feld labels
des Jobs definiert sind
werden nur auf den Job angewendet.
Sie können Labels für einen Job definieren, wenn Sie ihn 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, die die Konfigurationsdetails des Jobs und den Feld
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" } }
Ersetzen Sie Folgendes:
JOB_LABEL_NAME1
: Der Name des ersten Labels, das auf Ihren Job angewendet wird.JOB_LABEL_VALUE1
: Der Wert des ersten Labels für auf Ihren Job anwenden können.JOB_LABEL_NAME2
: Der Name des zweiten Labels, das auf Ihren Job angewendet werden soll.JOB_LABEL_VALUE2
: Der Wert des zweiten Labels, der auf Ihren Job angewendet werden soll.
Erstellen Sie den Job in
us-central1
mithilfe desgcloud batch jobs submit
-Befehl mit den folgenden Flags:gcloud batch jobs submit example-job \ --config=JSON_CONFIGURATION_FILE \ --location=us-central1
Ersetzen Sie
JSON_CONFIGURATION_FILE
durch den Pfad zum JSON-Datei mit den Konfigurationsdetails des Jobs, die Sie im vorherigen Schritt erstellt haben Schritt.
API
Wenn Sie beispielsweise einen Containerjob in us-central1
erstellen möchten, der zwei
auf die Jobs selbst anwenden möchten, stellen Sie eine POST
-Anfrage an die
jobs.create
-Methode
und geben Sie die
Feld 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"
}
}
Ersetzen Sie Folgendes:
JOB_LABEL_NAME1
: Der Name des ersten Labels, auf das angewendet werden soll für Ihren Job.JOB_LABEL_VALUE1
: Der Wert des ersten Labels, das auf Ihren Job angewendet werden soll.JOB_LABEL_NAME2
: Der Name des zweiten Labels, auf das angewendet werden soll für Ihren Job.JOB_LABEL_VALUE2
: Der Wert des zweiten Labels, das angewendet werden soll für Ihren Job.
Java
Node.js
Python
Benutzerdefinierte Labels für Runnables definieren
Labels, die im Feld labels
für ein ausführbares Programm definiert sind, werden nur auf dieses Programm angewendet.
Sie können Labels für ein oder mehrere Runnables definieren, wenn Sie einen Job mit der Methode gcloud CLI oder Batch API verwenden.
gcloud
So erstellen Sie beispielsweise einen Job in us-central1
, der zwei benutzerdefinierte Labels definiert, ein benutzerdefiniertes Label für jedes der beiden Runnables des Jobs:
Erstellen Sie eine JSON-Datei, die die Konfigurationsdetails des Jobs und den
runnables.labels
-Felder.{ "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 anzuwendenden Labels zum ersten Runnable des Jobs.RUNNABLE1_LABEL_VALUE1
: Der Wert des Labels, der auf das erste ausführbare Element des Jobs angewendet werden soll.RUNNABLE2_LABEL_NAME1
: der Name des anzuwendenden Labels zum zweiten Runnable des Jobs.RUNNABLE2_LABEL_VALUE1
: Der Wert des Labels, der auf das zweite ausführbare Element des Jobs angewendet werden soll.
Erstellen Sie den Job in
us-central1
mithilfe desgcloud batch jobs submit
-Befehl:gcloud batch jobs submit example-job \ --config=JSON_CONFIGURATION_FILE \ --location=us-central1
Ersetzen Sie
JSON_CONFIGURATION_FILE
durch den Pfad zum JSON-Datei mit den Konfigurationsdetails des Jobs, die Sie im vorherigen Schritt erstellt haben Schritt.
API
So erstellen Sie beispielsweise einen Job in us-central1
, der zwei benutzerdefinierte Labels definiert:
eine für jede Runnables des Jobs, stellen Sie eine POST
-Anfrage an die
jobs.create
-Methode
und geben Sie die
runnables.labels
-Felder.
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 ausführbare Element des ersten Jobs angewendet werden soll.RUNNABLE1_LABEL_VALUE1
: Der Wert des Labels, der auf das ausführbare Element des ersten Jobs angewendet werden soll.RUNNABLE2_LABEL_NAME1
: Der Name des Labels, auf das angewendet werden soll der zweite Job ausführbar ist.RUNNABLE2_LABEL_VALUE1
: Der Wert des Labels, der auf das ausführbare Element des zweiten Jobs angewendet werden soll.
Java
Node.js
Python
Nächste Schritte
Verwenden Sie Labels als Filter, wenn Sie Folgendes tun: