添加实例灵活性


本文档介绍了如何添加实例灵活性,以便您在 MIG 中设置多个机器类型。

您可以在创建 MIG 或修改现有 MIG 时提高实例灵活性。如需增加灵活性,请在 MIG 中配置实例灵活性政策。该政策会替换实例模板中指定的机器类型。每当 MIG 创建虚拟机 (VM) 实例时,都会根据资源可用性自动选择您在政策中列出的某种机器类型。您还可以为机器类型列表分配排名,以指明您的偏好。

如需了解实例灵活性在 MIG 中的运作方式,请参阅实例灵活性简介

准备工作

  • 请确保您选择的机器类型在 MIG 所在的区域受支持。如需查看某个区域的机器类型,请参阅可用区域和地区
  • 如果您尚未设置身份验证,请进行设置。身份验证是通过其进行身份验证以访问 Google Cloud 服务和 API 的过程。如需从本地开发环境运行代码或示例,您可以选择以下任一选项向 Compute Engine 进行身份验证:

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

    Console

    When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.

    gcloud

    1. Install the Google Cloud CLI, then initialize it by running the following command:

      gcloud init
    2. Set a default region and zone.
    3. Terraform

      如需在本地开发环境中使用本页面上的 Terraform 示例,请安装并初始化 gcloud CLI,然后使用您的用户凭据设置应用默认凭据。

      1. Install the Google Cloud CLI.
      2. To initialize the gcloud CLI, run the following command:

        gcloud init
      3. If you're using a local shell, then create local authentication credentials for your user account:

        gcloud auth application-default login

        You don't need to do this if you're using Cloud Shell.

      如需了解详情,请参阅 Set up authentication for a local development environment

      REST

      如需在本地开发环境中使用本页面上的 REST API 示例,请使用您提供给 gcloud CLI 的凭据。

        Install the Google Cloud CLI, then initialize it by running the following command:

        gcloud init

      如需了解详情,请参阅 Google Cloud 身份验证文档中的使用 REST 时进行身份验证

创建具有实例灵活性的 MIG

在创建 MIG 之前,如果您还没有实例模板,则必须先创建一个实例模板。然后,您可以创建具有实例灵活性的 MIG,以替换实例模板中指定的机器类型。

您可以通过以下任一方式创建具有实例灵活性的 MIG:

创建具有多个机器类型的 MIG

控制台

  1. 在 Google Cloud 控制台中,转到实例组页面。

    进入“实例组”

  2. 点击创建实例组

  3. 名称字段中,输入 MIG 的名称。

  4. 实例模板列表中,选择要为 MIG 使用的实例模板。

  5. 您需要先执行以下操作,然后才能指定实例数并添加实例选择

    1. 按如下方式设置位置:

      1. 继续滚动到位置部分,然后选择多个可用区

      2. 区域可用区下拉菜单中,选择要在 MIG 中创建虚拟机的区域和可用区。如果您选择了区域级实例模板,则系统会默认选择该模板所在的区域。

      3. 目标分布形状字段中,选择均衡任意单个可用区

      4. 在随即打开的对话框中,点击停用实例重新分配

    2. 按如下方式删除自动扩缩配置:

      1. 自动扩缩部分中,点击自动扩缩模式下拉菜单中的删除自动扩缩配置

      2. 在随即打开的对话框中,点击删除

    3. 滚动回实例数字段。

  6. 实例数字段中,指定您希望在该组中包含的虚拟机数量。

  7. 实例选择部分中,点击添加实例选择

    系统随即会打开实例选择窗口。

    1. 点击添加实例选择

    2. 新实例选择部分中,执行以下操作:

      1. 名称字段中,为所选实例输入名称。

      2. 机器类型部分中,点击添加机器类型,在实例选择中选择要添加的机器类型,然后点击完成

        针对您要添加到实例选择中的每种机器类型重复此步骤。

      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 \
    --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 创建和维护的虚拟机数量。
  • INSTANCE_TEMPLATE:实例模板的名称。
  • SHAPE:目标分布形状。值可以是 balancedany-single-zone。不支持其他目标分布形状。
  • MACHINE_TYPE:您要在 MIG 中配置的机器类型,例如 n1-standard-16,n2-standard-16,e2-standard-16

Terraform

如果您尚未创建您希望为 MIG 中的每个虚拟机指定虚拟机属性的实例模板,请创建实例模板

如需创建具有多个机器类型的区域级 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 创建和维护的虚拟机数量。
  • INSTANCE_TEMPLATE_URL:实例模板的网址。
  • SHAPE:目标分布形状。值可以是 BALANCEDANY_SINGLE_ZONE。不支持其他目标分布形状。
  • INSTANCE_SELECTION:机器类型列表的名称。
  • MACHINE_TYPE:您要在 MIG 中配置的机器类型,例如 "n1-standard-16","n2-standard-16","e2-standard-16"

创建具有多个机器类型和偏好的 MIG

