Membuat VM secara massal dengan fleksibilitas instance

Dokumen ini menjelaskan cara menentukan fleksibilitas instance saat Anda membuat virtual machine (VM) secara massal. Saat membuat spesifikasi ini, Anda menentukan daftar jenis mesin yang sesuai untuk VM, dan Compute Engine menyediakan VM menggunakan salah satu jenis mesin yang ditentukan berdasarkan kapasitas dan ketersediaan 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 Anda rencanakan untuk dibuat, pastikan Anda memiliki kuota yang cukup dan izin yang diperlukan.
  • Siapkan autentikasi jika Anda belum melakukannya. Autentikasi memverifikasi identitas Anda untuk mengakses Google Cloud layanan dan API. Untuk menjalankan kode atau contoh 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

    1. Instal Google Cloud CLI. Setelah penginstalan, inisialisasi Google Cloud CLI dengan menjalankan perintah berikut:

      gcloud init

      Jika 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.create pada project
  • Untuk menggunakan image kustom guna membuat VM: compute.images.useReadOnly pada image
  • Untuk menggunakan snapshot guna membuat VM: compute.snapshots.useReadOnly pada snapshot
  • Untuk menggunakan template instance guna membuat VM: compute.instanceTemplates.useReadOnly pada template instance
  • Untuk menentukan subnet bagi VM Anda: compute.subnetworks.use pada project atau pada subnet yang dipilih
  • Untuk menentukan alamat IP statis bagi VM: compute.addresses.use pada project
  • Untuk menetapkan alamat IP eksternal ke VM saat menggunakan jaringan VPC: compute.subnetworks.useExternalIp pada project atau pada subnet yang dipilih
  • Untuk menetapkan jaringan lama ke VM: compute.networks.use pada project
  • Untuk menetapkan alamat IP eksternal ke VM saat menggunakan jaringan lama: compute.networks.useExternalIp pada project
  • Untuk menetapkan metadata instance VM bagi VM: compute.instances.setMetadata pada project
  • Untuk menetapkan tag bagi VM: compute.instances.setTags pada VM
  • Untuk menetapkan label bagi VM: compute.instances.setLabels pada VM
  • Untuk menetapkan akun layanan yang akan digunakan VM: compute.instances.setServiceAccount pada VM
  • Untuk membuat disk baru bagi VM: compute.disks.create pada project
  • Untuk memasang disk yang sudah ada dalam mode hanya baca atau baca-tulis: compute.disks.use pada disk
  • Untuk memasang disk yang sudah ada dalam mode hanya baca: compute.disks.useReadOnly pada 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 yang memiliki preferensi yang sama.

gcloud

Untuk membuat VM secara massal dengan satu pilihan instance, gunakan gcloud compute instances bulk create perintah dengan --instance-selection-machine-types flag.

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 dibuat
  • NAME_PATTERN: pola nama untuk VM
  • MACHINE_TYPE_1, MACHINE_TYPE_2: jenis mesin yang akan digunakan untuk VM
  • REGION: region tempat VM akan 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 dibuat
  • NAME_PATTERN: pola nama untuk VM
  • MACHINE_TYPE_1, MACHINE_TYPE_2: jenis mesin yang akan digunakan untuk VM
  • IMAGE_PROJECT: project yang berisi image
  • IMAGE: nama image atau image family yang akan digunakan
  • PROJECT_ID: project ID Anda
  • REGION: region tempat VM akan 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 yang lebih rendah). Jika jenis mesin tersebut tidak tersedia, Compute Engine akan menggunakan jenis mesin dengan preferensi yang lebih rendah (peringkat yang lebih tinggi).

Contoh berikut menunjukkan cara menentukan beberapa pilihan instance dengan peringkat.

gcloud

Untuk membuat VM secara massal dengan beberapa pilihan instance, gunakan gcloud compute instances bulk create perintah 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 dibuat
  • NAME_PATTERN: pola nama untuk VM
  • INSTANCE_SELECTION_1: nama untuk pilihan instance pertama
  • INSTANCE_SELECTION_2: nama untuk pilihan instance kedua
  • MACHINE_TYPE_1, MACHINE_TYPE_2: jenis mesin untuk pilihan instance pertama
  • MACHINE_TYPE_3, MACHINE_TYPE_4: jenis mesin untuk pilihan instance kedua
  • REGION: region tempat VM akan 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, masing-masing dengan 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 dibuat
  • NAME_PATTERN: pola penamaan untuk VM
  • INSTANCE_SELECTION_1: nama untuk pilihan instance pertama
  • INSTANCE_SELECTION_2: nama untuk pilihan instance kedua
  • MACHINE_TYPE_1, MACHINE_TYPE_2: jenis mesin untuk pilihan instance pertama
  • MACHINE_TYPE_3, MACHINE_TYPE_4: jenis mesin untuk pilihan instance kedua
  • IMAGE_PROJECT: project yang berisi image
  • IMAGE: nama image atau image family yang akan digunakan
  • PROJECT_ID: project ID Anda
  • REGION: region tempat VM akan 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
      }
    }
  }
}

Menentukan penggantian disk dalam pilihan instance

Secara default, VM yang dibuat oleh permintaan massal menggunakan konfigurasi disk dari instanceProperties. Namun, Anda dapat menentukan konfigurasi disk dalam pilihan instance. Jika Anda menentukan disk dalam pilihan instance, konfigurasi disk tersebut akan mengganti konfigurasi disk di instanceProperties untuk VM yang menggunakan pilihan instance tersebut.

Contoh berikut menunjukkan cara menentukan disk dalam pilihan instance.

REST

Di Compute Engine API, buat permintaan POST ke metode regionInstances.bulkInsert. Dalam isi permintaan, sertakan instanceFlexibilityPolicy dan, untuk entri instanceSelections apa pun, sertakan kolom disks untuk mengganti 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,
        "initializeParams": {
          "sourceImage": "projects/IMAGE_PROJECT/global/images/IMAGE"
        }
      }
    ],
    "networkInterfaces": [{}]
  },
  "instanceFlexibilityPolicy": {
    "instanceSelections": {
      "INSTANCE_SELECTION_1": {
        "machineTypes": [
          "MACHINE_TYPE_1",
          "MACHINE_TYPE_2"
        ],
        "disks": [
          {
            "type": "PERSISTENT",
            "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"
        ],
        "disks": [
          {
            "type": "PERSISTENT",
            "initializeParams": {
              "diskType": "hyperdisk-balanced",
              "diskSizeGb": 50,
              "sourceImage": "projects/IMAGE_PROJECT_2/global/images/IMAGE_2"
            },
            "boot": true
          },
          {
            "type": "PERSISTENT",
            "initializeParams": {
              "diskType": "hyperdisk-balanced",
              "diskSizeGb": 128,
              "sourceImage": "projects/IMAGE_PROJECT_3/global/images/IMAGE_1"
            }
          }
        ]
      }
    }
  }
}

Ganti kode berikut:

  • COUNT: jumlah VM yang akan dibuat
  • NAME_PATTERN: pola penamaan untuk VM
  • INSTANCE_SELECTION_1: nama untuk pilihan instance pertama
  • INSTANCE_SELECTION_2: nama untuk pilihan instance kedua
  • MACHINE_TYPE_1, MACHINE_TYPE_2, MACHINE_TYPE_3: jenis mesin yang akan digunakan untuk VM
  • IMAGE_PROJECT: project yang berisi image
  • IMAGE: nama image atau image family yang akan digunakan
  • PROJECT_ID: project ID Anda
  • REGION: region tempat VM akan dibuat