在 MIG 中创建调整大小请求


本文档介绍了如何在挂接了 GPU 的虚拟机实例的托管式实例组 (MIG) 中创建调整大小请求。

在 MIG 中创建调整大小请求有助于您一次性创建确切数量的虚拟机,从而获取需求量很高的资源(例如 GPU)并优化成本。

准备工作

  • 查看调整大小请求的工作原理
  • 为确保您有足够的 GPU 配额可以用于请求的资源,请检查您的 GPU 配额
  • 如果您尚未设置身份验证,请进行设置。身份验证是通过其进行身份验证以访问 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. REST

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

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

        gcloud init

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

所需的角色

如需获得在 MIG 中创建调整大小请求所需的权限,请让您的管理员为您授予项目的 Compute Instance Admin (v1) (roles/compute.instanceAdmin.v1) IAM 角色。如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限

此预定义角色可提供在 MIG 中创建调整大小请求所需的权限。如需查看所需的确切权限,请展开所需权限部分:

所需权限

如需在 MIG 中创建调整大小请求,您需要以下权限:

  • 如需创建实例模板:针对项目的 compute.instanceTemplates.create 权限
  • 如需创建可用区级 MIG:针对项目的 compute.instanceGroupManagers.create 权限
  • 如需在 MIG 中创建调整大小请求:针对项目的 compute.instanceGroupManagers.update 权限

您也可以使用自定义角色或其他预定义角色来获取这些权限。

为调整大小请求准备 MIG

如需在 MIG 中创建调整大小请求,您必须配置实例模板和 MIG,如以下部分所述。

创建实例模板

如果您要在 MIG 中创建调整大小请求,则 MIG 必须使用具有以下配置的实例模板:

如需创建为在 MIG 中创建调整大小请求而配置的实例模板,请选择以下选项之一:

控制台

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

    转到“实例模板”

  2. 点击创建实例模板

  3. 名称字段中,输入实例模板的名称。

  4. 位置部分,选择以下选项之一:

    • 如需创建全球实例模板,请选择全球(如果尚未选择)。

    • 如需创建区域级实例模板,请选择区域,然后选择要在其中创建实例模板的区域。

  5. 机器配置部分中,执行以下操作:

    1. 点击 GPU 标签页。

    2. GPU 类型列表中,选择 GPU 类型。

    3. GPU 数量列表中,选择 GPU 的数量。

    4. 可选:如果您的 GPU 模型支持适用于图形工作负载的 NVIDIA RTX 虚拟工作站 (vWS),并且您计划运行图形密集型工作负载,请选择启用虚拟工作站 (NVIDIA GRID)

    5. 机器类型部分中,选择一种机器类型。

  6. 可选:如需更改启动磁盘类型或映像的默认值,请在启动磁盘部分中,点击更改。然后按照提示更改启动磁盘。

  7. 展开高级选项部分,然后执行以下操作:

    1. 展开管理部分。

    2. 预留列表中,选择不使用

  8. 点击创建

gcloud

如需创建为在 MIG 中创建调整大小请求而配置的实例模板,请使用带有以下标志的 instance-templates create 命令

  • --maintenance-policy 标志设置为 TERMINATE

  • --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 \
    --machine-type=MACHINE_TYPE \
    --maintenance-policy=TERMINATE \
    --reservation-affinity=none

替换以下内容:

  • INSTANCE_TEMPLATE_NAME:要创建的实例模板的名称。

  • IMAGE_PROJECT:映像所属的映像项目;例如 debian-cloud。如需详细了解支持的映像项目,请参阅公共映像

  • IMAGE_FAMILY映像系列。此项指定最新的未弃用操作系统映像。例如,如果您指定 debian-12,则系统会使用 Debian 12 映像系列中的最新版本。如需详细了解如何使用映像系列,请参阅映像系列最佳实践

    如果您要使用操作系统映像的特定版本(例如 debian-12-buster-v20240701),请将 --image-family 标志替换为 --image 标志。

  • REGION:要在其中创建实例模板的区域。

  • MACHINE_TYPE支持 GPU 的机器类型。 如果您指定 N1 机器类型,请添加 --accelerator 标志以指定要挂接到虚拟机的 GPU 数量和类型。

