在 MIG 中创建调整大小请求


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

准备工作

  • 查看调整大小请求的工作原理
  • 为确保您有足够的 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

例如,使用以下命令:

gcloud compute instance-templates create INSTANCE_TEMPLATE_NAME \
    --image-project=IMAGE_PROJECT \
    --image-family=IMAGE_FAMILY \
    --machine-type=MACHINE_TYPE \
    --maintenance-policy=TERMINATE \
    --reservation-affinity=none

替换以下内容:

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

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

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

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

    • IMAGE:操作系统映像的特定版本;例如 debian-10-buster-v20200309。 如果您选择指定操作系统映像的特定版本,则必须将 --image-family 标志替换为 --image 标志。

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

REST

如需创建为在 MIG 中创建调整大小请求而配置的实例模板,请向 instanceTemplates.insert 方法发出 POST 请求。在请求正文中,执行以下操作:

  • scheduling.onHostMaintenance 字段设置为 TERMINATE

  • reservationAffinity.consumeReservationType 字段设置为 NO_RESERVATION

例如,发出如下 POST 请求:

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

{
  "name": "INSTANCE_TEMPLATE_NAME",
  "properties": {
    "disks": [
      {
        "boot": true,
        "mode": "READ_WRITE",
        "type": "PERSISTENT",
        "initializeParams": {
          "sourceImage": "projects/IMAGE_PROJECT/global/images/IMAGE"
        }
      }
    ],
    "machineType": "MACHINE_TYPE",
    "networkInterfaces": [
      {
        "accessConfigs": [
          {
            "name": "external-IP",
            "type": "ONE_TO_ONE_NAT"
          }
        ],
        "network": "global/networks/default"
      }
    ],
    "reservationAffinity": {
      "consumeReservationType": "NO_RESERVATION"
    },
    "scheduling": {
      "onHostMaintenance": "TERMINATE"
    }
  }
}

替换以下内容:

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

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

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

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

    • IMAGE:操作系统映像的特定版本;例如 debian-10-buster-v20200309

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

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

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

创建或更新 MIG

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

控制台

如需创建为创建调整大小请求而配置的可用区级 MIG,请执行以下操作:

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

    进入“实例组”

  2. 点击创建实例组

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

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

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

  5. 位置部分,执行以下操作:

    1. 选择单个可用区(默认)。

    2. 选择 MIG 的区域可用区

  6. 如需删除自动扩缩配置,请执行以下操作:

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

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

  7. 如需关闭修复功能,请在虚拟机实例生命周期部分中,点击失败时的默认操作列表,然后选择无操作

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

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

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

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

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

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

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

  9. 点击创建

gcloud

如需创建为创建大小调整请求而配置的可用区级 MIG,请使用 instance-groups managed create 命令,并将 --default-action-on-vm-failure 标志设置为 do_nothing

gcloud compute instance-groups managed create INSTANCE_GROUP_NAME \
    --template=INSTANCE_TEMPLATE_NAME \
    --size=0 \
    --zone=ZONE \
    --default-action-on-vm-failure=do_nothing

替换以下内容:

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

  • INSTANCE_TEMPLATE_NAME:您在上一部分中创建的实例模板的名称。

  • ZONE:要用于创建虚拟机的可用区。

REST

如需创建为创建调整大小请求而配置的可用区级 MIG,请向 instanceGroupManagers.insert 方法发出 POST 请求。在请求正文中,添加设置为 DO_NOTHINGdefaultActionOnFailure 字段。

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instanceGroupManagers

{
  "versions": [
    {
      "instanceTemplate": "global/instanceTemplates/INSTANCE_TEMPLATE_NAME"
    }
  ],
  "name": "INSTANCE_GROUP_NAME",
  "targetSize": 0,
  "instanceLifecyclePolicy": {
    "defaultActionOnFailure": "DO_NOTHING"
  }
}

替换以下内容:

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

  • ZONE:要用于创建虚拟机的可用区。

  • INSTANCE_TEMPLATE_NAME:您在上一部分中创建的实例模板的名称。

  • 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 中创建调整大小请求,请使用 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 \
    --zone=ZONE

替换以下内容:

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

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

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

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

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

REST

如需在 MIG 中创建调整大小请求,请向 beta.instanceGroupManagerResizeRequests.insert 方法发出 POST 请求。

POST https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/zones/ZONE/instanceGroupManagers/INSTANCE_GROUP_NAME/resizeRequests

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

替换以下内容:

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

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

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

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

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

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

后续步骤