新增執行個體彈性

本文說明如何新增執行個體彈性,以便在 MIG 中設定多個機型。

建立 MIG 時或編輯現有 MIG 時,都可以新增執行個體彈性。如要新增彈性,請在 MIG 中設定執行個體彈性政策。這項政策會覆寫執行個體範本中指定的機型。每當 MIG 建立虛擬機器 (VM) 執行個體時,系統會根據資源可用性,自動選取您在政策中列出的其中一種機器類型。您也可以為機器類型清單指派等級,表明偏好設定。

如要瞭解執行個體彈性在 MIG 中的運作方式,請參閱「關於執行個體彈性」。

事前準備

  • 確認您選擇的機器類型支援 MIG 所在的區域。如要查看區域中的機型,請參閱「適用區域和可用區」。

  • 如要在 MIG 中建立 Spot VM,請先查看資源可用性,再將 VM 新增至 MIG。檢查資源可用性有助於減少遇到資源可用性錯誤的機率。如需操作說明,請參閱「查看 Spot VM 的資源可用性」。
  • 如果尚未設定驗證,請先完成設定。 驗證可確認您的身分,以便存取 Google Cloud 服務和 API。如要從本機開發環境執行程式碼或範例,請選取下列其中一個選項,向 Compute Engine 進行驗證:

    選取這個頁面上範例的預計用途分頁:

    控制台

    使用 Google Cloud 控制台存取 Google Cloud 服務和 API 時,不需要設定驗證。

    gcloud

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

      gcloud init

      如果您使用外部識別資訊提供者 (IdP),請先 使用聯合身分登入 gcloud CLI。

  • 設定預設區域和可用區。
  • Terraform

    如要在本機開發環境中使用本頁的 Terraform 範例,請安裝並初始化 gcloud CLI,然後使用使用者憑證設定應用程式預設憑證。

    1. 安裝 Google Cloud CLI。

    2. 如果您使用外部識別資訊提供者 (IdP),請先 使用聯合身分登入 gcloud CLI。

    3. 如果您使用本機殼層,請為使用者帳戶建立本機驗證憑證:

      gcloud auth application-default login

      如果您使用 Cloud Shell,則不需要執行這項操作。

      如果系統傳回驗證錯誤,且您使用外部識別資訊提供者 (IdP),請確認您已 使用聯合身分登入 gcloud CLI。

    詳情請參閱「 設定本機開發環境的驗證機制」。

    REST

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

      安裝 Google Cloud CLI。

      如果您使用外部識別資訊提供者 (IdP),請先 使用聯合身分登入 gcloud CLI。

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

建立具備執行個體彈性的 MIG

建立代管執行個體群組前,必須先建立執行個體範本 (如果還沒有)。接著,您就能建立具有執行個體彈性的 MIG,藉此覆寫執行個體範本中指定的機型。

您可以透過下列任一方式,建立具備執行個體彈性的 MIG:

建立含有多種機型的 MIG

控制台

  1. 前往 Google Cloud 控制台的「Instance groups」(執行個體群組) 頁面。

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

  2. 點選「建立執行個體群組」。

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

  4. 在「Instance template」(執行個體範本) 清單中,選取要用於 MIG 的執行個體範本。

  5. 如要指定「執行個體數量」並新增「執行個體選取項目」,請先完成下列步驟:

    1. 前往頁面上的「位置」部分,然後按照下列步驟設定位置:

      1. 選取「多可用區」。

      2. 在「Regions」(區域) 和「Zones」(可用區) 下拉式選單中,選取要建立 MIG 中 VM 的區域和可用區。如果您選取區域執行個體範本,系統會預設選取該範本的區域。

      3. 在「目標分配型態」欄位中,選取「平衡」、「任何」或「任何單一可用區」。

        • 如果選取「Balanced」(平衡) 或「Any single zone」(任何單一可用區),請在開啟的對話方塊中,按一下「Disable instance redistribution」(停用執行個體重新分配)。

        • 如果選取「Any」(任何),請確認未勾選「Allow instance redistribution」(允許重新分配執行個體) 核取方塊。

    2. 前往頁面上的「Autoscaling」(自動調度資源) 部分,然後按照下列步驟刪除自動調度資源設定:

      1. 在「自動調度資源模式」下拉式選單中,按一下「刪除自動調度資源設定」。

      2. 在開啟的對話方塊中,按一下「刪除」。

    3. 捲動返回「Number of instances」(執行個體數量) 欄位。

  6. 在「Number of instances」(執行個體數量) 欄位中,指定群組中所需的 VM 數量。

  7. 在「執行個體選取項目」部分,按一下「新增選取項目」。

    「執行個體選取項目」視窗隨即開啟。

    1. 按一下「新增執行個體選取項目」。

    2. 在「New instance selection」(選取新執行個體) 部分,執行下列操作:

      1. 在「名稱」欄位中,輸入執行個體選取項目的名稱。

      2. 在「Machine types」(機型) 部分,按一下「Add machine type」(新增機型),在執行個體選取畫面中選取要新增的機型,然後按一下「Done」(完成)。

        針對要新增至執行個體選取的每個機型,重複執行這個步驟。

      3. 新增機器類型後,按一下「完成」。

  8. 在「執行個體選取項目」視窗中,按一下「完成」。

  9. 其他欄位則保留預設值,或視需要修改。

  10. 點選「建立」。

gcloud

