Dokumen ini menjelaskan cara mengonfigurasi fleksibilitas instance saat Anda membuat virtual machine (VM) secara massal. Fleksibilitas instance memungkinkan Anda menentukan beberapa jenis mesin, mengurutkannya berdasarkan preferensi, dan mengganti setelan platform CPU minimum dan disk untuk setiap pilihan sehingga Compute Engine dapat menyediakan VM berdasarkan ketersediaan kapasitas dan kuota di suatu region.
Untuk mengetahui informasi selengkapnya tentang fleksibilitas instance untuk VM yang dibuat secara massal, lihat Tentang fleksibilitas instance untuk VM yang dibuat secara massal.
Sebelum memulai
- Untuk VM dan resource terkait yang akan Anda buat, pastikan Anda memiliki kuota yang cukup.
- Jika Anda ingin membuat Spot VM secara massal, lihat ketersediaan resource sebelum membuat VM. Memeriksa ketersediaan resource membantu mengurangi kemungkinan Anda mengalami error ketersediaan resource saat membuat VM. Untuk mendapatkan petunjuk, lihat artikel Melihat ketersediaan resource Spot VM.
-
Siapkan autentikasi jika Anda belum melakukannya.
Autentikasi memverifikasi identitas Anda untuk mengakses layanan Google Cloud dan API. Untuk menjalankan
kode atau sampel dari lingkungan pengembangan lokal, Anda dapat melakukan autentikasi ke
Compute Engine dengan memilih salah satu opsi berikut:
Pilih tab untuk melihat bagaimana Anda berencana menggunakan contoh di halaman ini:
gcloud
-
Instal Google Cloud CLI. Setelah penginstalan, inisialisasi Google Cloud CLI dengan menjalankan perintah berikut:
gcloud initJika Anda menggunakan penyedia identitas (IdP) eksternal, Anda harus login ke gcloud CLI dengan identitas gabungan Anda terlebih dahulu.
-
- Tetapkan region dan zona default.
REST
Untuk menggunakan contoh REST API di halaman ini dalam lingkungan pengembangan lokal, gunakan kredensial yang Anda berikan ke gcloud CLI.
Instal Google Cloud CLI.
Jika Anda menggunakan penyedia identitas (IdP) eksternal, Anda harus login ke gcloud CLI dengan identitas gabungan Anda terlebih dahulu.
Untuk mengetahui informasi selengkapnya, lihat Melakukan autentikasi untuk menggunakan REST dalam dokumentasi autentikasi Google Cloud .
Peran yang diperlukan
Agar mendapatkan izin yang Anda perlukan untuk membuat VM secara massal, minta administrator untuk memberi Anda peran IAM Compute Instance Admin (v1) (roles/compute.instanceAdmin.v1) di project.
Untuk mengetahui informasi selengkapnya tentang cara memberikan peran, lihat Mengelola akses ke project, folder, dan organisasi.
Peran bawaan ini berisi izin yang diperlukan untuk membuat VM secara massal. Untuk melihat izin yang benar-benar diperlukan, perluas bagian Izin yang diperlukan:
Izin yang diperlukan
Izin berikut diperlukan untuk membuat VM secara massal:
-
compute.instances.createdi project -
Untuk menggunakan image kustom guna membuat VM:
compute.images.useReadOnlypada image -
Untuk menggunakan snapshot guna membuat VM:
compute.snapshots.useReadOnlypada snapshot -
Untuk menggunakan template instance guna membuat VM:
compute.instanceTemplates.useReadOnlypada template instance -
Untuk menentukan subnet bagi VM Anda:
compute.subnetworks.usedi project atau di subnet yang dipilih -
Untuk menentukan alamat IP statis untuk VM:
compute.addresses.usepada project -
Untuk menetapkan alamat IP eksternal ke VM saat menggunakan jaringan VPC:
compute.subnetworks.useExternalIpdi project atau di subnet yang dipilih -
Untuk menetapkan jaringan lama ke VM:
compute.networks.usepada project -
Untuk menetapkan alamat IP eksternal ke VM saat menggunakan jaringan lama:
compute.networks.useExternalIpdi project -
Untuk menetapkan metadata instance VM bagi VM:
compute.instances.setMetadatadi project -
Untuk menyetel tag untuk VM:
compute.instances.setTagsdi VM -
Untuk menetapkan label bagi VM:
compute.instances.setLabelsdi VM -
Untuk menetapkan akun layanan yang akan digunakan VM:
compute.instances.setServiceAccountdi VM -
Untuk membuat disk baru untuk VM:
compute.disks.createpada project -
Untuk memasang disk yang ada dalam mode hanya baca atau baca-tulis:
compute.disks.usepada disk -
Untuk memasang disk yang ada dalam mode hanya baca:
compute.disks.useReadOnlypada disk
Anda mungkin juga bisa mendapatkan izin ini dengan peran khusus atau peran bawaan lainnya.
Membuat VM dengan beberapa jenis mesin yang memiliki preferensi yang sama
Jika workload Anda dapat beroperasi pada beberapa jenis mesin yang berbeda, Anda dapat menentukan daftar semua jenis mesin yang kompatibel dalam satu pilihan instance. Contoh berikut menunjukkan cara menentukan beberapa jenis mesin dengan preferensi yang sama.
gcloud
Untuk membuat VM secara massal dengan pemilihan instance tunggal, gunakan perintah gcloud compute instances bulk createdengan flag --instance-selection-machine-types.
gcloud compute instances bulk create \
--name-pattern=NAME_PATTERN \
--region=REGION \
--count=COUNT \
--instance-selection-machine-types=MACHINE_TYPE_1,MACHINE_TYPE_2
Ganti kode berikut:
COUNT: jumlah VM yang akan dibuatNAME_PATTERN: pola nama untuk VMMACHINE_TYPE_1,MACHINE_TYPE_2: jenis mesin yang akan digunakan untuk VMREGION: region tempat VM dibuat
Contoh
gcloud compute instances bulk create \
--name-pattern=test-bulk-# \
--region=us-central1 \
--count=10 \
--instance-selection-machine-types=c3-standard-8,n2-standard-8,c2-standard-8
REST
Di Compute Engine API, buat permintaan POST ke
metode regionInstances.bulkInsert.
Dalam isi permintaan, sertakan instanceFlexibilityPolicy dengan satu
entri instanceSelections yang mencantumkan jenis mesin.
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instances/bulkInsert
{
"count": COUNT,
"namePattern": "NAME_PATTERN",
"instanceProperties": {
"disks": [
{
"boot": true,
"initializeParams": {
"sourceImage": "projects/IMAGE_PROJECT/global/images/IMAGE"
}
}
],
"networkInterfaces": [{}]
},
"instanceFlexibilityPolicy": {
"instanceSelections": {
"selection-1": {
"machineTypes": [
"MACHINE_TYPE_1",
"MACHINE_TYPE_2"
]
}
}
}
}
Ganti kode berikut:
COUNT: jumlah VM yang akan dibuatNAME_PATTERN: pola nama untuk VMMACHINE_TYPE_1,MACHINE_TYPE_2: jenis mesin yang akan digunakan untuk VMIMAGE_PROJECT: project yang berisi imageIMAGE: nama image atau kelompok image yang akan digunakanPROJECT_ID: project ID AndaREGION: region tempat VM dibuat
Contoh
POST https://compute.googleapis.com/compute/v1/projects/my-project/regions/us-central1/instances/bulkInsert
{
"count": 10,
"namePattern": "test-bulk-#",
"instanceProperties": {
"disks": [
{
"boot": true,
"initializeParams": {
"sourceImage": "projects/debian-cloud/global/images/debian-12"
}
}
],
"networkInterfaces": [{}]
},
"instanceFlexibilityPolicy": {
"instanceSelections": {
"selection-1": {
"machineTypes": [
"c3-standard-8",
"n2-standard-8",
"c2-standard-8"
]
}
}
}
}
Membuat VM dengan beberapa jenis mesin yang diberi peringkat berdasarkan preferensi
Jika Anda ingin Compute Engine memilih jenis mesin dalam urutan tertentu, Anda dapat mengonfigurasi beberapa pilihan instance. Setiap pilihan instance mencakup daftar jenis mesin dan peringkat, yang merupakan bilangan bulat yang menentukan preferensi untuk jenis mesin. Peringkat yang lebih rendah menunjukkan preferensi yang lebih tinggi. Compute Engine mencoba membuat VM menggunakan jenis mesin dengan preferensi yang lebih tinggi (peringkat lebih rendah). Jika jenis mesin tersebut tidak tersedia, Compute Engine akan menggunakan jenis mesin dengan preferensi yang lebih rendah (peringkat lebih tinggi).
Contoh berikut menunjukkan cara menentukan beberapa pilihan instance dengan peringkat.
gcloud
Untuk membuat VM secara massal dengan beberapa pilihan instance, gunakan perintah gcloud compute instances bulk create dan tentukan flag --instance-selection beberapa kali.
gcloud compute instances bulk create \
--name-pattern=NAME_PATTERN \
--region=REGION \
--count=COUNT \
--instance-selection "name=INSTANCE_SELECTION_1,rank=0,machine-type=MACHINE_TYPE_1,machine-type=MACHINE_TYPE_2" \
--instance-selection "name=INSTANCE_SELECTION_2,rank=1,machine-type=MACHINE_TYPE_3,machine-type=MACHINE_TYPE_4"
Ganti kode berikut:
COUNT: jumlah VM yang akan dibuatNAME_PATTERN: pola nama untuk VMINSTANCE_SELECTION_1: nama untuk pilihan instance pertamaINSTANCE_SELECTION_2: nama untuk pilihan instance keduaMACHINE_TYPE_1,MACHINE_TYPE_2: jenis mesin untuk pilihan instance pertamaMACHINE_TYPE_3,MACHINE_TYPE_4: jenis mesin untuk pilihan instance keduaREGION: region tempat VM dibuat
Contoh
gcloud compute instances bulk create \
--name-pattern=test-bulk-# \
--region=us-central1 \
--count=10 \
--instance-selection "name=most-preferred,rank=0,machine-type=c3-standard-16,machine-type=n2-standard-16,machine-type=c2-standard-16" \
--instance-selection "name=least-preferred,rank=1,machine-type=c3-standard-8,machine-type=n2-standard-8,machine-type=c2-standard-8"
REST
Di Compute Engine API, buat permintaan POST ke
metode regionInstances.bulkInsert.
Dalam isi permintaan, sertakan instanceFlexibilityPolicy dan tentukan
beberapa entri di instanceSelections, yang masing-masing memiliki daftar jenis mesin
dan rank.
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instances/bulkInsert
{
"count": COUNT,
"namePattern": "NAME_PATTERN",
"instanceProperties": {
"disks": [
{
"boot": true,
"initializeParams": {
"sourceImage": "projects/IMAGE_PROJECT/global/images/IMAGE"
}
}
],
"networkInterfaces": [{}]
},
"instanceFlexibilityPolicy": {
"instanceSelections": {
"INSTANCE_SELECTION_1": {
"machineTypes": [
"MACHINE_TYPE_1",
"MACHINE_TYPE_2"
],
"rank": 1
},
"INSTANCE_SELECTION_2": {
"machineTypes": [
"MACHINE_TYPE_3",
"MACHINE_TYPE_4"
],
"rank": 2
}
}
}
}
Ganti kode berikut:
COUNT: jumlah VM yang akan dibuatNAME_PATTERN: pola penamaan untuk VMINSTANCE_SELECTION_1: nama untuk pilihan instance pertamaINSTANCE_SELECTION_2: nama untuk pilihan instance keduaMACHINE_TYPE_1,MACHINE_TYPE_2: jenis mesin untuk pilihan instance pertamaMACHINE_TYPE_3,MACHINE_TYPE_4: jenis mesin untuk pilihan instance keduaIMAGE_PROJECT: project yang berisi imageIMAGE: nama image atau kelompok image yang akan digunakanPROJECT_ID: project ID AndaREGION: region tempat VM dibuat
Contoh
POST https://compute.googleapis.com/compute/v1/projects/my-project/regions/us-central1/instances/bulkInsert
{
"count": 10,
"namePattern": "test-bulk-#",
"instanceProperties": {
"disks": [
{
"boot": true,
"initializeParams": {
"sourceImage": "projects/debian-cloud/global/images/debian-12"
}
}
],
"networkInterfaces": [{}]
},
"instanceFlexibilityPolicy": {
"instanceSelections": {
"most-preferred": {
"machineTypes": [
"c3-standard-16",
"c2-standard-16"
],
"rank": 1
},
"least-preferred": {
"machineTypes": [
"n2-standard-16",
"c3-standard-8",
"n2-standard-8",
"c2-standard-8"
],
"rank": 2
}
}
}
}
Membuat VM dengan beberapa jenis mesin, platform CPU minimum, dan penggantian disk
Selain menentukan jenis dan peringkat mesin, Anda dapat mengganti
platform CPU minimum dan
mengganti atau menambahkan definisi disk di instanceProperties untuk setiap
pilihan instance. Misalnya, jika instanceProperties menentukan Persistent Disk
dan Anda memilih seri mesin N4, Anda harus mengganti boot disk dengan
jenis Google Cloud Hyperdisk yang didukung.
Untuk mengetahui informasi selengkapnya tentang jenis disk yang didukung dan cara Compute Engine menerapkan penggantian, lihat referensi berikut:
- Dukungan seri mesin untuk Persistent Disk
- Dukungan seri mesin untuk Hyperdisk
- Penggantian properti instance dalam pilihan instance
Untuk membuat VM secara massal dengan beberapa jenis mesin, platform CPU minimum, dan penggantian disk, pilih salah satu opsi berikut:
gcloud
Untuk membuat VM secara massal dengan beberapa jenis mesin, platform CPU minimum, dan penggantian disk, gunakan perintah gcloud compute instances bulk createdengan flag --instance-flexibility-policy. Untuk mengganti boot disk default dari
instanceProperties, sertakan juga flag --boot-disk-device-name dan
tentukan deviceName yang sama dalam pemilihan instance:
gcloud compute instances bulk create \
--name-pattern=NAME_PATTERN \
--region=REGION \
--count=COUNT \
--boot-disk-device-name=BOOT_DISK_DEVICE_NAME \
--instance-flexibility-policy='{"instanceSelections":
{"INSTANCE_SELECTION_1":{"rank":RANK_1,"machineTypes":["MACHINE_TYPE_1","MACHINE_TYPE_2"],"minCpuPlatform":"MIN_CPU_PLATFORM_1","disks":[{"deviceName":"BOOT_DISK_DEVICE_NAME_1","boot":true,"initializeParams":{"diskType":"DISK_TYPE_1","diskSizeGb":DISK_SIZE_1,"sourceImage":"projects/IMAGE_PROJECT_1/global/images/IMAGE_1"}}]},
"INSTANCE_SELECTION_2":{"rank":RANK_2,"machineTypes":["MACHINE_TYPE_3"],"minCpuPlatform":"MIN_CPU_PLATFORM_2","disks":[{"deviceName":"BOOT_DISK_DEVICE_NAME_2","boot":true,"initializeParams":{"diskType":"DISK_TYPE_2","diskSizeGb":DISK_SIZE_2,"sourceImage":"projects/IMAGE_PROJECT_2/global/images/IMAGE_2"}}]}}}'
Atau, untuk mengonfigurasi kebijakan fleksibilitas instance menggunakan file YAML
atau JSON, gunakan
flag --flags-file, bukan
flag --instance-flexibility-policy:
gcloud compute instances bulk create \
--name-pattern=NAME_PATTERN \
--region=REGION \
--count=COUNT \
--boot-disk-device-name=BOOT_DISK_DEVICE_NAME \
--flags-file=FILE_NAME.yaml
Ganti kode berikut:
COUNT: jumlah VM yang akan dibuatNAME_PATTERN: pola nama untuk VMREGION: region tempat VM dibuatBOOT_DISK_DEVICE_NAME: nama perangkat untuk boot disk default diinstancePropertiesINSTANCE_SELECTION_1,INSTANCE_SELECTION_2: nama pilihan instanceRANK_1,RANK_2: angka opsional yang menunjukkan urutan preferensi Anda untuk setiap pilihan instance; nilai yang lebih rendah menunjukkan preferensi yang lebih tinggiMACHINE_TYPE_1,MACHINE_TYPE_2: jenis mesin untuk pilihan instance pertamaMACHINE_TYPE_3: jenis mesin untuk pilihan instance keduaMIN_CPU_PLATFORM_1,MIN_CPU_PLATFORM_2: platform CPU minimum opsional untuk VM di setiap pilihan instanceBOOT_DISK_DEVICE_NAME_1,BOOT_DISK_DEVICE_NAME_2: nama perangkat untuk boot disk di setiap pilihan instance; untuk mengganti boot disk default, tentukan nama yang sama denganBOOT_DISK_DEVICE_NAMEDISK_TYPE_1,DISK_TYPE_2: jenis disk untuk penggantian disk, sepertipd-ssdatauhyperdisk-balancedDISK_SIZE_1,DISK_SIZE_2: ukuran disk untuk penggantian diskIMAGE_PROJECT_1,IMAGE_PROJECT_2: project yang berisi image untuk penggantian diskIMAGE_1,IMAGE_2: nama image atau kelompok image untuk penggantian diskFILE_NAME.yaml: nama file YAML atau JSON yang berisi konfigurasi--instance-flexibility-policy
Contoh
Contoh berikut membuat 10 VM menggunakan dua pilihan instance yang menentukan platform CPU minimum, mengganti boot disk default, dan melampirkan disk tambahan:
gcloud compute instances bulk create \
--name-pattern=test-bulk-# \
--region=us-central1 \
--count=10 \
--boot-disk-device-name=boot-disk \
--instance-flexibility-policy='{"instanceSelections":
{"selection-1":{"machineTypes":["n2-standard-8","c2-standard-8"],"minCpuPlatform":"Intel Cascade Lake","disks":[{"type":"PERSISTENT","deviceName":"boot-disk","boot":true,"initializeParams":{"diskType":"pd-ssd","diskSizeGb":50,"sourceImage":"projects/debian-cloud/global/images/family/debian-12"}},{"type":"SCRATCH","initializeParams":{"diskType":"local-ssd"}}]},
"selection-2":{"machineTypes":["c4a-standard-8"],"disks":[{"type":"PERSISTENT","deviceName":"boot-disk","boot":true,"initializeParams":{"diskType":"hyperdisk-balanced","diskSizeGb":50,"sourceImage":"projects/debian-cloud/global/images/family/debian-12-arm64"}},{"type":"PERSISTENT","deviceName":"data-disk","initializeParams":{"diskType":"hyperdisk-balanced","diskSizeGb":128}}]}}}'
Atau, jika menggunakan tanda --flags-file, Anda dapat menentukan kebijakan fleksibilitas instance yang sama dalam file YAML:
--instance-flexibility-policy:
instanceSelections:
selection-1:
machineTypes:
- n2-standard-8
- c2-standard-8
minCpuPlatform: Intel Cascade Lake
disks:
- type: PERSISTENT
deviceName: boot-disk
boot: true
initializeParams:
diskType: pd-ssd
diskSizeGb: 50
sourceImage: projects/debian-cloud/global/images/family/debian-12
- type: SCRATCH
initializeParams:
diskType: local-ssd
selection-2:
machineTypes:
- c4a-standard-8
disks:
- type: PERSISTENT
deviceName: boot-disk
boot: true
initializeParams:
diskType: hyperdisk-balanced
diskSizeGb: 50
sourceImage: projects/debian-cloud/global/images/family/debian-12-arm64
- type: PERSISTENT
deviceName: data-disk
initializeParams:
diskType: hyperdisk-balanced
diskSizeGb: 128
REST
Di Compute Engine API, buat permintaan POST ke
metode regionInstances.bulkInsert.
Di setiap entri instanceSelections dari instanceFlexibilityPolicy, sertakan
kolom minCpuPlatform untuk mengganti instanceProperties.minCpuPlatform,
dan sertakan kolom disks untuk mengganti atau menambahkan ke
instanceProperties.disks:
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instances/bulkInsert
{
"count": COUNT,
"namePattern": "NAME_PATTERN",
"instanceProperties": {
"disks": [
{
"boot": true,
"deviceName": "boot-disk",
"initializeParams": {
"sourceImage": "projects/IMAGE_PROJECT/global/images/IMAGE"
}
}
],
"networkInterfaces": [{}]
},
"instanceFlexibilityPolicy": {
"instanceSelections": {
"INSTANCE_SELECTION_1": {
"machineTypes": [
"MACHINE_TYPE_1",
"MACHINE_TYPE_2"
],
"minCpuPlatform": "MIN_CPU_PLATFORM_1",
"disks": [
{
"type": "PERSISTENT",
"deviceName": "boot-disk",
"initializeParams": {
"diskType": "pd-ssd",
"diskSizeGb": 50,
"sourceImage": "projects/IMAGE_PROJECT_1/global/images/IMAGE_1"
},
"boot": true
},
{
"type": "SCRATCH",
"initializeParams": {
"diskType": "local-ssd"
}
}
]
},
"INSTANCE_SELECTION_2": {
"machineTypes": [
"MACHINE_TYPE_3"
],
"minCpuPlatform": "MIN_CPU_PLATFORM_2",
"disks": [
{
"type": "PERSISTENT",
"deviceName": "boot-disk",
"initializeParams": {
"diskType": "hyperdisk-balanced",
"diskSizeGb": 50,
"sourceImage": "projects/IMAGE_PROJECT_2/global/images/IMAGE_2"
},
"boot": true
},
{
"type": "PERSISTENT",
"deviceName": "data-disk",
"initializeParams": {
"diskType": "hyperdisk-balanced",
"diskSizeGb": 128,
"sourceImage": "projects/IMAGE_PROJECT_3/global/images/IMAGE_3"
}
}
]
}
}
}
}
Ganti kode berikut:
COUNT: jumlah VM yang akan dibuatNAME_PATTERN: pola penamaan untuk VMINSTANCE_SELECTION_1: nama untuk pilihan instance pertamaINSTANCE_SELECTION_2: nama untuk pilihan instance keduaMACHINE_TYPE_1,MACHINE_TYPE_2: jenis mesin untuk pilihan instance pertamaMACHINE_TYPE_3: jenis mesin untuk pilihan instance keduaMIN_CPU_PLATFORM_1,MIN_CPU_PLATFORM_2: platform CPU minimum opsional untuk VM di setiap pilihan instanceIMAGE_PROJECT: project yang berisi image booting default diinstancePropertiesIMAGE: nama image boot default atau kelompok image diinstancePropertiesIMAGE_PROJECT_1,IMAGE_PROJECT_2,IMAGE_PROJECT_3: project yang berisi image untuk penggantian diskIMAGE_1,IMAGE_2,IMAGE_3: nama image untuk penggantian diskPROJECT_ID: project ID AndaREGION: region tempat VM dibuat
Contoh
Contoh berikut membuat 10 VM menggunakan dua pilihan instance yang menentukan platform CPU minimum, mengganti boot disk default, dan melampirkan disk tambahan:
POST https://compute.googleapis.com/compute/v1/projects/my-project/regions/us-central1/instances/bulkInsert
{
"count": 10,
"namePattern": "test-bulk-#",
"instanceProperties": {
"disks": [
{
"boot": true,
"deviceName": "boot-disk",
"initializeParams": {
"sourceImage": "projects/debian-cloud/global/images/family/debian-12"
}
}
],
"networkInterfaces": [{}]
},
"instanceFlexibilityPolicy": {
"instanceSelections": {
"selection-1": {
"machineTypes": [
"n2-standard-8",
"c2-standard-8"
],
"minCpuPlatform": "Intel Cascade Lake",
"disks": [
{
"type": "PERSISTENT",
"deviceName": "boot-disk",
"initializeParams": {
"diskType": "pd-ssd",
"diskSizeGb": 50,
"sourceImage": "projects/debian-cloud/global/images/family/debian-12"
},
"boot": true
},
{
"type": "SCRATCH",
"initializeParams": {
"diskType": "local-ssd"
}
}
]
},
"selection-2": {
"machineTypes": [
"c4a-standard-8"
],
"disks": [
{
"type": "PERSISTENT",
"deviceName": "boot-disk",
"initializeParams": {
"diskType": "hyperdisk-balanced",
"diskSizeGb": 50,
"sourceImage": "projects/debian-cloud/global/images/family/debian-12-arm64"
},
"boot": true
},
{
"type": "PERSISTENT",
"deviceName": "data-disk",
"initializeParams": {
"diskType": "hyperdisk-balanced",
"diskSizeGb": 128
}
}
]
}
}
}
}