建立使用大量模式的 MIG

本文說明如何在 MIG 中使用大量模式,同時建立所有需要的虛擬機器 (VM) 執行個體。一次建立所有執行個體,可確保 MIG 只在所有必要資源都可用時建立執行個體。

如要瞭解大量模式的運作方式,請參閱「關於在 MIG 中大量建立執行個體」。

建立執行個體範本

MIG 的大量模式僅支援指定「取決於預留項目」或「彈性啟動」佈建模式的執行個體範本。如要使用大量模式,請按照下列各節所述,使用其中一種佈建模型建立執行個體範本。如要進一步瞭解佈建模式,請參閱「Compute Engine 執行個體佈建模式」。

使用「取決於預留項目」佈建模式

如要建立執行個體範本,請選取下列任一選項:

控制台

  1. 前往 Cloud de Confiance 控制台的「Instance templates」(執行個體範本) 頁面。

    前往「Instance templates」(執行個體範本)

  2. 按一下「建立執行個體範本」。「建立執行個體範本」頁面隨即開啟。

  3. 在「Name」(名稱) 欄位中,輸入執行個體範本的名稱。

  4. 在「位置」部分中,選取下列其中一個選項:

    • 如要建立區域執行個體範本,請選取「區域 (建議)」,然後選取要建立範本的區域。

    • 如要建立全域執行個體範本,請選取「Global」(全域)

  5. 在「機器設定」部分,指定機型。

  6. 在「Provisioning model」(佈建模型) 部分,完成下列步驟:

    1. 展開「VM 佈建模式進階設定」

    2. 在「On VM termination」(在 VM 終止時) 清單中,選取「Delete」(刪除)

  7. (選用) 如要變更預設開機磁碟類型或映像檔,請按一下「Boot disk」(開機磁碟) 部分中的「Change」(變更)。然後按照提示變更開機磁碟。

  8. 展開「Advanced options」(進階選項) 區段,然後執行下列操作:

    1. 展開「管理」部分。

    2. 在「Reservations」(預留項目) 部分,選取「Choose a reservation」(選取預留項目),然後點選「Choose reservation」(選取預留項目)。在隨即顯示的窗格中,按照提示選取要使用的預訂。

  9. 點選「建立」

gcloud

如要建立執行個體範本,請使用 instance-templates create 指令,並設定下列旗標:

  • --instance-termination-action 旗標設為 DELETE

  • --maintenance-policy 旗標設為 TERMINATE

  • --provisioning-model 旗標設為 RESERVATION_BOUND

  • --reservation-affinity 旗標設為 specific

  • --reservation 標記。

以下範例指令會建立區域執行個體範本。如要建立全域執行個體範本,請使用相同指令,但不要加上 --instance-template-region 旗標。

gcloud compute instance-templates create INSTANCE_TEMPLATE_NAME \
    --image-project=IMAGE_PROJECT \
    --image-family=IMAGE_FAMILY \
    --instance-termination-action=DELETE \
    --instance-template-region=REGION \
    --machine-type=MACHINE_TYPE \
    --maintenance-policy=TERMINATE \
    --provisioning-model=RESERVATION_BOUND \
    --reservation-affinity=specific \
    --reservation=RESERVATION_URL

更改下列內容:

  • INSTANCE_TEMPLATE_NAME:要建立的執行個體範本名稱。

  • IMAGE_PROJECT:包含映像檔的映像檔專案,例如 debian-cloud。如要進一步瞭解支援的映像檔專案,請參閱「公開映像檔」。

  • IMAGE_FAMILY映像檔系列。指定映像檔系列,即可使用未淘汰的最新作業系統映像檔。舉例來說,如果您指定 debian-12,系統會使用 Debian 12 映像檔系列中的最新版本。如要進一步瞭解如何使用映像檔系列,請參閱「映像檔系列最佳做法」。

  • REGION:要建立執行個體範本的區域。

  • MACHINE_TYPE:要使用的預留項目中指定的機型。

  • RESERVATION_URL:您要使用的日曆模式未來預留項目自動建立預留項目的網址。請指定下列其中一個值:

    • 如果專案中已有自動建立的預留項目: RESERVATION_NAME.

    • 如果自動建立的預留項目位於其他專案: projects/PROJECT_ID/reservations/RESERVATION_NAME