如要建立含有多個機型的區域性 MIG,請使用 instance-groups managed create 指令,如下所示:

gcloud compute instance-groups managed create INSTANCE_GROUP_NAME \
    --region REGION \
    --size TARGET_SIZE \
    --template INSTANCE_TEMPLATE_URL \
    --target-distribution-shape SHAPE \
    --instance-redistribution-type none \
    --instance-selection-machine-types MACHINE_TYPE,MACHINE_TYPE,...

區域性 MIG 不支援執行個體彈性。不過,如要在單一可用區中建立 MIG,請將目標分配型態設為 any-single-zone。此外,如要指定區域,請使用 any-single-zone 分布形狀並加入 --zones ZONE 旗標。

更改下列內容:

  • INSTANCE_GROUP_NAME:MIG 的名稱。
  • REGION:要建立 MIG 的區域。
  • TARGET_SIZE:MIG 要建立及維護的 VM 數量。
  • INSTANCE_TEMPLATE_URL:您要用來在代管執行個體群組中建立執行個體的執行個體範本網址。網址可以包含執行個體範本的 ID 或名稱。請指定下列其中一個值:
    • 如果是區域執行個體範本:projects/PROJECT_ID/regions/REGION/instanceTemplates/INSTANCE_TEMPLATE_ID
    • 全域執行個體範本:INSTANCE_TEMPLATE_ID
  • SHAPE:目標分配型態。可能的值為 balanced、any 或 any-single-zone。
  • MACHINE_TYPE:要在 MIG 中設定的機型,例如 n1-standard-16,n2-standard-16,e2-standard-16。

Terraform

如果您尚未建立執行個體範本,指定 MIG 中每個 VM 的所需 VM 屬性,請建立執行個體範本。

如要建立具有多個機型的區域 MIG,請使用 google_compute_region_instance_group_manager 資源。

resource "google_compute_region_instance_group_manager" "default" {
  name               = "flex-igm"
  base_instance_name = "tf-test-flex-igm"
  region             = "us-central1"

  target_size                      = 3
  distribution_policy_target_shape = "ANY_SINGLE_ZONE"

  version {
    instance_template = google_compute_instance_template.default.id
  }

  instance_flexibility_policy {
    instance_selections {
      name          = "default-instance-selection"
      machine_types = ["n1-standard-16", "n2-standard-16", "e2-standard-16"]
    }
  }

  update_policy {
    instance_redistribution_type = "NONE"
    type                         = "OPPORTUNISTIC"
    minimal_action               = "REPLACE"
    max_surge_fixed              = 0
    max_unavailable_fixed        = 6
  }
}

如要瞭解如何套用或移除 Terraform 設定,請參閱「基本 Terraform 指令」。

REST

如要建立具有多種機型的區域性 MIG,請對 regionInstanceGroupManagers.insert 方法發出 POST 請求。

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

{
  "name": "INSTANCE_GROUP_NAME",
  "targetSize": TARGET_SIZE,
  "instanceTemplate": "INSTANCE_TEMPLATE_URL",
  "distributionPolicy": {
    "targetShape": "SHAPE"
  },
  "updatePolicy": {
    "instanceRedistributionType": "NONE"
  },
  "instanceFlexibilityPolicy": {
    "instanceSelections": {
      "INSTANCE_SELECTION": {
        "machineTypes": [
          "MACHINE_TYPE_1",
          "MACHINE_TYPE_2",
          ...
        ]
      }
    }
  }
}

區域性 MIG 不支援執行個體彈性。不過,如要在單一可用區中建立 MIG,請將目標分配型態設為 ANY_SINGLE_ZONE。此外,如要指定區域,請使用 ANY_SINGLE_ZONE 發布形狀,並在要求中加入 distributionPolicy.zones[].zone 欄位。

更改下列內容:

  • PROJECT_ID:您的專案 ID。
  • REGION:要建立 MIG 的區域。
  • INSTANCE_GROUP_NAME:MIG 的名稱。
  • TARGET_SIZE:MIG 要建立及維護的 VM 數量。
  • INSTANCE_TEMPLATE_URL:您要用來在代管執行個體群組中建立執行個體的執行個體範本網址。網址可以包含執行個體範本的 ID 或名稱。請指定下列其中一個值:
    • 如果是區域執行個體範本:projects/PROJECT_ID/regions/REGION/instanceTemplates/INSTANCE_TEMPLATE_ID
    • 全域執行個體範本:INSTANCE_TEMPLATE_ID
  • SHAPE:目標分配型態。可能的值為 BALANCED、ANY 或 ANY_SINGLE_ZONE。
  • INSTANCE_SELECTION:機型清單的名稱。
  • MACHINE_TYPE:要在 MIG 中設定的機型,例如 "n1-standard-16","n2-standard-16","e2-standard-16"。

建立具有多個機型和偏好的 MIG

