Ce document explique comment utiliser des libellés pour organiser vos ressources Batch.
Les libellés sont des paires clé-valeur appliquées aux ressources pour les regrouper et les décrire. Batch comporte des libellés prédéfinis, qui sont automatiquement appliqués aux ressources, et des libellés personnalisés, que vous pouvez définir et appliquer lors de la création d'un job.
Les libellés vous permettent de filtrer les résultats des listes de ressources et des rapports Cloud Billing. Par exemple, vous pouvez utiliser des libellés pour effectuer les opérations suivantes :
Clarifier et organiser la liste des jobs de votre projet.
Distinguer les exécutables d'un job en utilisant des libellés pour décrire le type de conteneur ou de script qu'ils spécifient.
Analyser les coûts en filtrant les rapports Cloud Billing pour les ressources créées par Batch ou des jobs spécifiques.
Pour en savoir plus sur les libellés, consultez également la documentation Compute Engine sur les libellés.
Avant de commencer
- Si vous n'avez jamais utilisé Batch, consultez Premiers pas avec Batch et activez Batch en remplissant les prérequis pour les projets et les utilisateurs.
-
Pour obtenir les autorisations nécessaires pour créer un job, demandez à votre administrateur de vous accorder les rôles IAM suivants :
- Éditeur de tâches Batch (
roles/batch.jobsEditor) sur le projet - Utilisateur du compte de service (
roles/iam.serviceAccountUser) sur le compte de service du job, qui est par défaut le compte de service Compute Engine par défaut
Pour en savoir plus sur l'attribution de rôles, consultez Gérer l'accès aux projets, aux dossiers et aux organisations.
Vous pouvez également obtenir les autorisations requises avec des rôles personnalisés ou d'autres rôles prédéfinis.
- Éditeur de tâches Batch (
Restrictions
En plus des exigences concernant les libellés spécifiées dans la documentation Compute Engine, l'application de libellés à un job Batch et à ses ressources présente les restrictions suivantes :
Batch n'est compatible qu'avec les libellés pour les ressources créées à l'aide de Batch et des types suivants :
Jobs
Exécutables
Processeurs graphiques (GPU) pour un job (le cas échéant)
Disques persistants (disques de démarrage et volumes de stockage) pour un job
Instances de machines virtuelles (VM) pour un job
Après avoir pris en compte les libellés prédéfinis que Batch applique automatiquement à un job, vous pouvez définir les quantités suivantes de libellés personnalisés :
Vous pouvez définir un maximum de 63 libellés personnalisés à appliquer au job et à ses exécutables.
Vous pouvez définir un maximum de 61 libellés personnalisés à appliquer à chaque GPU, disque persistant et VM créés pour le job.
Batch n'est compatible qu'avec la définition de libellés personnalisés avec des noms uniques. Cela a les conséquences suivantes :
Toute tentative de remplacement d'un libellé prédéfini entraîne des erreurs.
La définition d'un libellé personnalisé en double remplace le libellé personnalisé existant.
Batch n'est compatible qu'avec la définition de libellés lors de la création d'un job.
Il est impossible d'ajouter, de mettre à jour ou de supprimer des libellés pour les jobs et les exécutables.
Bien qu'il soit possible d'utiliser Compute Engine pour ajouter, mettre à jour ou supprimer des libellés pour les disques persistants et les VM créés pour les jobs, cela n'est pas recommandé. Le délai d'existence des ressources d'un job ne peut pas être estimé de manière fiable, et toute modification risque de ne pas fonctionner correctement avec Batch.
Pour utiliser des libellés afin de filtrer votre liste de jobs, vous devez afficher votre liste de jobs à l'aide de gcloud CLI ou de l'API Batch.
Libellés prédéfinis
Chaque libellé prédéfini comporte une clé qui commence par le préfixe batch-. Par défaut, Batch applique automatiquement les libellés prédéfinis suivants :
À chaque job que vous créez :
batch-job-id: la valeur de ce libellé est définie sur le nom du job.
À chaque GPU, disque persistant et VM créés pour un job :
batch-job-id: la valeur de ce libellé est définie sur le nom du job.batch-job-uid: la valeur de ce libellé est définie sur l'identifiant unique (UID) du job.batch-node: la valeur de ce libellé est nulle. Il regroupe simplement tous les GPU, disques persistants et VM créés pour les jobs. Par exemple, utilisez ce libellé lorsque vous consultez un rapport Cloud Billing pour identifier les coûts de tous les GPU, disques persistants et VM créés par Batch.
Définir des libellés personnalisés
Vous pouvez éventuellement définir un ou plusieurs libellés personnalisés lors de la création d'un job. Vous pouvez définir des libellés personnalisés avec de nouvelles clés ou des clés que votre projet utilise déjà. Pour définir des libellés personnalisés, sélectionnez une ou plusieurs des méthodes suivantes dans ce document en fonction de l'objectif du libellé :
Définir des libellés personnalisés pour le job et ses ressources.
Cette section explique comment appliquer un ou plusieurs libellés personnalisés au job et à chaque GPU, disque persistant et VM créés pour le job. Après avoir créé le job, vous pouvez utiliser ces libellés pour filtrer les rapports Cloud Billing et les listes de jobs, de disques persistants et de VM de votre projet.
Définir des libellés personnalisés pour le job.
Cette section explique comment appliquer un ou plusieurs libellés personnalisés au job. Après avoir créé le job, vous pouvez utiliser ces libellés pour filtrer les listes de jobs de votre projet.
Définir des libellés personnalisés pour les exécutables.
Cette section explique comment appliquer un ou plusieurs libellés personnalisés à un ou plusieurs exécutables pour le job. Après avoir créé le job, vous pouvez utiliser ces libellés pour filtrer les listes de jobs de votre projet.
Définir des libellés personnalisés pour le job et ses ressources
Les libellés définis dans le
labels champ pour la stratégie d'allocation d'un job
sont appliqués au job, ainsi qu'à chaque GPU (le cas échéant), disque persistant (tous les
disques de démarrage et tous les nouveaux volumes de stockage) et VM créés pour le job.
Vous pouvez définir des libellés pour un job et ses ressources lorsque vous créez un job à l'aide de gcloud CLI ou de l'API Batch.
gcloud
Par exemple, pour créer un job de conteneur de base dans us-central1 qui définit deux libellés personnalisés s'appliquant au job et aux ressources créées pour le job, procédez comme suit :
Créez un fichier JSON qui spécifie les détails de configuration du job et le
allocationPolicy.labelschamp.{ "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!" ] } } ] } } ] }Remplacez les éléments suivants :
VM_LABEL_NAME1: nom du premier libellé à appliquer aux VM créées pour le job.VM_LABEL_VALUE1: valeur du premier libellé à appliquer aux VM créées pour le job.VM_LABEL_NAME2: nom du deuxième libellé à appliquer aux VM créées pour le job.VM_LABEL_VALUE2: valeur du deuxième libellé à appliquer aux VM créées pour le job.
Créez le job dans
us-central1à l'aide de lagcloud batch jobs submitcommande.gcloud batch jobs submit example-job \ --config=JSON_CONFIGURATION_FILE \ --location=us-central1Remplacez
JSON_CONFIGURATION_FILEpar le chemin d'accès au fichier JSON contenant les détails de configuration du job que vous avez créé à l'étape précédente.
API
Par exemple, pour créer un job de conteneur de base dans us-central1 qui définit deux
libellés personnalisés s'appliquant au job et aux ressources créées pour le job,
envoyez une requête POST à la
jobs.create méthode
et spécifiez le
allocationPolicy.labels champ.
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!"
]
}
}
]
}
}
]
}
Remplacez les éléments suivants :
VM_LABEL_NAME1: nom du premier libellé à appliquer aux VM créées pour le job.VM_LABEL_VALUE1: valeur du premier libellé à appliquer aux VM créées pour le job.VM_LABEL_NAME2: nom du deuxième libellé à appliquer aux VM créées pour le job.VM_LABEL_VALUE2: valeur du deuxième libellé à appliquer aux VM créées pour le job.
Java
Node.js
Python
Définir des libellés personnalisés pour le job
Les libellés définis dans le labels champ pour le job
ne sont appliqués qu'au job.
Vous pouvez définir des libellés pour un job lorsque vous créez un job à l'aide de gcloud CLI ou de l'API Batch.
gcloud
Par exemple, pour créer un job de conteneur de base dans us-central1 qui définit deux libellés personnalisés s'appliquant au job lui-même, procédez comme suit :
Créez un fichier JSON qui spécifie les détails de configuration du job et le
labelschamp.{ "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" } }Remplacez les éléments suivants :
JOB_LABEL_NAME1: nom du premier libellé à appliquer à votre job.JOB_LABEL_VALUE1: valeur du premier libellé à appliquer à votre job.JOB_LABEL_NAME2: nom du deuxième libellé à appliquer à votre job.JOB_LABEL_VALUE2: valeur du deuxième libellé à appliquer à votre job.
Créez le job dans
us-central1à l'aide de lagcloud batch jobs submitcommande avec les indicateurs suivants :gcloud batch jobs submit example-job \ --config=JSON_CONFIGURATION_FILE \ --location=us-central1Remplacez
JSON_CONFIGURATION_FILEpar le chemin d'accès au fichier JSON contenant les détails de configuration du job que vous avez créé à l'étape précédente.
API
Par exemple, pour créer un job de conteneur dans us-central1 qui définit deux
libellés personnalisés à appliquer au job lui-même, envoyez une requête POST à la
jobs.create méthode
et spécifiez le
labels champ.
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"
}
}
Remplacez les éléments suivants :
JOB_LABEL_NAME1: nom du premier libellé à appliquer à votre job.JOB_LABEL_VALUE1: valeur du premier libellé à appliquer à votre job.JOB_LABEL_NAME2: nom du deuxième libellé à appliquer à votre job.JOB_LABEL_VALUE2: valeur du deuxième libellé à appliquer à votre job.
Java
Node.js
Python
Définir des libellés personnalisés pour les exécutables
Les libellés définis dans le
labels champ pour un exécutable
ne sont appliqués qu'à cet exécutable.
Vous pouvez définir des libellés pour un ou plusieurs exécutables lorsque vous créez un job à l'aide de gcloud CLI ou de l'API Batch.
gcloud
Par exemple, pour créer un job dans us-central1 qui définit deux libellés personnalisés, un pour chacun des deux exécutables du job, procédez comme suit :
Créez un fichier JSON qui spécifie les détails de configuration du job et les
runnables.labelschamps.{ "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" } } ] } } ] }Remplacez les éléments suivants :
RUNNABLE1_LABEL_NAME1: nom du libellé à appliquer au premier exécutable du job.RUNNABLE1_LABEL_VALUE1: valeur du libellé à appliquer au premier exécutable du job.RUNNABLE2_LABEL_NAME1: nom du libellé à appliquer au deuxième exécutable du job.RUNNABLE2_LABEL_VALUE1: valeur du libellé à appliquer au deuxième exécutable du job.
Créez le job dans
us-central1à l'aide de lagcloud batch jobs submitcommande.gcloud batch jobs submit example-job \ --config=JSON_CONFIGURATION_FILE \ --location=us-central1Remplacez
JSON_CONFIGURATION_FILEpar le chemin d'accès au fichier JSON contenant les détails de configuration du job que vous avez créé à l'étape précédente.
API
Par exemple, pour créer un job dans us-central1 qui définit deux libellés personnalisés,
un pour chacun des deux exécutables du job, envoyez une requête POST à la
jobs.create méthode
et spécifiez les
runnables.labels champs.
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"
}
}
]
}
}
]
}
Remplacez les éléments suivants :
RUNNABLE1_LABEL_NAME1: nom du libellé à appliquer au premier exécutable du job.RUNNABLE1_LABEL_VALUE1: valeur du libellé à appliquer au premier exécutable du job.RUNNABLE2_LABEL_NAME1: nom du libellé à appliquer au deuxième exécutable du job.RUNNABLE2_LABEL_VALUE1: valeur du libellé à appliquer au deuxième exécutable du job.
Java
Node.js
Python
Étape suivante
Utilisez des libellés comme filtres lorsque vous effectuez les opérations suivantes :
Découvrez comment supprimer des jobs.