使用執行個體彈性大量建立 VM

本文說明如何大量建立虛擬機器 (VM) 時,指定執行個體彈性。指定這項設定時,您會指定適合 VM 的機型清單,而 Compute Engine 會根據區域的容量和配額可用性,使用任何指定的機型佈建 VM。

如要進一步瞭解大量建立的 VM 執行個體彈性,請參閱「大量建立的 VM 執行個體彈性簡介」。

事前準備

  • 如要建立 VM 和任何相關資源,請確認您有足夠的配額必要權限
  • 如果尚未設定驗證,請先完成設定。 驗證可確認您的身分,以便存取 Google Cloud 服務和 API。如要從本機開發環境執行程式碼或範例,可以選取下列任一選項,向 Compute Engine 進行驗證:

    Select the tab for how you plan to use the samples on this page:

    gcloud

    1. 安裝 Google Cloud CLI。 完成後,執行下列指令來初始化 Google Cloud CLI:

      gcloud init

      若您採用的是外部識別資訊提供者 (IdP),請先使用聯合身分登入 gcloud CLI

    2. Set a default region and zone.

    REST

    如要在本機開發環境中使用本頁的 REST API 範例,請使用您提供給 gcloud CLI 的憑證。

      安裝 Google Cloud CLI。 完成後,執行下列指令來初始化 Google Cloud CLI:

      gcloud init

      若您採用的是外部識別資訊提供者 (IdP),請先使用聯合身分登入 gcloud CLI

    詳情請參閱 Google Cloud 驗證說明文件中的「使用 REST 進行驗證」。

必要的角色

如要取得大量建立 VM 的權限,請要求管理員授予您專案的 Compute 執行個體管理員 (v1) (roles/compute.instanceAdmin.v1) IAM 角色。如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和組織的存取權」。

這個預先定義的角色具備大量建立 VM 的權限。如要查看確切的必要權限,請展開「Required permissions」(必要權限) 部分:

所需權限

如要大量建立 VM,您必須具備下列權限:

  • 專案的 compute.instances.create
  • 如要使用自訂映像檔建立 VM: compute.images.useReadOnly 在映像檔上
  • 如要使用快照建立 VM: compute.snapshots.useReadOnly 快照
  • 如要使用執行個體範本建立 VM,請按照下列步驟操作: compute.instanceTemplates.useReadOnly 在執行個體範本上
  • 如要為 VM 指定子網路,請在專案或所選子網路上授予 compute.subnetworks.use 權限。
  • 如要為 VM 指定靜態 IP 位址: 專案的 compute.addresses.use
  • 使用虛擬私有雲網路時,如要將外部 IP 位址指派給 VM: compute.subnetworks.useExternalIp 專案或所選子網路的權限
  • 如要將舊版網路指派給 VM,請按照下列步驟操作: compute.networks.use 專案的
  • 使用舊版網路時,如要將外部 IP 位址指派給 VM,請在專案中設定 compute.networks.useExternalIp
  • 如要為 VM 設定 VM 執行個體中繼資料,請在專案中執行下列指令: compute.instances.setMetadata
  • 如要為 VM 設定標記,請按照下列步驟操作: compute.instances.setTags 在 VM 上
  • 如要為 VM 設定標籤,請按照下列步驟操作: compute.instances.setLabels 在 VM 上
  • 如要設定 VM 使用的服務帳戶,請執行下列操作: compute.instances.setServiceAccount 在 VM 上
  • 為 VM 建立新磁碟: compute.disks.create 專案
  • 如要以唯讀或讀寫模式附加現有磁碟: 磁碟的 compute.disks.use
  • 如要以唯讀模式連接現有磁碟: compute.disks.useReadOnly 磁碟的權限

您或許還可透過自訂角色或其他預先定義的角色取得這些權限。

建立偏好程度相同的多個機型 VM

如果工作負載可使用多種不同的機器類型,您可以在單一執行個體選取作業中,指定所有相容的機器類型清單。以下範例說明如何指定多個偏好程度相同的機器類型。

gcloud

如要透過單一執行個體選取作業大量建立 VM,請使用 gcloud compute instances bulk create 指令搭配 --instance-selection-machine-types 旗標。

gcloud compute instances bulk create \
    --name-pattern=test-bulk-# \
    --region=REGION \
    --count=COUNT \
    --instance-selection-machine-types=c3-standard-8,n2-standard-8,c2-standard-8

