Dokumen ini menjelaskan cara membuat dan menjalankan tugas Batch yang menggunakan fleksibilitas instance. Fleksibilitas instance memungkinkan Anda mengizinkan tugas berjalan pada beberapa jenis mesin yang Anda tentukan dan dapat secara opsional diberi peringkat.
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 probabilitas error ketersediaan resource dan penundaan penjadwalan terkait.
- Memilih resource dengan ketersediaan yang lebih tinggi untuk membantu tugas selesai lebih cepat—misalnya:
- Meningkatkan probabilitas mendapatkan lebih banyak instance untuk tugas yang mendukung pemrosesan paralel.
- Mendapatkan VM Spot yang cenderung tidak 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
Saat tugas menggunakan fleksibilitas instance, semua batasan berikut akan 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
reservationfield harus 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 reservasi.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 instance-nya.
Meskipun menentukan beberapa jenis mesin dalam pilihan instance yang sama bersifat opsional, hal ini diperlukan jika Anda menginginkan resource dengan ketersediaan yang lebih tinggi.
- Batch mencoba memilih satu atau beberapa jenis mesin dengan ketersediaan tertinggi hanya jika pilihan 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 pilihan 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 apa pun 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 verifikasi 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 (subkolom
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 subkolom
policyatau template instance) atau, jika tidak ditentukan, menggunakan nilai default untuk jenis mesin dalam pilihan instance prioritas tertinggi. Oleh karena itu, sebaiknya lakukan semua hal berikut:Verifikasi bahwa jenis disk booting 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 booting persisten secara default.
Jangan tentukan platform CPU minimum atau disk opsional kecuali jika Anda telah memverifikasi bahwa platform CPU minimum atau disk opsional tersebut didukung untuk setiap jenis mesin yang diizinkan.
Membuat tugas yang diizinkan 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
instanceFlexibilityPolicykolom dan subkolom diallocationPolicykolom dalam 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 pilihan instance. Jika tugas memiliki beberapa pilihan instance, pastikan setiap nama dalam tugas ini unik.RANK: Opsional: bilangan bulat nol atau lebih besar yang mewakili prioritas untuk pilihan instance ini, dengan nilai terendah adalah prioritas tertinggi. Jika tidak ditentukan, nilai default-nya adalah0(prioritas tertinggi). Jika tugas memiliki beberapa pilihan instance, pastikan setiap peringkat dalam tugas ini unik.MACHINE_TYPES: daftar yang dipisahkan koma dari satu atau beberapa jenis mesin, yang ditulis sebagai string, untuk pilihan instance ini. Anda dapat menyertakan setiap jenis mesin hanya 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_3dengan jenis mesin—misalnya,e2-micro,e2-small, dann1-standard-2.
Untuk mengetahui informasi selengkapnya, lihat juga contoh tugas.
Saat fitur ini 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 subkolom
di kolom allocationPolicy di isi utama dalam 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 mewakili prioritas untuk pilihan instance ini, dengan nilai terendah adalah prioritas tertinggi. Jika tidak ditentukan, nilai default-nya adalah0(prioritas tertinggi). Jika tugas memiliki beberapa pilihan instance, pastikan setiap peringkat dalam tugas ini unik.MACHINE_TYPES: daftar yang dipisahkan koma dari satu atau beberapa jenis mesin, yang ditulis sebagai string, untuk pilihan instance ini. Anda dapat menyertakan setiap jenis mesin hanya 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_3dengan 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:
- Pilihan 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 opsi pembuatan tugas lainnya .