控制台

  1. 在 Google Cloud 控制台中,转到实例组页面。

    进入“实例组”

  2. 点击创建实例组

  3. 名称字段中,输入 MIG 的名称。

  4. 实例模板列表中,选择要为 MIG 使用的实例模板。

  5. 您需要先执行以下操作,然后才能指定实例数并添加实例选择

    1. 按如下方式设置位置:

      1. 继续滚动到位置部分,然后选择多个可用区

      2. 区域可用区下拉菜单中,选择要在 MIG 中创建虚拟机的区域和可用区。如果您选择了区域级实例模板,则系统会默认选择该模板所在的区域。

      3. 目标分布形状字段中,选择均衡任意单个可用区

      4. 在随即打开的对话框中,点击停用实例重新分配

    2. 按如下方式删除自动扩缩配置:

      1. 自动扩缩部分中,点击自动扩缩模式下拉菜单中的删除自动扩缩配置

      2. 在随即打开的对话框中,点击删除

    3. 滚动回实例数字段。

  6. 实例数字段中,指定您希望在该组中包含的虚拟机数量。

  7. 实例选择部分中,点击添加实例选择

    系统随即会打开实例选择窗口。 针对您要添加到 MIG 中的每个实例选择重复执行以下步骤。

    1. 点击添加实例选择

    2. 新实例选择部分中,执行以下操作:

      1. 名称字段中,为所选实例输入名称。

      2. Rank 字段中,输入为 MIG 添加的实例选择的优先级顺序。

      3. 机器类型部分中,点击添加机器类型,在实例选择中选择要添加的机器类型,然后点击完成

        针对您要添加到实例选择中的每种机器类型重复此步骤。

      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 \
    --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 创建和维护的虚拟机数量。
  • INSTANCE_TEMPLATE:实例模板的名称。
  • SHAPE:目标分布形状。值可以是 balancedany-single-zone。不支持其他目标分布形状。
  • INSTANCE_SELECTION:机器类型列表的名称。您可以添加具有不同偏好的多个名单。
  • MACHINE_TYPE:您要在 MIG 中配置的机器类型。

Terraform

如果您尚未创建您希望为 MIG 中的每个虚拟机指定虚拟机属性的实例模板,请创建实例模板

如需创建具有多个机器类型和偏好的区域级 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 创建和维护的虚拟机数量。
  • INSTANCE_TEMPLATE_URL:实例模板的网址。
  • SHAPE:目标分布形状。值可以是 BALANCEDANY_SINGLE_ZONE
  • ZONE:您要创建 MIG 的可用区。如果您想在特定可用区中创建区域级 MIG,请使用此字段。否则,您可以跳过此字段。
  • INSTANCE_SELECTION:机器类型列表的名称。您可以添加具有不同偏好的多个名单。
  • MACHINE_TYPE:您要在 MIG 中配置的机器类型。
  • RANK:代表偏好顺序的数字。值越小,偏好程度越高。

为现有 MIG 添加实例灵活性

您可以为现有 MIG 添加实例灵活性。您可以设置多种机器类型,还可以为特定机器类型设置偏好设置。

如果 MIG 中已有虚拟机,这些虚拟机会继续使用实例模板中指定的机器类型。如果您希望 MIG 中的现有虚拟机使用实例灵活性政策中的机器类型,请在添加该政策后删除现有虚拟机,然后调整 MIG 的大小,使其达到所需的虚拟机数量。调整大小时,新虚拟机将使用政策中的机器类型。

如果您想向现有实例灵活性政策添加实例选择,请参阅更改实例灵活性配置

您可以通过以下任一方式为 MIG 添加实例灵活性:

添加多个机器类型

控制台

  1. 在 Google Cloud 控制台中,转到实例组页面。

    进入“实例组”

  2. 点击您要设置多个机器类型的 MIG 的名称。

  3. 点击修改

  4. 实例选择部分中,点击添加实例选择

    系统随即会打开实例选择窗口。

    1. 点击添加实例选择

    2. 新实例选择部分中,执行以下操作:

      1. 名称字段中,为所选实例输入名称。

      2. 机器类型部分中,点击添加机器类型,在实例选择中选择要添加的机器类型,然后点击完成

        针对您要添加到实例选择中的每种机器类型重复此步骤。

      3. 将机器类型添加到实例选择后,点击完成

  5. 实例选择窗口中,点击完成

  6. 点击保存

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 中配置的机器类型,例如 n1-standard-16,n2-standard-16,e2-standard-16

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 中配置的机器类型,例如 "n1-standard-16","n2-standard-16","e2-standard-16"
  • RANK:代表偏好顺序的数字。值越小,偏好程度越高。

添加多个机器类型和偏好

控制台

  1. 在 Google Cloud 控制台中,转到实例组页面。

    进入“实例组”

  2. 点击您要设置多个机器类型的 MIG 的名称。

  3. 点击修改

  4. 实例选择部分中,点击添加实例选择

    系统随即会打开实例选择窗口。 针对您要添加到 MIG 中的每个实例选择重复执行以下步骤。

    1. 点击添加实例选择

    2. 新实例选择部分中,执行以下操作:

      1. 名称字段中,为所选实例输入名称。

      2. Rank 字段中,输入为 MIG 添加的实例选择的优先级顺序。

      3. 机器类型部分中,点击添加机器类型,在实例选择中选择要添加的机器类型,然后点击完成

        针对您要添加到实例选择中的每种机器类型重复此步骤。

      4. 将机器类型添加到实例选择后,点击完成

  5. 添加完实例选择后,点击完成

  6. 点击保存

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 中配置的机器类型。

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 中配置的机器类型。

后续步骤