REST

如要建立執行個體範本,請對下列其中一種方法發出 POST 要求:

在要求主體中加入下列欄位:

  • reservationAffinity.consumeReservationType 欄位設為 SPECIFIC_RESERVATION

  • reservationAffinity.key 欄位設為 compute.googleapis.com/reservation-name

  • reservationAffinity.values 欄位設為自動建立的預留項目網址。

  • scheduling.instanceTerminationAction 欄位設為 DELETE

  • scheduling.onHostMaintenance 欄位設為 TERMINATE

  • scheduling.provisioningModel 欄位設為 RESERVATION_BOUND

舉例來說,如要建立地區執行個體範本,請提出下列要求:

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instanceTemplates

{
  "name": "INSTANCE_TEMPLATE_NAME",
  "properties": {
    "disks": [
      {
        "boot": true,
        "initializeParams": {
          "sourceImage": "projects/IMAGE_PROJECT/global/images/IMAGE"
        }
      }
    ],
    "machineType": "MACHINE_TYPE",
    "networkInterfaces": [
      {
        "network": "global/networks/default"
      }
    ],
    "reservationAffinity": {
      "consumeReservationType": "SPECIFIC_RESERVATION",
      "key": "compute.googleapis.com/reservation-name",
      "values": [
        "RESERVATION_URL"
      ]
    },
    "scheduling": {
      "instanceTerminationAction": "DELETE",
      "onHostMaintenance": "TERMINATE",
      "provisioningModel": "RESERVATION_BOUND"
    }
  }
}

更改下列內容:

  • PROJECT_ID:要在其中建立執行個體範本的專案 ID。

  • REGION:要建立執行個體範本的區域。

  • INSTANCE_TEMPLATE_NAME:要建立的執行個體範本名稱。

  • IMAGE_PROJECT:包含映像檔的映像檔專案,例如 debian-cloud。如要進一步瞭解支援的映像檔專案,請參閱「公開映像檔」。

  • IMAGE:指定下列其中一項:

    • 特定版本的 OS 映像檔,例如 debian-12-bookworm-v20240617

    • 映像檔系列,格式必須為 family/IMAGE_FAMILY。指定映像檔系列,即可使用未淘汰的最新 OS 映像檔。舉例來說,如果您指定 family/debian-12,系統會使用 Debian 12 映像檔系列的最新版本。如要進一步瞭解如何使用映像檔系列,請參閱「映像檔系列最佳做法」。

  • MACHINE_TYPE:要使用的預留項目中指定的機型。

  • RESERVATION_URL:您要使用的日曆模式未來預留項目自動建立預留項目的網址。請指定下列其中一個值:

    • 如果專案中已有系統自動建立的預留項目: RESERVATION_NAME

    • 如果自動建立的預留項目位於其他專案: projects/PROJECT_ID/reservations/RESERVATION_NAME

如要進一步瞭解如何建立執行個體範本,請參閱建立執行個體範本

使用彈性啟動佈建模式

如要建立執行個體範本,請選取下列任一選項:

控制台

  1. 前往 Cloud de Confiance 控制台的「Instance templates」(執行個體範本) 頁面。

    前往「Instance templates」(執行個體範本)

  2. 按一下「建立執行個體範本」。「建立執行個體範本」頁面隨即開啟。

  3. 在「Name」(名稱) 欄位中,輸入執行個體範本的名稱。

  4. 在「位置」部分中,選取下列其中一個選項:

    • 如要建立區域執行個體範本,請選取「區域 (建議)」,然後選取要建立範本的區域。

    • 如要建立全域執行個體範本,請選取「Global」(全域)

  5. 在「機器設定」部分,指定機型。

  6. 在「Provisioning model」(佈建模型) 部分,完成下列步驟:

    1. 在「VM 佈建模型」欄位中,選取「彈性啟動」

    2. 展開「VM 佈建模式進階設定」

    3. 選取「設定 VM 的時間限制」核取方塊。

    4. 如要為使用執行個體範本建立的 VM 設定執行時間長度,請在「Enter number of hours」(輸入時數) 欄位中輸入時數。這個值必須介於 36 秒 (0.01) 和七天 (168) 之間。

  7. (選用) 如要變更預設開機磁碟類型或映像檔,請按一下「Boot disk」(開機磁碟) 部分中的「Change」(變更)。然後按照提示變更開機磁碟。

  8. 點選「建立」

