Dokumen ini menjelaskan cara membuat tugas yang dijalankan pada resource yang dicadangkan.
Reservasi adalah fitur Compute Engine. Reservasi memberikan jaminan tingkat yang sangat tinggi dalam memperoleh kapasitas untuk satu atau beberapa VM dengan konfigurasi hardware yang ditentukan. Reservasi untuk VM akan menimbulkan biaya VM tersebut dari saat Anda membuat dan hingga Anda menghapus reservasi. Namun, meskipun Anda menggunakan VM tersebut, total biayanya setara dengan VM tanpa reservasi.
Umumnya, reservasi berguna ketika ketersediaan kapasitas sangat penting atau untuk mencegah error dalam mendapatkan resource. Khusus untuk Batch, pertimbangkan untuk menggunakan reservasi khusus guna membantu meminimalkan waktu penjadwalan tugas, atau mencoba menggunakan reservasi yang sudah ada saat tidak digunakan. Jika Anda memiliki reservasi yang kurang digunakan—seperti reservasi yang diperlukan untuk diskon abonemen—Anda dapat mengonfigurasi tugas agar mencoba memakainya saat sedang tidak digunakan untuk mencoba membantu mengoptimalkan biaya yang timbul.
Untuk mempelajari reservasi lebih lanjut, lihat dokumentasi Compute Engine untuk reservasi.
Sebelum memulai
- Jika belum pernah menggunakan Batch, baca Mulai menggunakan Batch dan aktifkan Batch dengan menyelesaikan prasyarat untuk project dan pengguna.
- Pastikan Anda memiliki izin untuk membuat reservasi atau melihat reservasi yang ada yang Anda inginkan untuk digunakan oleh VM tugas sesuai kebutuhan.
-
Untuk mendapatkan izin yang Anda perlukan guna membuat tugas, minta administrator untuk memberi Anda peran IAM berikut:
-
Batch Job Editor (
roles/batch.jobsEditor
) pada project -
Service Account User (
roles/iam.serviceAccountUser
) pada akun layanan tugas, yang secara default merupakan akun layanan Compute Engine default
Untuk mengetahui informasi selengkapnya tentang pemberian peran, lihat Mengelola akses.
Anda mungkin juga bisa mendapatkan izin yang diperlukan melalui peran khusus atau peran bawaan lainnya.
-
Batch Job Editor (
Pembatasan
Selain batasan umum untuk reservasi, Batch juga memiliki batasan berikut:
- VM tugas tidak dapat menggunakan reservasi bersama.
- VM tugas tidak dapat menggunakan reservasi jika menentukan kebijakan penempatan ringkas.
Persyaratan
Bagian ini merangkum persyaratan agar VM tugas dapat menggunakan reservasi. Untuk mengetahui informasi selengkapnya tentang semua persyaratan, lihat persyaratan umum untuk reservasi dalam dokumentasi Compute Engine dan prosedur perencanaan konfigurasi nanti dalam dokumen ini.
Agar VM tugas secara umum dapat menggunakan reservasi, semua kondisi berikut harus dipenuhi:
Tugas dan reservasi harus menentukan properti VM yang sama persis.
Anda harus mematuhi semua batasan dalam dokumen ini dan semua persyaratan umum lainnya untuk reservasi.
Agar setiap VM tugas berhasil menggunakan reservasi, reservasi tersebut harus memiliki kapasitas tidak terpakai yang tersedia selama runtime VM.
Kapasitas yang tidak terpakai dari reservasi adalah perbedaan antara jumlah VM-nya dan jumlah VM yang saat ini menggunakannya. VM mencoba menggunakan reservasi setiap kali Anda memiliki kapasitas reservasi yang tidak digunakan. Jadi, VM dapat mulai menggunakan reservasi saat VM dibuat atau setelahnya dalam runtime-nya. VM tidak berhenti menggunakan reservasi sampai VM berhenti berjalan atau reservasi dihapus.
Bergantung pada total kapasitas reservasi yang tidak digunakan, tidak ada, beberapa, atau semua VM tugas yang dapat menggunakan reservasi, dan jumlah VM yang dicadangkan dapat bervariasi selama runtime tugas.
Membuat dan menjalankan tugas yang dapat menggunakan VM yang dicadangkan
Rencanakan konfigurasi Anda. Untuk memastikan tugas dan reservasi Anda kompatibel, selesaikan langkah-langkah berikut.
Jika ingin menggunakan reservasi yang sudah ada, Anda harus membuat tugas dengan konfigurasi yang sesuai. Atau, jika Anda berencana membuat reservasi baru, pilih opsi konfigurasi yang Anda inginkan.
Menentukan properti reservasi. Karena pembatasan tersebut, jenis berbagi harus berupa single-project, yang merupakan opsi default untuk reservasi. Tentukan nilai yang ingin Anda gunakan untuk properti reservasi berikut:
- Jenis pemakaian*
- Jumlah VM†
*Jenis konsumsi reservasi (ditargetkan secara khusus atau dipakai secara otomatis) menentukan VM mana yang dapat menggunakan reservasi.
†Jumlah VM merepresentasikan total kapasitas reservasi. Saat menentukan nilai ini, pertimbangkan jumlah VM tugas.
Tentukan properti VM untuk tugas dan reservasi. Karena pembatasan tersebut, tugas atau reservasi tidak dapat menentukan kebijakan penempatan rapat, yang merupakan opsi default untuk reservasi dan tugas. Tentukan nilai yang ingin Anda gunakan untuk properti VM berikut, yang harus sama persis dengan reservasi dan tugas:
- Project
- Zona*
- Jenis mesin†
- Platform CPU minimum† (jika ada‡)
- Jenis dan jumlah GPU† (jika ada‡)
- Jenis dan jumlah SSD lokal† (jika ada‡)
- Minat reservasi†#
*VM tugas harus berada di zona yang sama dengan VM yang dicadangkan. Anda harus menyertakan zona ini di kolom
allowedLocations[]
tugas atau, jika menghapus kolomallowedLocations[]
, tetapkan lokasi tugas ke region yang berisi zona ini.†Tugas harus menentukan semua properti ini menggunakan subkolom
policy
atau template instance VM. Tugas tidak dapat menentukan kombinasi subkolompolicy
dan template.‡ Kolom opsional tidak dapat ditentukan untuk satu resource dan dihapus dari resource lainnya. Tentukan atau hapus kolom opsional untuk reservasi dan tugas. Jika tugas tersebut menentukan template instance VM, hal ini juga berlaku untuk kolom di template yang ditentukan.
#Jenis konsumsi reservasi menentukan afinitas reservasi yang diperlukan untuk VM tugas, yang harus Anda tentukan dalam tugas sebagai berikut:
- Jika tugas menggunakan template instance VM, template tersebut perlu mengonfigurasi afinitas reservasi seperti yang dijelaskan dalam dokumentasi reservasi.
- Jika tugas tidak menggunakan template dan reservasi
ditargetkan secara khusus, tentukan nama reservasi di
kolom
reservation
tugas. - Atau, jika tugas tidak menggunakan template dan reservasi
otomatis digunakan, hilangkan kolom
reservation
tugas.
Siapkan reservasi. Jika belum melakukannya, buat reservasi yang Anda inginkan untuk digunakan oleh VM tugas. Pastikan reservasi memiliki properti yang Anda rencanakan.
Buat dan jalankan tugas. Anda dapat membuat dan menjalankan tugas yang memakai VM dari reservasi yang telah disiapkan menggunakan gcloud CLI atau Batch API:
gcloud
Buat file JSON yang menentukan detail konfigurasi tugas yang menetapkan subkolom resource instance VM (
instances[]
) agar sama persis dengan properti VM reservasi.Misalnya, untuk membuat tugas skrip dasar yang menggunakan VM dari reservasi, buat file JSON dengan konten berikut:
{ "taskGroups": [ { "taskSpec": { "runnables": [ { "script": { "text": "echo Hello world from task ${BATCH_TASK_INDEX}" } } ] }, "taskCount": 3 } ], "allocationPolicy": { "instances": [ { VM_RESOURCES } ], }, "logsPolicy": { "destination": "CLOUD_LOGGING" } }
Ganti
VM_RESOURCES
dengan resource VM yang sesuai dengan reservasi yang Anda inginkan untuk digunakan oleh tugas dengan menentukan subkolominstances[]
yang Anda rencanakan pada langkah sebelumnya.Misalnya, mulai dari nilai berikut untuk
VM_RESOURCES
:"installGpuDrivers": INSTALL_GPU_DRIVERS, "policy": { "machineType": "MACHINE_TYPE", "minCpuPlatform": "MIN_CPU_PLATFORM", "accelerators": [ { "type": "GPU_TYPE", "count": GPU_COUNT } ], "disks": [ { "newDisk": { "sizeGb": LOCAL_SSD_SIZE, "type": "local-ssd" }, "deviceName": "LOCAL_SSD_NAME" } ], "reservation": "SPECIFIC_RESERVATION_NAME" }
Untuk menggunakan nilai ini, buat semua perubahan berikut:
Apakah Anda ingin menggunakan template instance?
Ya: Ganti kolom
policy
dengan kolominstanceTemplate
dan tentukan template instance VM yang ada dan cocok dengan reservasi. Misalnya, lihat contoh kode untuk menggunakan template instance VM. Jika reservasi menggunakan GPU atau SSD lokal, Anda juga perlu mengonfigurasi masing-masing kolominstallGpuDrivers
dan kolomvolumes[]
tugas. Jika tidak, lewati perubahan lainnya.Tidak: Ganti
MACHINE_TYPE
dengan jenis mesin yang sama dengan reservasi.
Apakah reservasi mencakup platform CPU minimum?
Yes: Ganti
MIN_CPU_PLATFORM
dengan platform CPU minimum yang sama.Tidak: Hapus kolom
minCpuPlatform
.
Apakah reservasi menyertakan GPU?
Ya: Ganti
INSTALL_GPU_DRIVERS
,GPU_TYPE
, danGPU_COUNT
agar sesuai dengan reservasi. Misalnya, lihat contoh kode untuk menggunakan GPU.Tidak: Hapus kolom
installGpuDrivers
dan kolomaccelerators[]
.
Apakah reservasi mencakup SSD lokal?
Ya: Ganti
LOCAL_SSD_SIZE
danLOCAL_SSD_NAME
agar sesuai dengan reservasi, dan pasang SSD lokal dengan menambahkan kolomvolumes[]
ke tugas. Misalnya, lihat contoh kode untuk menggunakan SSD lokal.Tidak: Hapus kolom
disks[]
.
Apakah reservasi menggunakan jenis konsumsi yang ditargetkan secara khusus?
Ya: Ganti
SPECIFIC_RESERVATION_NAME
dengan nama reservasi.Tidak: Hapus kolom
reservation
.
Misalnya, Anda menggunakan reservasi yang digunakan secara otomatis untuk VM
n2-standard-32
yang tidak menentukan platform CPU, GPU, atau SSD lokal minimum. Selain itu, Anda tidak ingin menentukan template instance VM. Dalam hal ini, Anda harus menggantiVM_RESOURCES
dengan nilai berikut:"policy": { "machineType": "n2-standard-32" }
Untuk membuat dan menjalankan tugas, gunakan perintah
gcloud batch jobs submit
:gcloud batch jobs submit JOB_NAME \ --location LOCATION \ --config JSON_CONFIGURATION_FILE
Ganti kode berikut:
JOB_NAME
: nama tugas.LOCATION
: lokasi tugas. Kecuali jika tugas menentukan kolomallowedLocations[]
, ini harus merupakan region yang berisi zona reservasi.JSON_CONFIGURATION_FILE
: jalur untuk file JSON dengan detail konfigurasi tugas.
API
Buat permintaan
POST
ke metodejobs.create
yang menetapkan subkolom resource instance VM (instances[]
) agar sama persis dengan properti VM reservasi.Misalnya, untuk membuat tugas skrip dasar yang menggunakan VM dari reservasi, buat permintaan berikut:
POST https://batch.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/jobs?job_id=JOB_NAME { "taskGroups": [ { "taskSpec": { "runnables": [ { "script": { "text": "echo Hello world from task ${BATCH_TASK_INDEX}" } } ] }, "taskCount": 3 } ], "allocationPolicy": { "instances": [ { VM_RESOURCES } ], }, "logsPolicy": { "destination": "CLOUD_LOGGING" } }
Ganti kode berikut:
PROJECT_ID
: project ID project Anda.LOCATION
: lokasi tugas. Kecuali jika tugas menentukan kolomallowedLocations[]
, ini harus merupakan region yang berisi zona reservasi.JOB_NAME
: nama tugas.VM_RESOURCES
: resource VM yang cocok dengan reservasi yang Anda inginkan untuk digunakan oleh tugas dengan menentukan subkolominstances[]
yang Anda rencanakan pada langkah sebelumnya.Misalnya, mulai dari nilai berikut untuk
VM_RESOURCES
:"installGpuDrivers": INSTALL_GPU_DRIVERS, "policy": { "machineType": "MACHINE_TYPE", "minCpuPlatform": "MIN_CPU_PLATFORM", "accelerators": [ { "type": "GPU_TYPE", "count": GPU_COUNT } ], "disks": [ { "newDisk": { "sizeGb": LOCAL_SSD_SIZE, "type": "local-ssd" }, "deviceName": "LOCAL_SSD_NAME" } ], "reservation": "SPECIFIC_RESERVATION_NAME" }
Untuk menggunakan nilai ini, buat semua perubahan berikut:
Apakah Anda ingin menggunakan template instance?
Ya: Ganti kolom
policy
dengan kolominstanceTemplate
dan tentukan template instance VM yang ada dan cocok dengan reservasi. Misalnya, lihat contoh kode untuk menggunakan template instance VM. Jika reservasi menggunakan GPU atau SSD lokal, Anda juga perlu mengonfigurasi masing-masing kolominstallGpuDrivers
dan kolomvolumes[]
tugas. Jika tidak, lewati perubahan lainnya.Tidak: Ganti
MACHINE_TYPE
dengan jenis mesin yang sama dengan reservasi.
Apakah reservasi mencakup platform CPU minimum?
Yes: Ganti
MIN_CPU_PLATFORM
dengan platform CPU minimum yang sama.Tidak: Hapus kolom
minCpuPlatform
.
Apakah reservasi menyertakan GPU?
Ya: Ganti
INSTALL_GPU_DRIVERS
,GPU_TYPE
, danGPU_COUNT
agar sesuai dengan reservasi. Misalnya, lihat contoh kode untuk menggunakan GPU.Tidak: Hapus kolom
installGpuDrivers
dan kolomaccelerators[]
.
Apakah reservasi mencakup SSD lokal?
Ya: Ganti
LOCAL_SSD_SIZE
danLOCAL_SSD_NAME
agar sesuai dengan reservasi, dan pasang SSD lokal dengan menambahkan kolomvolumes[]
ke tugas. Misalnya, lihat contoh kode untuk menggunakan SSD lokal.Tidak: Hapus kolom
disks[]
.
Apakah reservasi menggunakan jenis konsumsi yang ditargetkan secara khusus?
Ya: Ganti
SPECIFIC_RESERVATION_NAME
dengan nama reservasi.Tidak: Hapus kolom
reservation
.
Misalnya, Anda menggunakan reservasi yang digunakan secara otomatis untuk VM
n2-standard-32
yang tidak menentukan platform CPU, GPU, atau SSD lokal minimum. Selain itu, Anda tidak ingin menentukan template instance VM. Dalam hal ini, Anda harus menggantiVM_RESOURCES
dengan nilai berikut:"policy": { "machineType": "n2-standard-32" }
Langkah selanjutnya
- Jika Anda mengalami masalah saat membuat atau menjalankan tugas, lihat Pemecahan masalah.
- Melihat tugas dan tugas.
- Pelajari opsi penciptaan pekerjaan lainnya.