查看、取消或删除 MIG 中的调整大小请求


本文档介绍如何在托管式实例组 (MIG) 中创建调整大小请求后执行以下操作:

  • 查看 MIG 中的调整大小请求,以监控其状态或进行问题排查。

  • 取消调整大小请求以阻止 MIG 创建请求数量的虚拟机 (VM) 实例。

  • 删除调整大小请求

准备工作

  • 设置身份验证(如果尚未设置)。身份验证是通过其进行身份验证以访问 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 中的调整大小请求,您需要拥有以下权限:

  • 如需取消或删除 MIG 中的调整大小请求: compute.instanceGroupManagers.update
  • 如需查看 MIG 中的调整大小请求列表: compute.instanceGroupManagers.list
  • 如需查看调整大小请求的详细信息: compute.instanceGroupManagers.get

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

查看调整大小请求

根据您要在调整大小请求中查看的详细信息,使用以下方法之一:

查看 MIG 中的调整大小请求列表

您可以查看 MIG 中所有调整大小请求的列表及其详细信息,例如状态、请求的虚拟机数量和虚拟机的运行时长。

控制台

如需查看 MIG 中所有调整大小请求的列表,请执行以下操作:

  1. 在 Google Cloud Console 中,转到实例组页面。

    转到“实例组”

  2. 名称列中,点击包含调整大小请求的 MIG 的名称。

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

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

    此时会显示调整大小请求窗格。

gcloud

如需查看 MIG 中所有调整大小请求的列表,请使用 instance-groups managed resize-requests list 命令

gcloud compute instance-groups managed resize-requests list INSTANCE_GROUP_NAME \
    --zone=ZONE

替换以下内容:

  • INSTANCE_GROUP_NAME:包含已接受、成功、已取消或失败的调整大小请求的现有可用区级 MIG 的名称。

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

输出类似于以下内容:

NAME: rr-01
LOCATION: us-central1-a
SCOPE: zone
RESIZE_BY: 5
STATE: SUCCEEDED
REQUESTED_RUN_DURATION: P1D

NAME: rr-02
LOCATION: us-central1-a
SCOPE: zone
RESIZE_BY: 10
STATE: ACCEPTED
REQUESTED_RUN_DURATION: P3D

REST

如需查看可用区级 MIG 中所有调整大小请求的列表,请向 instanceGroupManagerResizeRequests.list 方法发出 GET 请求。

GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instanceGroupManagers/INSTANCE_GROUP_NAME/resizeRequests

替换以下内容:

  • PROJECT_ID:包含已接受、成功、取消或失败的调整大小请求的现有可用区级 MIG 所在项目的 ID。

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

  • INSTANCE_GROUP_NAME:包含已接受、成功、已取消或失败的调整大小请求的现有可用区级 MIG 的名称。

输出类似于以下内容:

{
  "kind": "compute#instanceGroupManagerResizeRequestList",
  "id": "projects/example-project/zones/us-central1-a/instanceGroupManagers/example-mig/resizeRequests",
  "items": [
    {
      "kind": "compute#instanceGroupManagerResizeRequest",
      "id": "4247139565532196982",
      "creationTimestamp": "2024-01-08T07:51:53.034-08:00",
      "name": "rr-01",
      "zone": "https://www.googleapis.com/compute/beta/projects/example-project/zones/us-central1-a",
      "count": 5,
      "resizeBy": 5,
      "requestedRunDuration": {
        "seconds": "86400",
        "nanos": 0
      },
      "state": "SUCCEEDED",
      "status": {},
      "selfLink": "https://www.googleapis.com/compute/beta/projects/example-project/zones/us-central1-a/instanceGroupManagers/example-mig/resizeRequests/rr-01",
      "selfLinkWithId": "https://www.googleapis.com/compute/beta/projects/example-project/zones/us-central1-a/instanceGroupManagers/example-mig/resizeRequests/4247139565532196982"
    },
    {
      "kind": "compute#instanceGroupManagerResizeRequest",
      "id": "8095866098849525652",
      "creationTimestamp": "2024-01-11T08:04:11.851-08:00",
      "name": "rr-02",
      "zone": "https://www.googleapis.com/compute/beta/projects/example-project/zones/us-central1-a",
      "count": 10,
      "resizeBy": 10,
      "requestedRunDuration": {
        "seconds": "259200",
        "nanos": 0
      },
      "state": "ACCEPTED",
      "status": {},
      "selfLink": "https://www.googleapis.com/compute/beta/projects/example-project/zones/us-central1-a/instanceGroupManagers/example-mig/resizeRequests/rr-02",
      "selfLinkWithId": "https://www.googleapis.com/compute/beta/projects/example-project/zones/us-central1-a/instanceGroupManagers/example-mig/resizeRequests/8095866098849525652"
    }
  ],
  "selfLink": "https://www.googleapis.com/compute/beta/projects/example-project/zones/us-central1-a/instanceGroupManagers/example-mig/resizeRequests"
}