gcloud

如要建立執行個體範本,請使用 instance-templates create 指令,並設定下列旗標:

  • --instance-termination-action 旗標設為 DELETE

  • --maintenance-policy 旗標設為 TERMINATE

  • --max-run-duration 標記。

  • --provisioning-model 旗標設為 FLEX_START

  • --reservation-affinity 旗標設為 none

以下範例指令會建立區域執行個體範本。如要建立全域執行個體範本,請使用相同指令,但不要加上 --instance-template-region 旗標。

gcloud compute instance-templates create INSTANCE_TEMPLATE_NAME \
    --image-project=IMAGE_PROJECT \
    --image-family=IMAGE_FAMILY \
    --instance-template-region=REGION \
    --instance-termination-action=DELETE \
    --machine-type=MACHINE_TYPE \
    --maintenance-policy=TERMINATE \
    --max-run-duration=RUN_DURATION \
    --provisioning-model=FLEX_START \
    --reservation-affinity=none

更改下列內容:

  • INSTANCE_TEMPLATE_NAME:要建立的執行個體範本名稱。

  • IMAGE_PROJECT:包含映像檔的映像檔專案,例如 debian-cloud。如要進一步瞭解支援的映像檔專案,請參閱「公開映像檔」。

  • IMAGE_FAMILY映像檔系列。指定映像檔系列,即可使用未淘汰的最新作業系統映像檔。舉例來說,如果您指定 debian-12,系統會使用 Debian 12 映像檔系列中的最新版本。如要進一步瞭解如何使用映像檔系列,請參閱「映像檔系列最佳做法」。

  • REGION:要建立執行個體範本的區域。

  • MACHINE_TYPE:用於彈性啟動型 VM 的機型。如果您指定 N1 機型,則必須加入 --accelerator 旗標,定義要連接至 VM 的 GPU 數量和類型。

  • RUN_DURATION:要求的 VM 執行時間長度。您必須將值格式化為天數、時數、分鐘數或秒數,並分別加上 dhms。舉例來說,您可以指定 30m 代表 30 分鐘,或指定 1d2h3m4s 代表 1 天 2 小時 3 分 4 秒。值必須介於 10 分鐘至 7 天之間。

REST

如要建立執行個體範本,請對下列其中一種方法發出 POST 要求:

在要求主體中加入下列欄位:

  • reservationAffinity.consumeReservationType 欄位設為 NO_RESERVATION

  • scheduling.instanceTerminationAction 欄位設為 DELETE

  • scheduling.maxRunDuration 欄位。

  • scheduling.onHostMaintenance 欄位設為 TERMINATE

  • scheduling.provisioningModel 欄位設為 FLEX_START

下列範例要求會建立區域執行個體範本:

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instanceTemplates

{
  "name": "INSTANCE_TEMPLATE_NAME",
  "properties": {
    "disks": [
      {
        "boot": true,
        "initializeParams": {
          "sourceImage": "projects/IMAGE_PROJECT/global/images/IMAGE"
        }
      }
    ],
    "machineType": "MACHINE_TYPE",
    "networkInterfaces": [
      {
        "network": "global/networks/default"
      }
    ],
    "reservationAffinity": {
      "consumeReservationType": "NO_RESERVATION"
    },
    "scheduling": {
      "instanceTerminationAction": "DELETE",
      "maxRunDuration": {
        "seconds": RUN_DURATION
      },
      "onHostMaintenance": "TERMINATE",
      "provisioningModel": "FLEX_START"
    }
  }
}

