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


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

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

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

  • 删除调整大小请求

准备工作

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

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

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

查看调整大小请求

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

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

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

控制台

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

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

    转到“实例组”

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

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

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

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

gcloud

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

gcloud beta 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 中所有调整大小请求的列表,请向 beta.instanceGroupManagerResizeRequests.list 方法发出 GET 请求。

GET https://compute.googleapis.com/compute/beta/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 中调整大小请求的详细信息,请使用 beta instance-groups managed resize-requests describe 命令

gcloud beta 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 中调整大小请求的详细信息,请向 beta.instanceGroupManagerResizeRequests.get 方法发出 GET 请求。

GET https://compute.googleapis.com/compute/beta/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 中的调整大小请求,请使用 beta instance-groups managed resize-requests cancel 命令

gcloud beta 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 中的调整大小请求,请向 beta.instanceGroupManagerResizeRequests.cancel 方法发出 POST 请求。

POST https://compute.googleapis.com/compute/beta/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 中的调整大小请求,请使用 beta instance-groups managed resize-requests delete 命令

gcloud beta 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 中的调整大小请求,请向 beta.instanceGroupManagerResizeRequests.delete 方法发出 DELETE 请求。

DELETE https://compute.googleapis.com/compute/beta/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:要删除的调整大小请求的名称。

后续步骤