控制台

  1. 前往 Google Cloud 控制台的「Instance groups」(執行個體群組) 頁面。

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

  2. 點選「建立執行個體群組」。

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

  4. 在「Instance template」(執行個體範本) 清單中,選取要用於 MIG 的執行個體範本。

  5. 如要指定「執行個體數量」並新增「執行個體選取項目」,請先完成下列步驟:

    1. 前往頁面上的「位置」部分,然後按照下列步驟設定位置:

      1. 選取「多可用區」。

      2. 在「Regions」(區域) 和「Zones」(可用區) 下拉式選單中,選取要建立 MIG 中 VM 的區域和可用區。如果您選取區域執行個體範本,系統會預設選取該範本的區域。

      3. 在「目標分配型態」欄位中,選取「平衡」、「任何」或「任何單一可用區」。

        • 如果選取「Balanced」(平衡) 或「Any single zone」(任何單一可用區),請在開啟的對話方塊中,按一下「Disable instance redistribution」(停用執行個體重新分配)。

        • 如果選取「Any」(任何),請確認未勾選「Allow instance redistribution」(允許重新分配執行個體) 核取方塊。

    2. 前往頁面上的「Autoscaling」(自動調度資源) 部分,然後按照下列步驟刪除自動調度資源設定:

      1. 在「自動調度資源模式」下拉式選單中,按一下「刪除自動調度資源設定」。

      2. 在開啟的對話方塊中,按一下「刪除」。

    3. 捲動返回「Number of instances」(執行個體數量) 欄位。

  6. 在「Number of instances」(執行個體數量) 欄位中,指定群組中所需的 VM 數量。

  7. 在「執行個體選取項目」部分,按一下「新增選取項目」。

    「執行個體選取項目」視窗隨即開啟。 針對要在 MIG 中新增的每個執行個體選取項目,重複執行下列步驟。

    1. 按一下「新增執行個體選取項目」。

    2. 在「New instance selection」(選取新執行個體) 部分,執行下列操作:

      1. 在「名稱」欄位中,輸入執行個體選取項目的名稱。

      2. 在「Rank」(等級) 欄位中,輸入您為 MIG 新增的執行個體選項偏好順序。

      3. 在「Machine types」(機型) 部分,按一下「Add machine type」(新增機型),在執行個體選取畫面中選取要新增的機型,然後按一下「Done」(完成)。

        針對要新增至執行個體選取的每個機型,重複執行這個步驟。

      4. 新增機器類型後,按一下「完成」。

  8. 新增執行個體選取項目後,請按一下「完成」。

  9. 其他欄位則保留預設值,或視需要修改。

  10. 點選「建立」。

gcloud

如要建立含有多個機型和偏好的區域性 MIG,請使用 instance-groups managed create 指令。

gcloud compute instance-groups managed create INSTANCE_GROUP_NAME \
    --region REGION \
    --size TARGET_SIZE \
    --template INSTANCE_TEMPLATE_URL \
    --target-distribution-shape SHAPE \
    --instance-redistribution-type none \
    --instance-selection "name=INSTANCE_SELECTION_1,machine-type=MACHINE_TYPE_1,machine-type=MACHINE_TYPE_2,rank=RANK_1" \
    --instance-selection "name=INSTANCE_SELECTION_2,machine-type=MACHINE_TYPE_3,machine-type=MACHINE_TYPE_4,rank=RANK_2"

區域性 MIG 不支援執行個體彈性。不過,如要在單一可用區中建立 MIG,請將目標分配型態設為 any-single-zone。此外,如要指定區域,請使用 any-single-zone 分布形狀並加入 --zones ZONE 旗標。

更改下列內容:

  • INSTANCE_GROUP_NAME: MIG 的名稱。
  • REGION:要建立 MIG 的區域。
  • TARGET_SIZE:MIG 要建立及維護的 VM 數量。
  • INSTANCE_TEMPLATE_URL:您要用來在代管執行個體群組中建立執行個體的執行個體範本網址。網址可以包含執行個體範本的 ID 或名稱。請指定下列其中一個值:
    • 如果是區域執行個體範本:projects/PROJECT_ID/regions/REGION/instanceTemplates/INSTANCE_TEMPLATE_ID
    • 全域執行個體範本:INSTANCE_TEMPLATE_ID
  • SHAPE:目標分配型態。可能的值為 balanced、any 或 any-single-zone。系統不支援其他目標分配形狀。
  • INSTANCE_SELECTION:機型清單的名稱。
  • MACHINE_TYPE:要在 MIG 中設定的機器類型。
  • RANK:代表執行個體選取偏好順序的數字。值越小,表示偏好程度越高。

Terraform

如果您尚未建立執行個體範本,指定 MIG 中每個 VM 的所需 VM 屬性,請建立執行個體範本。

如要建立含有多個機型和偏好的區域 MIG,請使用 google_compute_region_instance_group_manager 資源。

resource "google_compute_region_instance_group_manager" "default" {
  name               = "flex-igm"
  base_instance_name = "tf-test-flex-igm"
  region             = "us-central1"

  target_size                      = 3
  distribution_policy_target_shape = "ANY_SINGLE_ZONE"

  version {
    instance_template = google_compute_instance_template.default.id
  }

  instance_flexibility_policy {
    instance_selections {
      name          = "best-choice"
      rank          = 1
      machine_types = ["n1-standard-1", "n1-standard-2"]
    }
    instance_selections {
      name          = "still-ok"
      rank          = 2
      machine_types = ["n2-standard-1"]
    }
    instance_selections {
      name          = "if-nothing-else"
      rank          = 3
      machine_types = ["e2-standard-2"]
    }
  }

  update_policy {
    instance_redistribution_type = "NONE"
    type                         = "OPPORTUNISTIC"
    minimal_action               = "REPLACE"
    max_surge_fixed              = 0
    max_unavailable_fixed        = 6
  }
}

如要瞭解如何套用或移除 Terraform 設定,請參閱「基本 Terraform 指令」。

