Dokumen ini menjelaskan cara membuat dan menjalankan tugas Batch yang menggunakan fleksibilitas instance. Fleksibilitas instance memungkinkan Anda mengizinkan tugas berjalan di beberapa jenis mesin yang Anda tentukan dan dapat diberi peringkat secara opsional.
Dengan mengizinkan lebih banyak jenis mesin untuk tugas, Anda dapat menggunakan fleksibilitas instance untuk meningkatkan ketersediaan, yaitu probabilitas bahwa resource tersedia untuk menjalankan tugas Anda. Untuk mengetahui informasi selengkapnya tentang cara memilih fitur ketersediaan yang akan digunakan untuk workload Anda, lihat Meningkatkan ketersediaan resource. Misalnya, menggunakan fleksibilitas instance dapat membantu Anda melakukan hal berikut:
- Mengurangi kemungkinan terjadinya error ketersediaan resource dan keterlambatan penjadwalan terkait.
- Pilih resource dengan ketersediaan yang lebih tinggi untuk membantu tugas selesai lebih cepat—misalnya:
- Meningkatkan probabilitas untuk mendapatkan lebih banyak instance untuk tugas yang mendukung pemrosesan paralel.
- Dapatkan Spot VM yang lebih kecil kemungkinannya untuk di-preempt.
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 Anda perlukan 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 pemberian 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
Jika tugas menggunakan fleksibilitas instance, semua batasan berikut berlaku:
Peningkatan ketersediaan meningkat seiring dengan jumlah jenis mesin yang Anda izinkan untuk digunakan oleh tugas.
Tugas tidak dapat menentukan model penyediaan
FLEX_STARTatau model penyediaanRESERVATION_BOUND.Tugas tidak dapat menggunakan reservasi yang ditargetkan secara khusus. (Kolom
reservationharus tidak ditentukan atau ditetapkan keNO_RESERVATION.)Reservasi yang ditargetkan secara khusus mencakup semua reservasi untuk model penyediaan
RESERVATION_BOUNDdan beberapa reservasi untuk model penyediaanSTANDARD. Fitur ini pada dasarnya tidak kompatibel karena pembuatan instance hanya dapat berhasil untuk jenis mesin pemesanan.Setiap tugas dapat memiliki hingga 50 pilihan instance.
Setiap pilihan instance dalam tugas harus memiliki nama unik, peringkat unik, dan satu atau beberapa jenis mesin unik.
Jenis mesin tidak dapat diulang; sertakan setiap jenis mesin hanya dalam satu pilihan instance per tugas.
Setiap tugas dapat memiliki hingga 200 jenis mesin unik di seluruh pilihan instancenya.
Meskipun menentukan beberapa jenis mesin dalam pilihan instance yang sama bersifat opsional, hal ini diperlukan jika Anda menginginkan resource dengan kemampuan perolehan yang lebih tinggi.
- Batch mencoba memilih satu atau beberapa jenis mesin dengan ketersediaan tertinggi hanya jika pemilihan instance untuk peringkat memiliki beberapa jenis mesin. Misalnya, pilihan ini penting jika Anda ingin tugas Anda memiliki VM Spot yang cenderung tidak di-preempt atau lebih banyak instance untuk tugas yang dapat menjalankan tugas secara paralel.
- Jika tidak, saat pemilihan instance untuk peringkat hanya memiliki satu jenis mesin, fleksibilitas instance hanya membantu mencegah error ketersediaan resource.
Tugas tidak dapat menyertakan kolom
machineType, dan jenis mesin untuk template instance yang ditentukan tugas akan diabaikan.Anda harus memverifikasi bahwa setiap properti yang Anda tentukan untuk tugas kompatibel dengan setiap jenis mesin yang diizinkan. Jika tidak, tugas mungkin gagal setelah dikirimkan karena tidak dapat membuat instance. Misalnya, sebaiknya Anda memverifikasi bahwa setidaknya properti berikut untuk tugas kompatibel dengan semua jenis mesin:
- lokasi (jika ditentukan, kolom
allowedLocations[]; jika tidak,location) - resource komputasi per tugas (kolom
computeResource) - disk dan image (kolom
volumes[], kolomdisk[], dan kolombootDisk) - jaringan (kolom
network) semua properti instance lainnya (sub-bidang
instances[]):- platform CPU minimum (kolom
minCpuPlatform) - model penyediaan (kolom
provisioningModel) - GPU (kolom
accelerators[])
- platform CPU minimum (kolom
- lokasi (jika ditentukan, kolom
Anda tidak dapat mengganti disk dan platform CPU minimum untuk tugas Batch. Semua jenis mesin menggunakan nilai yang Anda tentukan (di subbidang
policyatau template instance) atau, jika tidak ditentukan, menggunakan nilai default untuk jenis mesin dalam pemilihan instance prioritas tertinggi. Oleh karena itu, sebaiknya Anda melakukan semua hal berikut:Pastikan jenis boot disk kompatibel untuk setiap jenis mesin yang diizinkan. Singkatnya, jenis mesin generasi ke-4 dan yang lebih baru tidak mendukung disk persisten, jenis mesin generasi ke-2 dan yang lebih lama tidak mendukung Hyperdisk, dan jenis mesin generasi ke-3 dan yang lebih lama menggunakan disk boot persisten secara default.
Jangan tentukan platform CPU minimum atau disk opsional kecuali Anda telah memverifikasi bahwa platform CPU minimum atau disk opsional tersebut didukung untuk setiap jenis mesin yang diizinkan.
Membuat tugas yang diizinkan untuk menggunakan beberapa jenis mesin
Untuk membuat tugas yang diizinkan menggunakan beberapa jenis mesin, pilih salah satu metode berikut.
gcloud
Untuk mengonfigurasi beberapa jenis mesin saat menggunakan Google Cloud CLI untuk membuat tugas, selesaikan langkah-langkah berikut:
Sertakan kolom
instanceFlexibilityPolicydan sub-kolom di kolomallocationPolicydalam file JSON yang menentukan detail konfigurasi tugas Anda. KolominstanceFlexibilityPolicymendukung satu atau beberapa pilihan instance, yang masing-masing memiliki nama unik, peringkat unik, dan daftar satu atau beberapa jenis mesin."allocationPolicy":{ "instanceFlexibilityPolicy":{ "instanceSelections":{ "INSTANCE_SELECTION_NAME":{ "rank": RANK, "machineTypes": [MACHINE_TYPES] } } } }Ganti kode berikut:
INSTANCE_SELECTION_NAME: nama untuk pemilihan instance. Jika tugas memiliki beberapa pilihan instance, pastikan setiap nama dalam tugas ini unik.RANK: Opsional: bilangan bulat nol atau lebih besar yang menunjukkan prioritas untuk pemilihan instance ini, dengan nilai terendah adalah prioritas tertinggi. Jika tidak ditentukan, nilai defaultnya adalah0(prioritas tertinggi). Jika pekerjaan memiliki beberapa pilihan instance, pastikan setiap peringkat dalam pekerjaan ini unik.MACHINE_TYPES: daftar yang dipisahkan koma dari satu atau beberapa jenis mesin, yang ditulis sebagai string, untuk pemilihan instance ini. Anda hanya dapat menyertakan setiap jenis mesin dalam satu pilihan instance per tugas. Misalnya, daftar tiga jenis mesin dapat ditulis sebagai berikut:"MACHINE_TYPE_1", "MACHINE_TYPE_2", "MACHINE_TYPE_3"Ganti
MACHINE_TYPE_1,MACHINE_TYPE_2,MACHINE_TYPE_3masing-masing dengan jenis mesin—misalnya,e2-micro,e2-small, dann1-standard-2.
Untuk mengetahui informasi selengkapnya, lihat juga contoh tugas.
Saat fitur ini berada dalam Pratinjau, Anda harus menggunakan perintah
gcloud alpha batch jobs submituntuk membuat dan mengirimkan tugas.gcloud alpha batch jobs submit JOB_NAME \ --location LOCATION \ --config JSON_CONFIGURATION_FILEGanti kode berikut:
JOB_NAME: nama tugas.LOCATION: lokasi tugas.JSON_CONFIGURATION_FILE: jalur untuk file JSON dengan detail konfigurasi tugas.
REST
Untuk menggunakan Batch API guna membuat tugas yang menggunakan beberapa jenis mesin, gunakan metode v1alpha jobs.create saat fitur ini dalam Pratinjau.
Untuk menentukan beberapa jenis mesin untuk tugas, sertakan
kolom instanceFlexibilityPolicy
dan sub-kolom
di kolom allocationPolicy dalam isi utama di file JSON.
Kolom instanceFlexibilityPolicy mendukung satu atau beberapa pilihan instance,
yang masing-masing memiliki nama unik, peringkat unik, dan daftar satu atau beberapa jenis
mesin.
"allocationPolicy":{
"instanceFlexibilityPolicy":{
"instanceSelections":{
"INSTANCE_SELECTION_NAME":{
"rank": RANK,
"machineTypes": [MACHINE_TYPES]
}
}
}
}
Ganti kode berikut:
INSTANCE_SELECTION_NAME: nama untuk pilihan instance. Jika tugas memiliki beberapa pilihan instance, pastikan setiap nama dalam tugas ini unik.RANK: Opsional: bilangan bulat nol atau lebih besar yang merepresentasikan prioritas untuk pemilihan instance ini, dengan nilai terendah adalah prioritas tertinggi. Jika tidak ditentukan, nilai defaultnya adalah0(prioritas tertinggi). Jika lowongan memiliki beberapa pilihan instance, pastikan setiap peringkat dalam lowongan ini unik.MACHINE_TYPES: daftar yang dipisahkan koma dari satu atau beberapa jenis mesin, yang ditulis sebagai string, untuk pemilihan instance ini. Anda hanya dapat menyertakan setiap jenis mesin dalam satu pilihan instance per tugas. Misalnya, daftar tiga jenis mesin dapat ditulis sebagai berikut:"MACHINE_TYPE_1", "MACHINE_TYPE_2", "MACHINE_TYPE_3"Ganti
MACHINE_TYPE_1,MACHINE_TYPE_2,MACHINE_TYPE_3masing-masing dengan jenis mesin—misalnya,e2-micro,e2-small, dann1-standard-2.
Untuk mengetahui informasi selengkapnya, lihat juga contoh tugas.
Contoh file konfigurasi JSON tugas
Misalnya, saat menggunakan gcloud CLI atau Batch API, Anda dapat menggunakan file konfigurasi JSON berikut untuk membuat tugas skrip dasar yang memiliki dua pilihan instance:
- Pemilihan instance bernama
first-choicememiliki prioritas tertinggi ("rank": 0) dan tiga jenis mesin (e2-micro,e2-small, dann1-standard-2). - Pilihan instance bernama
second-choicememiliki prioritas kedua ("rank": 1) dan satu jenis mesin (e2-medium).
{
"taskGroups": [
{
"taskSpec": {
"runnables": [
{
"script": {
"text": "echo Hello World! This is task $BATCH_TASK_INDEX."
}
}
]
},
"taskCount": 3
}
],
"allocationPolicy":{
"instanceFlexibilityPolicy":{
"instanceSelections":{
"first-choice":{
"rank": 0,
"machineTypes": ["e2-micro", "e2-small", "n1-standard-2"]
},
"second-choice":{
"rank": 1,
"machineTypes": ["e2-medium"]
}
}
}
}
}
Langkah berikutnya
- Jika Anda mengalami masalah saat membuat atau menjalankan tugas, lihat Pemecahan masalah.
- Melihat tugas.
- Pelajari lebih lanjut opsi pembuatan tugas.