REST

如需创建为在 MIG 中创建调整大小请求而配置的实例模板,请向以下方法之一发出 POST 请求:

在请求正文中,执行以下操作:

  • 添加 scheduling.onHostMaintenance 字段,并将其设置为 TERMINATE

  • 添加 reservationAffinity.consumeReservationType 字段,并将其设置为 NO_RESERVATION

例如,如需创建区域实例模板,请发出 POST 请求,如下所示:

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": {
      "onHostMaintenance": "TERMINATE"
    }
  }
}

替换以下内容:

  • PROJECT_ID:要在其中创建实例模板的项目的 ID。

  • REGION:要在其中创建实例模板的区域。

  • INSTANCE_TEMPLATE_NAME:要创建的实例模板的名称。

  • IMAGE_PROJECT:映像所属的映像项目;例如 debian-cloud。如需详细了解支持的映像项目,请参阅公共映像

  • IMAGE:指定以下其中一项:

    • 操作系统映像的特定版本,例如 debian-12-bookworm-v20240617

    • 映像系列,其格式必须为 family/IMAGE_FAMILY。此项指定最新的未弃用操作系统映像。例如,如果您指定 family/debian-12,则系统会使用 Debian 12 映像系列中的最新版本。如需详细了解如何使用映像系列,请参阅映像系列最佳实践

  • MACHINE_TYPE支持 GPU 的机器类型。 如果您指定 N1 机器类型,请在请求正文中添加 guestAccelerators 字段,以指定要挂接到虚拟机的 GPU 的数量和类型。

如需详细了解如何创建实例模板,请参阅创建实例模板

创建或更新 MIG

按照上一部分中的说明创建实例模板后,使用该实例模板创建 MIG(如下所示)或更新 MIG。此外,您必须执行以下操作来准备用于处理调整大小请求的 MIG:

如需创建与调整大小请求兼容的 MIG,请选择以下选项之一:

控制台

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

    进入“实例组”

  2. 点击创建实例组

    此时会打开创建实例组页面。

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

  4. 实例模板列表中,选择您在上一部分中创建的实例模板。如果您选择区域级实例模板,则将区域列表设置为该实例模板所在的区域。

  5. 位置部分中,按如下所示指定您要创建地区级 MIG 还是区域级 MIG:

    1. 如需创建可用区级 MIG,请选择单个可用区。或者,如需创建地区级 MIG,请选择多个可用区

    2. 选择 MIG 的区域可用区

    3. 如果您要创建地区级 MIG,请执行以下操作:

      1. 目标分布形状字段中,选择任意单个可用区。只有在后续步骤中删除自动扩缩配置后,您才能选择此选项。

      2. 选择任意单个可用区选项后,在随即显示的对话框中,点击停用实例重新分布

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

    1. 自动扩缩部分中,点击自动扩缩模式列表,然后点击删除自动扩缩配置

    2. 在确认对话框中点击删除

  7. 按如下方式关闭修复功能:

    1. 虚拟机实例生命周期部分中,点击失败时的默认操作列表。

    2. 选择无操作

  8. 执行下列其中一项操作:

    • 如需此时创建调整大小请求,请执行以下操作:

      1. 实例数字段中,输入您要一次性创建的所有虚拟机的数量。

        “创建实例组”页面上的“实例数”字段。

      2. 选中使用调整大小请求,一次创建所有虚拟机复选框。

      3. 请求的运行时长字段和单位列表中,指定虚拟机的运行时长。时长必须介于 1 小时到 7 天之间。

    • 否则,在实例数字段中,输入 0。您稍后可以通过创建调整大小请求在实例组中添加虚拟机。

  9. 点击创建

