Dokumen ini menjelaskan cara menggunakan label untuk mengatur resource Batch Anda.
Label adalah pasangan nilai kunci yang diterapkan ke resource untuk mengelompokkan dan mendeskripsikannya. Batch memiliki label standar, yang secara otomatis diterapkan ke resource, dan label kustom, yang dapat Anda tentukan dan terapkan saat membuat tugas.
Label memungkinkan Anda memfilter hasil daftar resource dan laporan Penagihan Cloud. Misalnya, Anda dapat menggunakan label untuk melakukan hal berikut:
Jelaskan dan atur daftar tugas project Anda.
Bedakan runnable tugas dengan menggunakan label untuk mendeskripsikan jenis penampung atau skrip yang ditentukan.
Analisis biaya dengan memfilter laporan Penagihan Cloud untuk resource yang dibuat oleh Batch atau tugas tertentu.
Untuk informasi selengkapnya tentang label, lihat juga dokumentasi Compute Engine untuk label
Sebelum memulai
- Jika belum pernah menggunakan Batch, baca Mulai menggunakan Batch dan aktifkan Batch dengan menyelesaikan prasyarat untuk project dan pengguna.
-
Untuk mendapatkan izin yang diperlukan untuk membuat tugas, minta administrator untuk memberi Anda peran IAM berikut:
-
Batch Job Editor (
roles/batch.jobsEditor
) di project -
Pengguna Akun Layanan (
roles/iam.serviceAccountUser
) di akun layanan tugas, yang secara default adalah akun layanan Compute Engine default
Untuk mengetahui informasi selengkapnya tentang cara memberikan peran, lihat Mengelola akses ke project, folder, dan organisasi.
Anda mungkin juga bisa mendapatkan izin yang diperlukan melalui peran khusus atau peran bawaan lainnya.
-
Batch Job Editor (
Pembatasan
Selain persyaratan untuk label yang ditentukan dalam dokumentasi Compute Engine, penerapan label ke tugas Batch dan resource-nya memiliki batasan berikut:
Batch hanya mendukung label untuk resource yang dibuat menggunakan Batch dan dari jenis berikut:
Pekerjaan
Runnable
Unit pemrosesan grafis (GPU) untuk tugas (jika ada)
Persistent disk (boot disk dan volume penyimpanan) untuk tugas
Instance virtual machine (VM) untuk tugas
Setelah memperhitungkan label standar yang Batch terapkan secara otomatis ke tugas, Anda dapat menentukan jumlah label kustom berikut:
Anda dapat menentukan maksimum 63 label kustom untuk diterapkan ke tugas dan runnable-nya.
Anda dapat menentukan maksimum 61 label kustom untuk diterapkan ke setiap GPU, persistent disk, dan VM yang dibuat untuk tugas.
Batch hanya mendukung penentuan label kustom dengan nama unik. Hal ini memiliki konsekuensi berikut:
Mencoba mengganti label yang telah ditetapkan akan menyebabkan error.
Menentukan label kustom duplikat akan menggantikan label kustom yang ada.
Batch hanya mendukung penentuan label saat membuat tugas.
Label untuk tugas dan runnable tidak dapat ditambahkan, diperbarui, atau dihapus.
Meskipun Anda dapat menggunakan Compute Engine untuk menambahkan, memperbarui, atau menghapus label untuk persistent disk dan VM yang dibuat untuk tugas, hal ini tidak direkomendasikan. Jangka waktu keberadaan resource untuk tugas tidak dapat diperkirakan dengan andal, dan perubahan apa pun mungkin tidak berfungsi dengan benar dengan Batch.
Untuk menggunakan label guna memfilter daftar tugas, Anda harus melihat daftar tugas menggunakan gcloud CLI atau Batch API.
Label standar
Setiap label standar memiliki kunci yang diawali dengan awalan batch-
. Secara
default, Batch secara otomatis menerapkan label predefinsi
berikut:
Untuk setiap tugas yang Anda buat:
batch-job-id
: Nilai label ini ditetapkan ke nama tugas.
Untuk setiap GPU, persistent disk, dan VM yang dibuat untuk tugas:
batch-job-id
: Nilai label ini ditetapkan ke nama tugas.batch-job-uid
: Nilai label ini ditetapkan ke ID unik (UID) tugas.batch-node
: Nilai label ini adalah null—label ini hanya mengelompokkan semua GPU, persistent disk, dan VM yang dibuat untuk tugas. Misalnya, gunakan label ini saat Anda melihat laporan Penagihan Cloud untuk mengidentifikasi biaya semua GPU, persistent disk, dan VM yang dibuat oleh Batch.
Menentukan label khusus
Secara opsional, Anda dapat menentukan satu atau beberapa label kustom saat membuat tugas. Anda dapat menentukan label kustom dengan kunci baru atau kunci yang sudah digunakan project Anda. Untuk menentukan label kustom, pilih satu atau beberapa metode berikut dalam dokumen ini berdasarkan tujuan label:
Menentukan label kustom untuk tugas dan resource-nya.
Bagian ini menjelaskan cara menerapkan satu atau beberapa label kustom ke tugas dan ke setiap GPU, persistent disk, dan VM yang dibuat untuk tugas tersebut. Setelah membuat tugas, Anda dapat menggunakan label ini untuk memfilter laporan Penagihan Cloud dan daftar tugas, disk persisten, dan VM project Anda.
Tentukan label kustom untuk tugas.
Bagian ini menjelaskan cara menerapkan satu atau beberapa label kustom ke tugas. Setelah membuat tugas, Anda dapat menggunakan label ini untuk memfilter daftar tugas project.
Menentukan label kustom untuk runnable.
Bagian ini menjelaskan cara menerapkan satu atau beberapa label kustom ke satu atau beberapa runnable untuk tugas. Setelah membuat tugas, Anda dapat menggunakan label ini untuk memfilter daftar tugas project.
Menentukan label kustom untuk tugas dan resource-nya
Label yang ditentukan di
kolom labels
untuk kebijakan alokasi tugas
diterapkan ke tugas, serta ke setiap GPU (jika ada), persistent disk (semua
boot disk dan volume penyimpanan baru), dan VM yang dibuat untuk tugas tersebut.
Anda dapat menentukan label untuk tugas dan resource-nya saat membuat tugas menggunakan gcloud CLI atau Batch API.
gcloud
Misalnya, untuk membuat tugas penampung dasar di us-central1
yang menentukan dua label kustom yang berlaku untuk tugas dan resource yang dibuat untuk tugas, ikuti langkah-langkah berikut:
Buat file JSON yang menentukan detail konfigurasi tugas dan kolom
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!" ] } } ] } } ] }
Ganti kode berikut:
VM_LABEL_NAME1
: Nama label pertama yang akan diterapkan ke VM yang dibuat untuk tugas.VM_LABEL_VALUE1
: Nilai label pertama yang akan diterapkan ke VM yang dibuat untuk tugas.VM_LABEL_NAME2
: Nama label kedua yang akan diterapkan ke VM yang dibuat untuk tugas.VM_LABEL_VALUE2
: Nilai label kedua yang akan diterapkan ke VM yang dibuat untuk tugas.
Buat tugas di
us-central1
menggunakan perintahgcloud batch jobs submit
.gcloud batch jobs submit example-job \ --config=JSON_CONFIGURATION_FILE \ --location=us-central1
Ganti
JSON_CONFIGURATION_FILE
dengan jalur ke file JSON dengan detail konfigurasi tugas yang Anda buat di langkah sebelumnya.
API
Misalnya, untuk membuat tugas penampung dasar di us-central1
yang menentukan dua label kustom yang berlaku untuk tugas dan resource yang dibuat untuk tugas, buat permintaan POST
ke metode jobs.create
dan tentukan kolom 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!"
]
}
}
]
}
}
]
}
Ganti kode berikut:
VM_LABEL_NAME1
: Nama label pertama yang akan diterapkan ke VM yang dibuat untuk tugas.VM_LABEL_VALUE1
: Nilai label pertama yang akan diterapkan ke VM yang dibuat untuk tugas.VM_LABEL_NAME2
: Nama label kedua yang akan diterapkan ke VM yang dibuat untuk tugas.VM_LABEL_VALUE2
: Nilai label kedua yang akan diterapkan ke VM yang dibuat untuk tugas.
Java
Node.js
Python
Menentukan label kustom untuk tugas
Label yang ditentukan di kolom labels
untuk tugas
hanya diterapkan ke tugas.
Anda dapat menentukan label untuk tugas saat membuat tugas menggunakan gcloud CLI atau Batch API.
gcloud
Misalnya, untuk membuat tugas penampung dasar di us-central1
yang menentukan dua label kustom yang berlaku untuk tugas itu sendiri, ikuti langkah-langkah berikut:
Buat file JSON yang menentukan detail konfigurasi tugas dan kolom
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" } }
Ganti kode berikut:
JOB_LABEL_NAME1
: Nama label pertama yang akan diterapkan ke tugas Anda.JOB_LABEL_VALUE1
: Nilai label pertama yang akan diterapkan ke tugas Anda.JOB_LABEL_NAME2
: Nama label kedua yang akan diterapkan ke tugas Anda.JOB_LABEL_VALUE2
: Nilai label kedua yang akan diterapkan ke tugas Anda.
Buat tugas di
us-central1
menggunakan perintahgcloud batch jobs submit
dengan flag berikut:gcloud batch jobs submit example-job \ --config=JSON_CONFIGURATION_FILE \ --location=us-central1
Ganti
JSON_CONFIGURATION_FILE
dengan jalur ke file JSON dengan detail konfigurasi tugas yang Anda buat di langkah sebelumnya.
API
Misalnya, untuk membuat tugas penampung di us-central1
yang menentukan dua label kustom untuk diterapkan ke tugas itu sendiri, buat permintaan POST
ke metode jobs.create
dan tentukan kolom 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"
}
}
Ganti kode berikut:
JOB_LABEL_NAME1
: Nama label pertama yang akan diterapkan ke tugas Anda.JOB_LABEL_VALUE1
: Nilai label pertama yang akan diterapkan ke tugas Anda.JOB_LABEL_NAME2
: Nama label kedua yang akan diterapkan ke tugas Anda.JOB_LABEL_VALUE2
: Nilai label kedua yang akan diterapkan ke tugas Anda.
Java
Node.js
Python
Menentukan label khusus untuk runnable
Label yang ditentukan di
kolom labels
untuk runnable
hanya diterapkan ke runnable tersebut.
Anda dapat menentukan label untuk satu atau beberapa runnable saat membuat tugas menggunakan gcloud CLI atau Batch API.
gcloud
Misalnya, untuk membuat tugas di us-central1
yang menentukan dua label kustom,
satu label kustom untuk setiap runnable dari dua tugas, ikuti langkah-langkah berikut:
Buat file JSON yang menentukan detail konfigurasi tugas dan kolom
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" } } ] } } ] }
Ganti kode berikut:
RUNNABLE1_LABEL_NAME1
: Nama label yang akan diterapkan ke tugas pertama yang dapat dijalankan.RUNNABLE1_LABEL_VALUE1
: Nilai label yang akan diterapkan ke tugas yang dapat dijalankan pertama kali.RUNNABLE2_LABEL_NAME1
: Nama label yang akan diterapkan ke tugas kedua yang dapat dijalankan.RUNNABLE2_LABEL_VALUE1
: Nilai label yang akan diterapkan ke tugas kedua yang dapat dijalankan.
Buat tugas di
us-central1
menggunakan perintahgcloud batch jobs submit
.gcloud batch jobs submit example-job \ --config=JSON_CONFIGURATION_FILE \ --location=us-central1
Ganti
JSON_CONFIGURATION_FILE
dengan jalur ke file JSON dengan detail konfigurasi tugas yang Anda buat di langkah sebelumnya.
API
Misalnya, untuk membuat tugas di us-central1
yang menentukan dua label kustom,
satu untuk setiap runnable dari dua tugas, buat permintaan POST
ke
metode jobs.create
dan tentukan
kolom 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"
}
}
]
}
}
]
}
Ganti kode berikut:
RUNNABLE1_LABEL_NAME1
: Nama label yang akan diterapkan ke tugas pertama yang dapat dijalankan.RUNNABLE1_LABEL_VALUE1
: Nilai label yang akan diterapkan ke tugas pertama yang dapat dijalankan.RUNNABLE2_LABEL_NAME1
: Nama label yang akan diterapkan ke tugas kedua yang dapat dijalankan.RUNNABLE2_LABEL_VALUE1
: Nilai label yang akan diterapkan ke tugas kedua yang dapat dijalankan.
Java
Node.js
Python
Langkah selanjutnya
Gunakan label sebagai filter saat Anda melakukan hal berikut:
Pelajari cara menghapus tugas.