查看调整大小请求的详细信息

您可以查看调整大小请求的详细信息以查看其配置,并视需要在请求未成功时进行问题排查。

如需了解 (ACCEPTED) 调整大小请求失败的原因,请查看详细信息中的 lastAttempt.error.errors.code 字段。可能的错误代码如下:

  • ZONE_RESOURCE_POOL_EXHAUSTED_WITH_DETAILS:请求的资源暂时不可用。

  • QUOTA_EXCEEDED:您的项目缺少所请求资源的配额。如需增加项目的配额,请参阅申请更高配额

gcloud

如需查看可用区级 MIG 中调整大小请求的详细信息,请使用 instance-groups managed resize-requests describe 命令

gcloud compute instance-groups managed resize-requests describe INSTANCE_GROUP_NAME \
    --resize-request=RESIZE_REQUEST_NAME \
    --zone=ZONE

替换以下内容:

  • INSTANCE_GROUP_NAME:调整大小请求所在的现有可用区级 MIG 的名称。

  • RESIZE_REQUEST_NAME:要查看其详细信息的现有调整大小请求的名称。

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

输出类似于以下内容:

creationTimestamp: '2024-01-10T07:51:53.034-08:00'
id: '4247139565532196982'
kind: compute#instanceGroupManagerResizeRequest
name: example-request
requestedRunDuration:
  nanos: 0
  seconds: '6000'
resizeBy: 10
selfLink: https://www.googleapis.com/compute/beta/projects/example-project/zones/us-central1-a/instanceGroupManagers/example-mig/resizeRequests/example-request
selfLinkWithId: https://www.googleapis.com/compute/beta/projects/example-project/zones/us-central1-a/instanceGroupManagers/example-mig/resizeRequests/4247139565532196982
state: ACCEPTED
status:
  lastAttempt:
    error:
      errors:
      - code: ZONE_RESOURCE_POOL_EXHAUSTED_WITH_DETAILS
        message: There are currently not enough resources available to fulfill the request.
      - code: QUOTA_EXCEEDED
        message: Quota 'NVIDIA_A100_GPUS' exceeded. Limit: 1500 in region us-central1.
zone: https://www.googleapis.com/compute/beta/projects/example-project/zones/us-central1-a

REST

如需查看 MIG 中调整大小请求的详细信息,请向 instanceGroupManagerResizeRequests.get 方法发出 GET 请求。

GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instanceGroupManagers/INSTANCE_GROUP_NAME/resizeRequests/RESIZE_REQUEST_NAME

替换以下内容:

  • PROJECT_ID:可用区级 MIG 所在项目的 ID。

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

  • INSTANCE_GROUP_NAME:调整大小请求所在的现有可用区级 MIG 的名称。

  • RESIZE_REQUEST_NAME:要查看其详细信息的现有调整大小请求的名称。

输出类似于以下内容:

{
  "kind": "compute#instanceGroupManagerResizeRequest",
  "id": "4247139565532196982",
  "creationTimestamp": "2024-01-10T07:51:53.034-08:00",
  "name": "example-request",
  "zone": "https://www.googleapis.com/compute/beta/projects/example-project/zones/us-central1-a",
  "count": 10,
  "resizeBy": 10,
  "requestedRunDuration": {
    "seconds": "6000",
    "nanos": 0
  },
  "state": "ACCEPTED",
  "status": {
    "lastAttempt": {
      "error": {
        "errors": [
          {
            "code": "ZONE_RESOURCE_POOL_EXHAUSTED_WITH_DETAILS",
            "message": "There are currently not enough resources available to fulfill the request.",
          },
          {
            "code": "QUOTA_EXCEEDED",
            "message": "Quota 'NVIDIA_A100_GPUS' exceeded. Limit: 1500 in region us-central1."
          }
        ]
      }
    }
  },
  "selfLink": "https://www.googleapis.com/compute/beta/projects/example-project/zones/us-central1-a/instanceGroupManagers/example-mig/resizeRequests/example-request",
  "selfLinkWithId": "https://www.googleapis.com/compute/beta/projects/example-project/zones/us-central1-a/instanceGroupManagers/example-mig/resizeRequests/4247139565532196982"
}