gcloud

使用 instance-groups managed create 命令,并将 --default-action-on-vm-failure 标志设置为 do_nothing。如果您要创建地区级 MIG,则还必须添加 --target-distribution-shape 标志(设置为 any-single-zone)和 --instance-redistribution-type 标志(设置为 none)。

  • 如需创建可用区级 MIG,请运行以下命令:

    gcloud compute instance-groups managed create INSTANCE_GROUP_URL \
      --template=INSTANCE_TEMPLATE_NAME \
      --size=0 \
      --zone=ZONE \
      --default-action-on-vm-failure=do_nothing
    
  • 如需创建区域级 MIG,请运行以下命令:

    gcloud compute instance-groups managed create INSTANCE_GROUP_NAME \
        --template=INSTANCE_TEMPLATE_URL \
        --size=0 \
        --region=REGION \
        --target-distribution-shape=any-single-zone \
        --instance-redistribution-type=none \
        --default-action-on-vm-failure=do_nothing
    

替换以下内容:

  • INSTANCE_GROUP_NAME:要创建的 MIG 的名称。

  • INSTANCE_TEMPLATE_URL:您在上一部分中创建的实例模板的部分网址。如果您想使用区域实例模板创建 MIG,则只能在模板所在的区域内创建 MIG。请指定以下某个值:

    • 对于区域级实例模板:projects/PROJECT_ID/regions/REGION/instanceTemplates/INSTANCE_TEMPLATE_NAME

    • 对于全球实例模板:INSTANCE_TEMPLATE_NAME

  • ZONE:要用于创建 MIG 的可用区。

  • REGION:要用于创建 MIG 的区域。

REST

  • 如需创建可用区级 MIG,请使用 instanceGroupManagers.insert 方法发送 POST 请求,如下所示:

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instanceGroupManagers
    
    {
      "versions": [
        {
          "instanceTemplate": "INSTANCE_TEMPLATE_URL"
        }
      ],
      "name": "INSTANCE_GROUP_NAME",
      "targetSize": 0,
      "instanceLifecyclePolicy": {
        "defaultActionOnFailure": "DO_NOTHING"
      }
    }
    
  • 如需创建区域级 MIG,请使用 regionInstanceGroupManagers.insert 方法发送 POST 请求,如下所示:

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instanceGroupManagers
    
    {
      "versions": [
        {
          "instanceTemplate": "INSTANCE_TEMPLATE_URL"
        }
      ],
      "name": "INSTANCE_GROUP_NAME",
      "targetSize": 0,
      "distributionPolicy": {
        "targetShape": "ANY_SINGLE_ZONE"
      },
      "updatePolicy": {
        "instanceRedistributionType": "NONE"
      },
      "instanceLifecyclePolicy": {
        "defaultActionOnFailure": "DO_NOTHING"
      }
    }
    

替换以下内容:

  • PROJECT_ID:您在上一部分中创建的实例模板所在项目的 ID。

  • INSTANCE_TEMPLATE_URL:您在上一部分中创建的实例模板的部分网址。如果您想使用区域实例模板创建 MIG,则只能在模板所在的区域内创建 MIG。请指定以下某个值:

    • 对于区域级实例模板:regions/REGION/instanceTemplates/INSTANCE_TEMPLATE_NAME

    • 对于全球实例模板:global/instanceTemplates/INSTANCE_TEMPLATE_NAME

  • ZONE:要用于创建 MIG 的可用区。

  • REGION:要用于创建 MIG 的区域。

  • INSTANCE_GROUP_NAME:要创建的 MIG 的名称。

在 MIG 中创建调整大小请求

在创建调整大小请求之前,请确保已按照上一部分中的说明准备好 MIG

创建调整大小请求后,如果请求被接受且所有请求的资源都可用,MIG 会同时创建请求的虚拟机数量。虚拟机会一直运行,直到 MIG 在指定运行时长结束后删除它们或直到您删除它们