REST

如要建立含有多個機型和偏好的區域性 MIG,請對 regionInstanceGroupManagers.insert 方法發出 POST 請求。

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

{
  "name": "INSTANCE_GROUP_NAME",
  "targetSize": TARGET_SIZE,
  "instanceTemplate": "INSTANCE_TEMPLATE_URL",
  "distributionPolicy": {
    "targetShape": "SHAPE"
  },
  "updatePolicy": {
    "instanceRedistributionType": "NONE"
  },
  "instanceFlexibilityPolicy": {
    "instanceSelections": {
      "INSTANCE_SELECTION_1": {
        "machineTypes": [
          "MACHINE_TYPE_1",
          "MACHINE_TYPE_2",
          ...
        ],
        "rank": RANK_1
      },
      "INSTANCE_SELECTION_2": {
        "machineTypes": [
          "MACHINE_TYPE_3",
          "MACHINE_TYPE_4",
          ...
        ],
        "rank": RANK_2
      },
      ...
    }
  }
}

區域性 MIG 不支援執行個體彈性。不過,如要在單一可用區中建立 MIG,請將目標分配型態設為 ANY_SINGLE_ZONE。此外,如要指定區域,請使用 ANY_SINGLE_ZONE 發布形狀,並在要求中加入 distributionPolicy.zones[].zone 欄位。

更改下列內容:

  • PROJECT_ID:您的專案 ID。
  • REGION:要建立 MIG 的區域。
  • INSTANCE_GROUP_NAME: MIG 的名稱。
  • TARGET_SIZE:MIG 要建立及維護的 VM 數量。
  • INSTANCE_TEMPLATE_URL:您要用來在代管執行個體群組中建立執行個體的執行個體範本網址。網址可以包含執行個體範本的 ID 或名稱。請指定下列其中一個值:
    • 如果是區域執行個體範本:projects/PROJECT_ID/regions/REGION/instanceTemplates/INSTANCE_TEMPLATE_ID
    • 全域執行個體範本:INSTANCE_TEMPLATE_ID
  • SHAPE:目標分配型態。可能的值為 BALANCED、ANY 或 ANY_SINGLE_ZONE。系統不支援其他目標分配形狀。
  • INSTANCE_SELECTION:機型清單的名稱。
  • MACHINE_TYPE:要在 MIG 中設定的機器類型。
  • RANK:代表執行個體選取偏好順序的數字。值越小,表示偏好程度越高。

建立含有多個機型、偏好設定和額外覆寫項的 MIG

建立含有多個機型的 MIG 時,您可以選擇為每個執行個體選取項目設定最低 CPU 平台和磁碟定義。

控制台

  1. 前往 Google Cloud 控制台的「Instance groups」(執行個體群組) 頁面。

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

  2. 點選「建立執行個體群組」。

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

  4. 在「Instance template」(執行個體範本) 清單中,選取要用於 MIG 的執行個體範本。

  5. 如要指定「執行個體數量」並新增「執行個體選取項目」,請先完成下列步驟:

    1. 前往頁面上的「位置」部分,然後按照下列步驟設定位置:

      1. 選取「多可用區」。

      2. 在「Regions」(區域) 和「Zones」(可用區) 下拉式選單中,選取要建立 MIG 中 VM 的區域和可用區。如果您選取區域執行個體範本,系統會預設選取該範本的區域。

      3. 在「目標分配型態」欄位中,選取「平衡」、「任何」或「任何單一可用區」。

        • 如果選取「Balanced」(平衡) 或「Any single zone」(任何單一可用區),請在開啟的對話方塊中,按一下「Disable instance redistribution」(停用執行個體重新分配)。

        • 如果選取「Any」(任何),請確認未勾選「Allow instance redistribution」(允許重新分配執行個體) 核取方塊。

    2. 前往頁面上的「Autoscaling」(自動調度資源) 部分,然後按照下列步驟刪除自動調度資源設定:

      1. 在「自動調度資源模式」下拉式選單中,按一下「刪除自動調度資源設定」。

      2. 在開啟的對話方塊中,按一下「刪除」。

    3. 捲動返回「Number of instances」(執行個體數量) 欄位。

  6. 在「Number of instances」(執行個體數量) 欄位中,指定群組中所需的 VM 數量。

  7. 在「執行個體選取項目」部分,按一下「新增選取項目」。

    「執行個體選取項目」視窗隨即開啟。 針對要在 MIG 中新增的每個執行個體選取項目,重複執行下列步驟。

    1. 按一下「新增執行個體選取項目」。

    2. 在「New instance selection」(選取新執行個體) 部分,執行下列操作:

      1. 在「名稱」欄位中,輸入執行個體選取項目的名稱。

      2. 在「Rank」(等級) 欄位中,輸入您為 MIG 新增的執行個體選項偏好順序。

      3. 在「Machine types」(機型) 部分,按一下「Add machine type」(新增機型),在執行個體選取畫面中選取要新增的機型,然後按一下「Done」(完成)。

        針對要新增至執行個體選取的每個機型,重複執行這個步驟。

      4. 如要覆寫執行個體範本中指定的最低 CPU 平台,請選取「覆寫所選項目的 CPU 平台」核取方塊。在「CPU platform」(CPU 平台) 清單中,選取要用於執行個體選取的平台。

      5. 如要覆寫執行個體範本中指定的磁碟設定,或附加儲存空間,請選取「覆寫磁碟」核取方塊。

        • 如要覆寫開機磁碟,請按一下「Boot disk」(開機磁碟) 專區中的「Change」(變更),然後按照提示操作。

        • 如要附加儲存空間,請按一下「新增磁碟」或「附加現有磁碟」,然後按照提示操作。

      6. 新增機器類型和覆寫後,按一下「完成」。

  8. 新增執行個體選取項目後,請按一下「完成」。

  9. 其他欄位則保留預設值,或視需要修改。

  10. 點選「建立」。