取消 MIG 中的调整大小请求

您可以取消 MIG 中的调整大小请求,以阻止 MIG 尝试创建请求数量的虚拟机。您只能取消已接受 (ACCEPTED) 的调整大小请求。取消调整大小请求后,您可以将其删除,也可以让 Compute Engine 在 14 天后自动删除它。

如需一次取消多个调整大小请求,请使用 Google Cloud 控制台或 gcloud CLI。

控制台

如需取消可用区级 MIG 中的调整大小请求,请执行以下操作:

  1. 在 Google Cloud Console 中,转到实例组页面。

    转到“实例组”

  2. 名称列中,点击包含调整大小请求的 MIG 的名称。

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

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

    此时会显示调整大小请求窗格。

  4. 选择要取消的调整大小请求。

  5. 点击 取消,然后点击确认

gcloud

如需取消可用区级 MIG 中的调整大小请求,请使用 instance-groups managed resize-requests cancel 命令

gcloud compute instance-groups managed resize-requests cancel INSTANCE_GROUP_NAME \
    --resize-requests=RESIZE_REQUEST_NAMES \
    --zone=ZONE

替换以下内容:

  • INSTANCE_GROUP_NAME:已接受调整大小请求的现有可用区级 MIG 的名称。

  • RESIZE_REQUEST_NAMES:指定的可用区级 MIG 中已接受的调整大小请求的名称列表(以英文逗号分隔)。例如,指定 request-1,request-2

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

REST

如需取消可用区级 MIG 中的调整大小请求,请向 instanceGroupManagerResizeRequests.cancel 方法发出 POST 请求。

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instanceGroupManagers/INSTANCE_GROUP_NAME/resizeRequests/RESIZE_REQUEST_NAME/cancel

替换以下内容:

  • PROJECT_ID:具有接受的调整大小请求的现有可用区级 MIG 所在项目的 ID。

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

  • INSTANCE_GROUP_NAME:MIG 的名称。

  • RESIZE_REQUEST_NAME:要取消的调整大小请求的名称。

删除 MIG 中的调整大小请求

默认情况下,Compute Engine 会在将请求状态设置为以下状态之一后的 14 天内自动删除调整大小请求:

  • 成功 (SUCCEEDED)

  • 已失败 (FAILED)

  • 已取消 (CANCELLED)

但是,您可以在此之前立即删除调整大小请求,如本部分所述。

删除成功的调整大小请求不会删除通过该请求创建的虚拟机。MIG 会在请求的运行时长结束时自动删除这些虚拟机。但是,如果您的作业已完成运行,而您不再需要虚拟机,请删除虚拟机

如需一次删除多个调整大小请求,请使用 Google Cloud 控制台或 gcloud CLI。

控制台

如需删除可用区级 MIG 中的调整大小请求,请执行以下操作:

  1. 在 Google Cloud Console 中,转到实例组页面。

    转到“实例组”

  2. 名称列中,点击包含调整大小请求的 MIG 的名称。

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

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

    此时会显示调整大小请求窗格。

  4. 选择要删除的调整大小请求。

  5. 点击 删除,然后点击确认

gcloud

如需删除可用区级 MIG 中的调整大小请求,请使用 instance-groups managed resize-requests delete 命令

gcloud compute instance-groups managed resize-requests delete INSTANCE_GROUP_NAME \
    --resize-requests=RESIZE_REQUEST_NAMES \
    --zone=ZONE

替换以下内容:

  • INSTANCE_GROUP_NAME:具有成功、失败或取消的调整大小请求的现有可用区级 MIG 的名称。

  • RESIZE_REQUEST_NAMES:要在 MIG 中删除的调整大小请求的名称列表(以英文逗号分隔)。例如,指定 request-1,request-2

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

REST

如需删除可用区级 MIG 中的调整大小请求,请向 instanceGroupManagerResizeRequests.delete 方法发出 DELETE 请求。

DELETE https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instanceGroupManagers/INSTANCE_GROUP_NAME/resizeRequests/RESIZE_REQUEST_NAME

替换以下内容:

  • PROJECT_ID:具有成功、失败或取消的调整大小请求的现有可用区级 MIG 所在项目的 ID。

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

  • INSTANCE_GROUP_NAME:MIG 的名称。

  • RESIZE_REQUEST_NAME:要删除的调整大小请求的名称。

后续步骤