REST

在 Compute Engine API 中,向 regionInstances.bulkInsert 方法發出 POST 要求。在要求主體中,請納入 instanceFlexibilityPolicy,並包含列出機器類型的 instanceSelections 項目。

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instances/bulkInsert
{
  "count": COUNT,
  "namePattern": "test-bulk-#",
  "instanceFlexibilityPolicy": {
    "instanceSelections": {
      "selection-1": {
        "machineTypes": [
          "c3-standard-8",
          "n2-standard-8",
          "c2-standard-8"
        ]
      }
    }
  }
}

更改下列內容:

  • COUNT:要建立的 VM 數量。
  • PROJECT_ID:您的專案 ID。
  • REGION:要建立 VM 的區域。

建立 VM,並按照偏好順序排列多個機型

如要讓 Compute Engine 依特定順序選擇機器類型,可以設定多個執行個體選項。每個執行個體選項都包含機型清單和等級 (定義機型偏好的整數)。排名越低,偏好程度越高。 Compute Engine 會嘗試使用偏好順序較高 (排名較低) 的機器類型建立 VM。如果這些機器類型無法使用,Compute Engine 會使用偏好程度較低的機器類型 (排名較高)。

下列範例說明如何使用等級指定多個執行個體選項。

gcloud

如要使用多個執行個體選項大量建立 VM,請使用 gcloud compute instances bulk create 指令,並多次指定 --instance-selection 旗標。

gcloud beta compute instances bulk create \
    --name-pattern=test-bulk-# \
    --region=REGION \
    --count=COUNT \
    --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

在 Compute Engine API 中,向 regionInstances.bulkInsert 方法發出 POST 要求。在要求主體中加入 instanceFlexibilityPolicy,並在 instanceSelections 中指定多個項目,每個項目都包含機器類型清單和 rank

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instances/bulkInsert
{
  "count": COUNT,
  "namePattern": "test-bulk-#",
  "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
      }
    }
  }
}

更改下列內容:

  • COUNT:要建立的 VM 數量。
  • PROJECT_ID:您的專案 ID。
  • REGION:要建立 VM 的區域。

在選取的執行個體中指定磁碟覆寫

根據預設,大量要求建立的 VM 會使用 instanceProperties 中的磁碟設定。不過,您可以在執行個體選取範圍內指定磁碟設定。如果您在執行個體選取項目中指定磁碟,則該磁碟設定會覆寫 instanceProperties 中使用該執行個體選取項目的 VM 磁碟設定。

以下範例說明如何在執行個體選取項目中指定磁碟。

REST

在 Compute Engine API 中,向 regionInstances.bulkInsert 方法發出 POST 要求。在要求主體中加入 instanceFlexibilityPolicy,並為任何 instanceSelections 項目加入 disks 欄位,以覆寫 instanceProperties.disks

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instances/bulkInsert
{
  "count": COUNT,
  "namePattern": "test-bulk-#",
  "instanceFlexibilityPolicy": {
    "instanceSelections": {
      "selection-1": {
        "machineTypes": [
          "n2-standard-8",
          "c2-standard-8"
        ],
        "disks": [
          {
            "type": "PERSISTENT",
            "initializeParams": {
              "diskType": "pd-ssd",
              "diskSizeGb": 50,
              "sourceImage": "IMAGE_URL"
            },
            "boot": true
          },
          {
            "type": "SCRATCH",
            "initializeParams": {
              "diskType": "local-ssd"
            }
          }
        ]
      },
      "selection-2": {
        "machineTypes": [
          "c3-standard-8"
        ],
        "disks": [
          {
            "type": "PERSISTENT",
            "initializeParams": {
              "diskType": "hyperdisk-balanced",
              "diskSizeGb": 50,
              "sourceImage": "IMAGE_URL"
            },
            "boot": true
          },
          {
            "type": "PERSISTENT",
            "initializeParams": {
              "diskType": "hyperdisk-balanced",
              "diskSizeGb": 128,
              "sourceImage": "IMAGE_URL"
            }
          }
        ]
      }
    }
  }
}

更改下列內容:

  • COUNT:要建立的 VM 數量。
  • IMAGE_URL:開機磁碟映像檔的網址。
  • PROJECT_ID:您的專案 ID。
  • REGION:要建立 VM 的區域。