gcloud

使用 instance-groups managed create 指令。

gcloud compute instance-groups managed create INSTANCE_GROUP_NAME \
    --region REGION \
    --size TARGET_SIZE \
    --template INSTANCE_TEMPLATE_URL \
    --force-update-on-repair \
    --target-distribution-shape SHAPE \
    --instance-redistribution-type none \
    --instance-flexibility-policy={"instanceSelections": \
        {"INSTANCE_SELECTION_1":{"rank":RANK_1,"machineTypes":["MACHINE_TYPE_1","MACHINE_TYPE_2"],"minCpuPlatform":"MIN_CPU_PLATFORM_1","disks":[{"deviceName":"DEVICE_NAME_1","boot":true,"initializeParams":{"sourceImage":"projects/IMAGE_PROJECT/global/images/IMAGE_NAME"}}]}, \
        "INSTANCE_SELECTION_2":{"rank":RANK_2,"machineTypes":["MACHINE_TYPE_3","MACHINE_TYPE_4"],"minCpuPlatform":"MIN_CPU_PLATFORM_2","disks":[{"deviceName":"DEVICE_NAME_2","boot":true,"initializeParams":{"sourceImage":"projects/IMAGE_PROJECT/global/images/IMAGE_NAME"}}]}}}

您也可以使用 YAML 或 JSON 檔案設定執行個體彈性政策。如要這麼做,請使用 --flags-file 旗標,而非 --instance-flexibility-policy 旗標,並指定檔案名稱。例如,使用 --flags-file=FILE_NAME.YAML。

更改下列內容:

  • INSTANCE_GROUP_NAME: MIG 的名稱。
  • REGION:要建立 MIG 的區域。
  • TARGET_SIZE:MIG 要建立及維護的 VM 數量。
  • INSTANCE_TEMPLATE_URL:您要用來在代管執行個體群組中建立執行個體的執行個體範本網址。網址可以包含執行個體範本的 ID 或名稱。請指定下列其中一個值:
    • 如果是區域執行個體範本:projects/PROJECT_ID/regions/REGION/instanceTemplates/INSTANCE_TEMPLATE_ID
    • 全域執行個體範本:INSTANCE_TEMPLATE_ID
  • SHAPE:目標分配型態。可能的值為 balanced、any 或 any-single-zone。系統不支援其他目標分配形狀。
  • INSTANCE_SELECTION:機型清單的名稱。
  • MACHINE_TYPE:要在 MIG 中設定的機器類型。
  • MIN_CPU_PLATFORM:執行個體的最低 CPU 平台。
  • DEVICE_NAME:磁碟的裝置名稱。
  • IMAGE_PROJECT:來源圖片的專案 ID。
  • IMAGE_NAME:來源圖片的名稱。
  • RANK:代表執行個體選取偏好順序的數字。值越小,表示偏好程度越高。

Terraform

如果您尚未建立執行個體範本,指定 MIG 中每個 VM 的所需 VM 屬性,請建立執行個體範本。

如要建立含有多個機型、偏好設定和額外覆寫項的區域性 MIG,請使用 google_compute_region_instance_group_manager 資源。

resource "google_compute_region_instance_group_manager" "default" {
  provider           = google-beta
  name               = "flex-igm"
  base_instance_name = "flex-igm-instance"
  region             = "us-central1"

  target_size                      = 2
  distribution_policy_target_shape = "ANY"

  version {
    instance_template = google_compute_instance_template.default.id
  }

  instance_flexibility_policy {
    instance_selections {
      name          = "first-preference"
      rank          = 1
      machine_types = ["n4-standard-4"]
      disks {
        auto_delete  = true
        device_name  = "boot"
        boot         = true
        source_image = "projects/debian-cloud/global/images/family/debian-12"
        disk_size_gb = 10
        disk_type    = "hyperdisk-balanced"
      }
    }

    instance_selections {
      name             = "second-preference"
      rank             = 2
      machine_types    = ["n2-standard-4"]
      min_cpu_platform = "Intel Ice Lake"
      disks {
        auto_delete  = true
        device_name  = "boot"
        boot         = true
        source_image = "projects/debian-cloud/global/images/family/debian-12"
        disk_size_gb = 10
        disk_type    = "pd-ssd"
      }
    }
  }

  instance_lifecycle_policy {
    force_update_on_repair = "YES"
  }

  update_policy {
    instance_redistribution_type = "NONE"
    type                         = "OPPORTUNISTIC"
    minimal_action               = "REPLACE"
    max_surge_fixed              = 0
    max_unavailable_fixed        = 6
  }
}

如要瞭解如何套用或移除 Terraform 設定,請參閱「基本 Terraform 指令」。

REST

向 Beta 版 regionInstanceGroupManagers.insert 方法發出 POST 要求。

POST https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/regions/REGION/instanceGroupManagers

