Mengatur resource menggunakan label

Dokumen ini menjelaskan cara menggunakan label untuk mengatur resource Batch Anda.

Label adalah key-value pair yang diterapkan ke resource untuk mengelompokkan dan mendeskripsikannya. Batch memiliki label yang telah ditetapkan, yang otomatis diterapkan ke resource, dan label kustom, yang dapat Anda tentukan dan terapkan saat membuat tugas.

Dengan label, Anda dapat memfilter hasil daftar resource dan laporan Penagihan Cloud. Misalnya, Anda dapat menggunakan label untuk melakukan hal berikut:

  • Klarifikasi dan atur daftar pekerjaan proyek Anda.

  • Bedakan tugas yang dapat dijalankan 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, baca juga dokumentasi Compute Engine untuk label

Sebelum memulai

Pembatasan

Selain persyaratan untuk label yang ditentukan dalam dokumentasi Compute Engine, menerapkan label ke tugas Batch dan resource-nya memiliki batasan berikut:

  • Batch hanya mendukung label untuk resource yang dibuat menggunakan Batch dan jenis berikut:

  • Setelah mempertimbangkan label yang telah ditentukan sebelumnya yang diterapkan secara otomatis oleh Batch ke sebuah tugas, Anda dapat menentukan jumlah label kustom berikut:

    • Anda dapat menentukan maksimum 63 label khusus untuk diterapkan ke tugas dan runnable-nya.

    • Anda dapat menentukan maksimum 61 label khusus untuk diterapkan ke setiap GPU, persistent disk, dan VM yang dibuat untuk tugas.

  • Batch hanya mendukung penentuan label kustom dengan nama yang unik. Hal ini memiliki konsekuensi sebagai berikut:

    • Mencoba mengganti label standar akan menyebabkan error.

    • Menetapkan label khusus duplikat akan menggantikan label khusus yang ada.

  • Batch hanya mendukung penentuan label saat membuat tugas.

    • Label untuk tugas dan runnable tidak dapat ditambahkan, diperbarui, atau dihapus.

    • Meskipun Compute Engine dapat digunakan untuk menambahkan, memperbarui, atau menghapus label persistent disk dan VM yang dibuat untuk tugas, tindakan ini tidak direkomendasikan. Jangka waktu resource untuk suatu tugas tidak dapat diperkirakan secara andal, dan perubahan apa pun mungkin tidak berfungsi dengan benar dengan Batch.

  • Agar dapat menggunakan label untuk memfilter daftar tugas, Anda harus melihat daftar tugas menggunakan gcloud CLI atau Batch API.

Label standar

Setiap label yang telah ditentukan memiliki kunci yang dimulai dengan awalan batch-. Secara default, Batch akan otomatis menerapkan label yang telah ditetapkan berikut:

  • Untuk setiap pekerjaan 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 tugas (UID).

    • batch-node: Nilai label ini adalah null—nilai 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

Anda dapat memilih untuk menentukan satu atau beberapa label kustom saat membuat tugas. Anda dapat menentukan label kustom dengan kunci atau kunci baru yang sudah digunakan project Anda. Untuk menentukan label kustom, pilih satu atau beberapa metode berikut di dokumen ini berdasarkan tujuan label:

  • Menentukan label kustom untuk tugas dan resource-nya.

    Bagian ini menjelaskan cara menerapkan satu atau beberapa label khusus 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 serta daftar tugas, persistent disk, dan VM project Anda.

  • Menentukan label kustom untuk tugas.

    Bagian ini menjelaskan cara menerapkan satu atau beberapa label khusus ke tugas. Setelah membuat tugas, Anda dapat menggunakan label ini untuk memfilter daftar tugas project Anda.

  • Menentukan label kustom untuk runnable.

    Bagian ini menjelaskan cara menerapkan satu atau beberapa label khusus ke satu atau beberapa yang dapat dijalankan untuk tugas. Setelah membuat tugas, Anda dapat menggunakan label ini untuk memfilter daftar tugas project Anda.

Menentukan label khusus 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 disk booting dan volume penyimpanan baru apa pun), dan VM yang dibuat untuk tugas tersebut.

Anda dapat menentukan label untuk tugas dan resource-nya ketika membuat tugas menggunakan gcloud CLI atau Batch API.

gcloud

Misalnya, untuk membuat tugas penampung dasar di us-central1 yang menentukan dua label khusus yang berlaku untuk tugas dan resource yang dibuat untuk tugas tersebut, ikuti langkah-langkah berikut:

  1. 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 untuk diterapkan ke VM yang dibuat untuk tugas.

  2. Buat tugas di us-central1 menggunakan perintah gcloud 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 khusus yang berlaku untuk tugas dan resource yang dibuat untuk tugas tersebut, 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 tersebut.

  • VM_LABEL_VALUE2: Nilai label kedua yang akan diterapkan ke VM yang dibuat untuk tugas.

Menentukan label khusus untuk tugas

Label yang ditentukan di kolom labels untuk tugas hanya diterapkan ke tugas.

Anda dapat menentukan label tugas saat membuat tugas menggunakan gcloud CLI atau Batch API.

gcloud

Misalnya, untuk membuat tugas container dasar di us-central1 yang menentukan dua label khusus yang berlaku untuk tugas itu sendiri, ikuti langkah-langkah berikut:

  1. 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 untuk melamar pekerjaan Anda.

    • JOB_LABEL_VALUE1: Nilai label pertama untuk diterapkan ke tugas Anda.

    • JOB_LABEL_NAME2: Nama label kedua untuk melamar pekerjaan Anda.

    • JOB_LABEL_VALUE2: Nilai label kedua untuk diterapkan ke tugas Anda.

  2. Buat tugas di us-central1 menggunakan perintah gcloud 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 container di us-central1 yang menentukan dua label khusus 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 untuk melamar pekerjaan Anda.

  • JOB_LABEL_VALUE1: Nilai label pertama untuk diterapkan ke pekerjaan Anda.

  • JOB_LABEL_NAME2: Nama label kedua untuk melamar pekerjaan Anda.

  • JOB_LABEL_VALUE2: Nilai label kedua untuk diterapkan ke pekerjaan Anda.

Menentukan label khusus untuk runnable

Label yang ditentukan dalam 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 khusus, satu label khusus untuk masing-masing dari dua tugas yang dapat dijalankan, ikuti langkah-langkah berikut:

  1. 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 untuk diterapkan ke tugas pertama yang dapat dijalankan.

    • RUNNABLE1_LABEL_VALUE1: Nilai label untuk diterapkan ke tugas pertama yang dapat dijalankan.

    • RUNNABLE2_LABEL_NAME1: Nama label untuk diterapkan ke tugas kedua yang dapat dijalankan.

    • RUNNABLE2_LABEL_VALUE1: Nilai label untuk diterapkan ke tugas kedua yang dapat dijalankan.

  2. Buat tugas di us-central1 menggunakan perintah gcloud 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 khusus, satu untuk masing-masing dari dua tugas yang dapat dijalankan, 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.

Langkah selanjutnya