如需在 MIG 中创建调整大小请求,请选择以下选项之一:

控制台

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

    转到“实例组”

  2. 名称列中,点击要用于创建调整大小请求的 MIG 的名称。

    系统会打开此 MIG 的概览页面。

  3. 调整大小请求行中,点击 修改调整大小请求

  4. 点击 新建调整大小请求

    系统会显示新建调整大小请求窗格。

  5. 名称字段中,输入调整大小请求的名称。

  6. 需要的额外实例数量字段中,输入要一次性添加到 MIG 的所有虚拟机的数量。

  7. 请求的运行时长单位字段中,指定您希望请求的虚拟机运行的时长。时长必须介于 1 小时到 7 天之间。

  8. 点击创建

gcloud

  • 如需在可用区级 MIG 中创建调整大小请求,请使用 instance-groups managed resize-requests create 命令

    gcloud compute instance-groups managed resize-requests create INSTANCE_GROUP_NAME \
        --resize-request=RESIZE_REQUEST_NAME \
        --resize-by=COUNT \
        --requested-run-duration=RUN_DURATION \
        --zone=ZONE
    
  • 如需在区域级 MIG 中创建调整大小请求,请使用 beta instance-groups managed resize-requests create 命令

    gcloud beta compute instance-groups managed resize-requests create INSTANCE_GROUP_NAME \
        --resize-request=RESIZE_REQUEST_NAME \
        --resize-by=COUNT \
        --requested-run-duration=RUN_DURATION \
        --region=REGION
    

替换以下内容:

  • INSTANCE_GROUP_NAME:经过配置,可用于创建调整大小请求的 MIG 的名称。

  • RESIZE_REQUEST_NAME:调整大小请求的名称,该名称在指定的 MIG 中必须是唯一的。否则,创建调整大小请求的操作将失败。

  • COUNT:要同时添加到 MIG 的虚拟机数量。

  • RUN_DURATION:您希望请求的虚拟机运行的时长。该值的格式必须为天数、小时数、分钟数或秒数,后面分别跟 dhms。例如,指定 30m 表示 30 分钟,或指定 1d2h3m4s 表示 1 天 2 小时 3 分钟 4 秒。该值必须介于 10 分钟到 7 天之间。

  • ZONE:该 MIG 所在的可用区。

  • REGION:MIG 所在的区域。

REST

  • 如需在可用区级 MIG 中创建调整大小请求,请使用 instanceGroupManagerResizeRequests.insert 方法发送 POST 请求。

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instanceGroupManagers/INSTANCE_GROUP_NAME/resizeRequests
    
  • 如需在地区级 MIG 中创建调整大小请求,请使用 beta.regionInstanceGroupManagerResizeRequests.insert 方法发送 POST 请求。

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

在请求正文中,添加以下各项:

{
  "name": "RESIZE_REQUEST_NAME",
  "resizeBy": COUNT,
  "requestedRunDuration": {
    "seconds": "RUN_DURATION"
  }
}

替换以下内容:

  • PROJECT_ID:指定的 MIG 所在项目的 ID。

  • ZONE:该 MIG 所在的可用区。

  • REGION:MIG 所在的区域。

  • INSTANCE_GROUP_NAME:经过配置,可用于创建调整大小请求的 MIG 的名称。

  • RESIZE_REQUEST_NAME:调整大小请求的名称,该名称在指定的 MIG 中必须是唯一的。否则,创建调整大小请求的操作将失败。

  • COUNT:要同时添加到 MIG 的虚拟机数量。

  • RUN_DURATION:您希望请求的虚拟机运行的时长(以秒为单位)。该值必须介于 600(600 秒,即 10 分钟)到 604800(604,800 秒,即 7 天)之间。

创建调整大小请求后,您可以查看调整大小请求的详细信息,以查看其状态或对其进行问题排查。

后续步骤