更改下列內容:

  • PROJECT_ID:要在其中建立執行個體範本的專案 ID。

  • REGION:要建立執行個體範本的區域。

  • INSTANCE_TEMPLATE_NAME:要建立的執行個體範本名稱。

  • IMAGE_PROJECT:包含映像檔的映像檔專案,例如 debian-cloud。如要進一步瞭解支援的映像檔專案,請參閱「公開映像檔」。

  • IMAGE:指定下列其中一項:

    • 特定版本的 OS 映像檔,例如 debian-12-bookworm-v20240617

    • 映像檔系列,格式必須為 family/IMAGE_FAMILY。指定映像檔系列,即可使用未淘汰的最新 OS 映像檔。舉例來說,如果您指定 family/debian-12,系統會使用 Debian 12 映像檔系列的最新版本。如要進一步瞭解如何使用映像檔系列,請參閱「映像檔系列最佳做法」。

  • MACHINE_TYPE:用於 VM 的機型。如果您指定 N1 機型,則必須加入 guestAccelerators 欄位,定義要附加至 VM 的 GPU 數量和類型。

  • RUN_DURATION:要求的 VM 執行時間長度 (以秒為單位)。值必須介於 600 (600 秒,即 10 分鐘) 和 604800 (604,800 秒,即 7 天) 之間。

如要進一步瞭解如何建立執行個體範本,請參閱建立執行個體範本

建立使用大量模式的 MIG

如要在 MIG 中大量建立執行個體,請在 MIG 的設定中將 targetSizePolicy.mode 欄位設為 BULK。使用這個大量模式時,MIG 會等待資源完全可用,然後一次建立所有執行個體。

控制台

  1. 前往「Instance groups」(執行個體群組) 頁面。

    前往「Instance groups」(執行個體群組)

  2. 按一下「建立執行個體群組」。「建立執行個體群組」頁面隨即開啟。

  3. 在「Name」(名稱) 欄位中,輸入 MIG 的名稱。

  4. 選取執行個體範本前,請務必完成下列步驟:

    1. 如果使用彈性啟動佈建模式,則必須按照下列步驟關閉修復功能:
      1. 在「VM instance lifecycle」(VM 執行個體生命週期) 區段中,清除「Allow repair of VMs in an alternate zone」(允許在替代可用區修復 VM) 核取方塊。
      2. 在「Default action on failure」(失敗時的預設動作) 清單中,選取「No action」(不採取任何動作)
    2. 在「位置」部分執行下列操作:
      • 如要建立可用區 MIG,請選取「單一可用區」
      • 如要建立區域性 MIG,請選取「多個可用區」。在「目標分配型態」中,選取「任何單一可用區」。在隨即顯示的對話方塊中,選取「停用執行個體重新分配功能」
  5. 返回「Instance template」(執行個體範本) 欄位。在「Instance template」(執行個體範本) 清單中,選取您在上一個部分中建立的執行個體範本。

  6. 在「Number of instances」(執行個體數) 欄位中,指定要一次建立的執行個體數量。

  7. 選取「透過大量目標大小政策一次取得所有 VM」核取方塊。

  8. 點選「建立」

gcloud

如要建立啟用大量建立功能的 MIG,請使用 gcloud compute instance-groups managed create 指令,並將 --target-size-policy-mode 旗標設為 bulk

如果您使用彈性啟動佈建模式,則必須在 MIG 中關閉修復功能,方法是在下列指令中加入 --default-action-on-vm-failure=do-nothing 旗標。

  • 如要建立可用區 MIG,請執行下列指令:
gcloud compute instance-groups managed create INSTANCE_GROUP_NAME \
    --size=SIZE \
    --target-size-policy-mode=bulk \
    --template=INSTANCE_TEMPLATE_URL \
    --zone=ZONE \
  • 如要建立地區 MIG,請執行下列指令:
gcloud compute instance-groups managed create INSTANCE_GROUP_NAME \
    --size=SIZE \
    --target-size-policy-mode=bulk \
    --template=INSTANCE_TEMPLATE_URL \
    --zones=LIST_OF_ZONES \

更改下列內容:

  • INSTANCE_GROUP_NAME:MIG 的名稱。
  • SIZE:MIG 中的執行個體數量。
  • INSTANCE_TEMPLATE_URL:您要用於在 MIG 中建立執行個體的執行個體範本網址。網址可以包含執行個體範本的 ID 或名稱。請指定下列其中一個值:
    • 如果是區域執行個體範本:projects/PROJECT_ID/regions/REGION/instanceTemplates/INSTANCE_TEMPLATE_ID
    • 如果是全域執行個體範本:INSTANCE_TEMPLATE_ID
  • ZONE:MIG 建立執行個體的可用區。
  • LIST_OF_ZONES:以半形逗號分隔的區域清單,區域 MIG 會在這些區域建立執行個體。例如:us-central1-a, us-central1-b, us-central1-c

REST

如要建立啟用大量建立功能的 MIG,請按照下列方式提出 POST 要求。在要求主體中,將 targetSizePolicy.mode 欄位設為 bulk

如果使用彈性啟動佈建模式,則必須在下列要求中加入 "instanceLifecyclePolicy": {"defaultActionOnFailure": "DO_NOTHING"} 欄位,關閉 MIG 中的修復功能。

  • 如要建立區域 MIG,請向 instanceGroupManagers.insert 方法發出 POST 要求。

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instanceGroupManagers
    
    {
      "name": "INSTANCE_GROUP_NAME",
      "targetSize": SIZE,
      "targetSizePolicy": {
        "mode": "bulk"
      },
      "versions": [
        {
          "instanceTemplate": "INSTANCE_TEMPLATE_URL"
        }
      ]
    }
    
  • 如要建立區域 MIG,請向 regionInstanceGroupManagers.insert 方法發出 POST 要求。

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instanceGroupManagers
    
    {
      "name": "INSTANCE_GROUP_NAME",
      "targetSize": SIZE,
      "targetSizePolicy": {
        "mode": "bulk"
      },
      "versions": [
        {
          "instanceTemplate": "INSTANCE_TEMPLATE_URL"
        }
      ]
    }
    

更改下列內容:

  • PROJECT_ID:專案 ID。
  • ZONE:MIG 建立執行個體的可用區。
  • REGION:MIG 建立執行個體的區域。
  • INSTANCE_GROUP_NAME:MIG 的名稱。
  • SIZE:MIG 中的執行個體數量。
  • INSTANCE_TEMPLATE_URL:您要用於在 MIG 中建立執行個體的執行個體範本網址。網址可以包含執行個體範本的 ID 或名稱。請指定下列其中一個值:
    • 如果是區域執行個體範本:projects/PROJECT_ID/regions/REGION/instanceTemplates/INSTANCE_TEMPLATE_ID
    • 如果是全域執行個體範本:INSTANCE_TEMPLATE_ID

新增或刪除例項

在採用大量模式的 MIG 中,您可以手動增加或減少 MIG 的目標大小,藉此新增或移除執行個體。

  • 新增執行個體:當您將目標大小從零調高時,MIG 會以建立 MIG 時的方式新增執行個體。如果 MIG 中沒有執行個體,您也可以使用 createInstances 方法建立具有特定名稱的執行個體。如要建立具有特定名稱的執行個體,請參閱在 MIG 中使用指定名稱建立執行個體一文。

  • 刪除執行個體:將目標大小縮減為零時,MIG 會刪除群組中的所有現有執行個體,並取消任何進行中的建立作業。如要移除執行個體,請將目標大小減少至 0。如要將大小減少至非零值,MIG 不得有正在進行的大量執行個體作業 (bulkInstanceOperation.inProgress 必須為 false)。

如要透過變更目標大小,在 MIG 中新增或移除執行個體,請參閱「手動設定 MIG 大小」。

後續步驟