{
"name": "INSTANCE_GROUP_NAME",
"targetSize": "TARGET_SIZE",
"instanceTemplate": "INSTANCE_TEMPLATE_URL",
"distributionPolicy": {
  "targetShape": "SHAPE"
},
"updatePolicy": {
  "instanceRedistributionType": "NONE"
},
"instanceLifecyclePolicy": {
  "forceUpdateOnRepair": "YES",
},
"instanceFlexibilityPolicy": {
  "instanceSelections": {
    "INSTANCE_SELECTION_1": {
      "machineTypes": ["MACHINE_TYPE_1", "MACHINE_TYPE_2", …],
      "minCpuPlatform": "MIN_CPU_PLATFORM_1",
      "disks": [
        {
          "deviceName": "DEVICE_NAME_1",
          "initializeParams": {
            "sourceImage":"projects/IMAGE_PROJECT/global/images/IMAGE_NAME"
          },
          "boot": true
        }
      ],
      "rank": RANK_1
    },
    "INSTANCE_SELECTION_2": {
      "machineTypes": ["MACHINE_TYPE_3", "MACHINE_TYPE_4", …],
      "minCpuPlatform": "MIN_CPU_PLATFORM_2",
      "disks": [
        {
          "deviceName": "DEVICE_NAME_2",
          "initializeParams": {
            "sourceImage":"projects/IMAGE_PROJECT/global/images/IMAGE_NAME"
          },
          "boot": true
        }
      ],
      "rank": RANK_2
    }
  }
}
}

更改下列內容:

  • PROJECT_ID:您的專案 ID。
  • REGION:要建立 MIG 的區域。
  • INSTANCE_GROUP_NAME: MIG 的名稱。
  • TARGET_SIZE:MIG 要建立及維護的 VM 數量。
  • INSTANCE_TEMPLATE_URL:您要用來在代管執行個體群組中建立執行個體的執行個體範本網址。網址可以包含執行個體範本的 ID 或名稱。請指定下列其中一個值:
    • 如果是區域執行個體範本:projects/PROJECT_ID/regions/REGION/instanceTemplates/INSTANCE_TEMPLATE_ID
    • 全域執行個體範本:INSTANCE_TEMPLATE_ID
  • SHAPE:目標分配型態。可能的值為 BALANCED、ANY 或 ANY_SINGLE_ZONE。系統不支援其他目標分配形狀。
  • INSTANCE_SELECTION:機型清單的名稱。
  • MACHINE_TYPE:要在 MIG 中設定的機器類型。
  • MIN_CPU_PLATFORM:執行個體的最低 CPU 平台。
  • DEVICE_NAME:磁碟的裝置名稱。
  • IMAGE_PROJECT:來源圖片的專案 ID。
  • IMAGE_NAME:來源圖片的名稱。
  • RANK:代表執行個體選取偏好順序的數字。值越小,表示偏好程度越高。

在現有 MIG 中新增執行個體彈性

您可以為現有 MIG 新增執行個體彈性。您可以設定多個機器類型,也可以為特定機器類型設定偏好設定。

如果 MIG 中已有 VM,這些 VM 會繼續使用執行個體範本中指定的機型。如要讓 MIG 中的現有 VM 使用執行個體彈性政策的機型,請新增政策,然後刪除現有 VM,並將 MIG 調整為所需數量的 VM。調整大小時,新的 VM 會使用政策中的機器類型。

如要修改現有的執行個體彈性政策,請參閱「變更執行個體彈性設定」。

透過下列任一方式,為 MIG 新增執行個體彈性:

新增多個機型

控制台

  1. 前往 Google Cloud 控制台的「Instance groups」(執行個體群組) 頁面。

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

  2. 按一下要設定多個機型的 MIG 名稱。

  3. 按一下 [編輯]。

  4. 按一下「執行個體彈性」展開該部分。

  5. 在「執行個體選取項目」部分,按一下「新增選取項目」。

    「執行個體選取項目」視窗隨即開啟。

    1. 按一下「新增執行個體選取項目」。

    2. 在「New instance selection」(選取新執行個體) 部分,執行下列操作:

      1. 在「名稱」欄位中,輸入執行個體選取項目的名稱。

      2. 在「Machine types」(機型) 部分,按一下「Add machine type」(新增機型),在執行個體選取畫面中選取要新增的機型,然後按一下「Done」(完成)。

        針對要新增至執行個體選取的每個機型,重複執行這個步驟。

      3. 新增機器類型後,按一下「完成」。

  6. 在「執行個體選取項目」視窗中,按一下「完成」。

  7. 按一下 [儲存]。

gcloud

如要為現有 MIG 新增多個機型,請使用 instance-groups managed update 指令。

gcloud compute instance-groups managed update INSTANCE_GROUP_NAME \
    --region REGION \
    --instance-selection-machine-types MACHINE_TYPE,MACHINE_TYPE,...

更改下列內容:

  • INSTANCE_GROUP_NAME: MIG 的名稱。
  • REGION:MIG 所在的區域。
  • MACHINE_TYPE:要在 MIG 中設定的機器類型。

REST

如要在現有 MIG 中新增多個機器類型,請對 regionInstanceGroupManagers.patch 方法提出 PATCH 要求。

PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instanceGroupManagers/INSTANCE_GROUP_NAME

