在 MIG 中创建调整大小请求


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

准备工作

  • 查看调整大小请求的工作原理
  • 为确保您有足够的 GPU 配额可以用于请求的资源,请检查您的 GPU 配额
  • 设置身份验证(如果尚未设置)。身份验证是通过其进行身份验证以访问 Google Cloud 服务和 API 的过程。如需从本地开发环境运行代码或示例,您可以按如下方式向 Compute Engine 进行身份验证。

    选择标签页以了解您打算如何使用本页面上的示例:

    控制台

    当您使用 Google Cloud 控制台访问 Google Cloud 服务和 API 时,无需设置身份验证。

    gcloud

    1. 安装 Google Cloud CLI,然后通过运行以下命令初始化 Google Cloud CLI:

      gcloud init
    2. 设置默认区域和可用区

    REST

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

      安装 Google Cloud CLI,然后通过运行以下命令初始化 Google Cloud CLI:

      gcloud init

所需的角色

如需获得在 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 天)之间。

后续步骤