{
  "instanceFlexibilityPolicy": {
    "instanceSelections": {
    "INSTANCE_SELECTION": {
        "machineTypes": [
          "MACHINE_TYPE_1",
          "MACHINE_TYPE_2"
          ...
        ]
      }
    }
  }
}

更改下列內容:

  • PROJECT_ID:您的專案 ID。
  • REGION:MIG 所在的區域。
  • INSTANCE_GROUP_NAME: MIG 的名稱。
  • INSTANCE_SELECTION:機型清單的名稱。
  • MACHINE_TYPE:要在 MIG 中設定的機器類型。
  • RANK:代表執行個體選取偏好順序的數字。值越小,表示偏好程度越高。

新增多個機型和偏好設定

控制台

  1. 前往 Google Cloud 控制台的「Instance groups」(執行個體群組) 頁面。

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

  2. 按一下要設定多個機型的 MIG 名稱。

  3. 按一下 [編輯]。

  4. 按一下「執行個體彈性」展開該部分。

  5. 在「執行個體選取項目」部分,按一下「新增選取項目」。

    「執行個體選取項目」視窗隨即開啟。 針對要在 MIG 中新增的每個執行個體選取項目,重複執行下列步驟。

    1. 按一下「新增執行個體選取項目」。

    2. 在「New instance selection」(選取新執行個體) 部分,執行下列操作:

      1. 在「名稱」欄位中,輸入執行個體選取項目的名稱。

      2. 在「Rank」(等級) 欄位中,輸入您為 MIG 新增的執行個體選項偏好順序。

      3. 在「Machine types」(機型) 部分,按一下「Add machine type」(新增機型),在執行個體選取畫面中選取要新增的機型,然後按一下「Done」(完成)。

        針對要新增至執行個體選取的每個機型,重複執行這個步驟。

      4. 新增機器類型後,按一下「完成」。

  6. 新增執行個體選取項目後,請按一下「完成」。

  7. 按一下 [儲存]。

gcloud

如要為現有 MIG 新增多個機型和偏好設定,請使用 instance-groups managed update 指令

gcloud compute instance-groups managed update INSTANCE_GROUP_NAME \
    --region REGION \
    --instance-selection "name=INSTANCE_SELECTION_1,machine-type=MACHINE_TYPE_1,machine-type=MACHINE_TYPE_2,rank=RANK_1" \
    --instance-selection "name=INSTANCE_SELECTION_2,machine-type=MACHINE_TYPE_3,machine-type=MACHINE_TYPE_4,rank=RANK_2"

更改下列內容:

  • INSTANCE_GROUP_NAME: MIG 的名稱。
  • REGION:MIG 所在的區域。
  • INSTANCE_SELECTION:機型清單的名稱。
  • MACHINE_TYPE:要在 MIG 中設定的機器類型。
  • RANK:代表執行個體選取偏好順序的數字。值越小,表示偏好程度越高。

REST

如要將多個機型和偏好設定新增至現有 MIG,請對 regionInstanceGroupManagers.patch 方法發出 PATCH 要求。

PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instanceGroupManagers/INSTANCE_GROUP_NAME

{
  "instanceFlexibilityPolicy": {
    "instanceSelections": {
      "INSTANCE_SELECTION_1": {
        "machineTypes": [
          "MACHINE_TYPE_1",
          "MACHINE_TYPE_2"
        ],
        "rank": RANK_1
      },
      "INSTANCE_SELECTION_2": {
        "machineTypes": [
          "MACHINE_TYPE_3",
          "MACHINE_TYPE_4"
        ],
        "rank": RANK_2
      }
    }
  }
}

更改下列內容:

  • PROJECT_ID:您的專案 ID。
  • REGION:MIG 所在的區域。
  • INSTANCE_GROUP_NAME: MIG 的名稱。
  • INSTANCE_SELECTION:機型清單的名稱。
  • MACHINE_TYPE:要在 MIG 中設定的機器類型。
  • RANK:代表執行個體選取偏好順序的數字。值越小,表示偏好程度越高。

新增多個機型、偏好設定和其他覆寫

控制台

  1. 前往 Google Cloud 控制台的「Instance groups」(執行個體群組) 頁面。

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

  2. 按一下要設定多個機型的 MIG 名稱。

  3. 按一下 [編輯]。

  4. 按一下「執行個體彈性」展開該部分。

  5. 在「執行個體選取項目」部分,按一下「新增選取項目」。

    「執行個體選取項目」視窗隨即開啟。 針對要在 MIG 中新增的每個執行個體選取項目,重複執行下列步驟。

    1. 按一下「新增執行個體選取項目」。

    2. 在「New instance selection」(選取新執行個體) 部分,執行下列操作:

      1. 在「名稱」欄位中,輸入執行個體選取項目的名稱。

      2. 在「Rank」(等級) 欄位中,輸入您為 MIG 新增的執行個體選項偏好順序。

      3. 在「Machine types」(機型) 部分,按一下「Add machine type」(新增機型),在執行個體選取畫面中選取要新增的機型,然後按一下「Done」(完成)。

        針對要新增至執行個體選取的每個機型,重複執行這個步驟。

      4. 如要覆寫執行個體範本中指定的最低 CPU 平台,請選取「覆寫所選項目的 CPU 平台」核取方塊。在「CPU platform」(CPU 平台) 清單中,選取要用於執行個體選取的平台。

      5. 如要覆寫執行個體範本中指定的磁碟設定,或附加儲存空間,請選取「覆寫磁碟」核取方塊。

        • 如要覆寫開機磁碟,請按一下「Boot disk」(開機磁碟) 專區中的「Change」(變更),然後按照提示操作。

        • 如要附加儲存空間,請按一下「新增磁碟」或「附加現有磁碟」,然後按照提示操作。

      6. 新增機器類型和覆寫後,按一下「完成」。

  6. 新增執行個體選取項目後,請按一下「完成」。

  7. 按一下 [儲存]。

gcloud

如要將多個機型、偏好設定和執行個體屬性覆寫項目新增至現有 MIG,請使用 beta instance-groups managed update 指令。

gcloud beta compute instance-groups managed update INSTANCE_GROUP_NAME \
    --region REGION \
    --instance-flexibility-policy= '{"instanceSelections": \
        {"INSTANCE_SELECTION_1":{"rank":RANK_1,"machineTypes":["MACHINE_TYPE_1","MACHINE_TYPE_2"],"minCpuPlatform":"MIN_CPU_PLATFORM_1","disks":[{"device-name":"DEVICE_NAME_1","boot":true,"initializeParams":{"sourceImage":"projects/IMAGE_PROJECT/global/images/IMAGE_NAME"}}]}, \
        "INSTANCE_SELECTION_2":{"rank":RANK_2,"machineTypes":["MACHINE_TYPE_3","MACHINE_TYPE_4"],"minCpuPlatform":"MIN_CPU_PLATFORM_2","disks":[{"device-name":"DEVICE_NAME_2","boot":true,"initializeParams":{"sourceImage":"projects/IMAGE_PROJECT/global/images/IMAGE_NAME"}}]}}}'

您也可以使用 YAML 或 JSON 檔案設定執行個體彈性政策。如要這麼做,請使用 --flags-file 旗標,而非 --instance-flexibility-policy 旗標,並指定檔案名稱。例如,使用 --flags-file=FILE_NAME.YAML。

更改下列內容:

  • INSTANCE_GROUP_NAME: MIG 的名稱。
  • REGION:MIG 所在的區域。
  • INSTANCE_SELECTION:機型清單的名稱。
  • MACHINE_TYPE:要在 MIG 中設定的機器類型。
  • MIN_CPU_PLATFORM:執行個體的最低 CPU 平台。
  • DEVICE_NAME:磁碟的裝置名稱。
  • IMAGE_PROJECT:來源圖片的專案 ID。
  • IMAGE_NAME:來源圖片的名稱。
  • RANK:代表執行個體選取偏好順序的數字。值越小,表示偏好程度越高。

REST

如要將多個機型、偏好設定和執行個體屬性覆寫項目新增至現有 MIG,請對 beta regionInstanceGroupManagers.patch 方法提出 PATCH 要求。

PATCH https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/regions/REGION/instanceGroupManagers/INSTANCE_GROUP_NAME

{
  "instanceFlexibilityPolicy": {
    "instanceSelections": {
      "INSTANCE_SELECTION_1": {
        "machineTypes": [
          "MACHINE_TYPE_1",
          "MACHINE_TYPE_2"
        ],
        "minCpuPlatform": "MIN_CPU_PLATFORM_1",
        "disks": [
          {
            "deviceName": "DEVICE_NAME_1",
            "initializeParams": {
              "sourceImage":"projects/IMAGE_PROJECT/global/images/IMAGE_NAME"
            },
            "boot": true
          }
        ],
        "rank": RANK_1
      },
      "INSTANCE_SELECTION_2": {
        "machineTypes": [
          "MACHINE_TYPE_3",
          "MACHINE_TYPE_4"
        ],
        "minCpuPlatform": "MIN_CPU_PLATFORM_2",
        "disks": [
          {
            "deviceName": "DEVICE_NAME_2",
            "initializeParams": {
              "sourceImage":"projects/IMAGE_PROJECT/global/images/IMAGE_NAME"
            },
            "boot": true
          }
        ],
        "rank": RANK_2
      }
    }
  }
}

更改下列內容:

  • PROJECT_ID:您的專案 ID。
  • REGION:MIG 所在的區域。
  • INSTANCE_GROUP_NAME: MIG 的名稱。
  • INSTANCE_SELECTION:機型清單的名稱。
  • MACHINE_TYPE:要在 MIG 中設定的機器類型。
  • MIN_CPU_PLATFORM:執行個體的最低 CPU 平台。
  • DEVICE_NAME:磁碟的裝置名稱。
  • IMAGE_PROJECT:來源圖片的專案 ID。
  • IMAGE_NAME:來源圖片的名稱。
  • RANK:代表執行個體選取偏好順序的數字。值越小,表示偏好程度越高。

設定執行個體彈性的 YAML 檔案範例

您可以使用 YAML 或 JSON 檔案設定執行個體彈性政策。如要這麼做,請在 gcloud CLI 指令中使用 --flags-file 旗標,並指定檔案名稱。例如,使用 --flags-file=FILE_NAME.YAML。

以下是 YAML 檔案範例:

--instance-flexibility-policy:
  instanceSelections:
    first-preference:
      rank: 1
      machineTypes:
        - n2-standard-8
      minCpuPlatform: "Intel Ice Lake"
      disks:
        - deviceName: data-disk
          boot: false
          initializeParams:
            sourceImage: projects/debian-cloud/global/images/debian-12
            diskType: pd-ssd

後續步驟