查看 Compute Engine 实例中的正常关停


本文档说明了如何在 Compute Engine 实例中查看正常关停的设置和进度。如需详细了解正常关停,请参阅正常关停概览

查看实例的详细信息时,您可以执行以下操作:

  • 查看正常关停设置。您可以验证是否启用了正常关停,以及正常关停持续多长时间。

  • 监控正常关停。在进行正常关停时,您可以检查以下各项:

    • 正常关停进程何时超时。

    • 停止或删除操作是否正在进行。

准备工作

  • 如果您尚未设置身份验证,请进行设置。身份验证是通过其进行身份验证以访问 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 时进行身份验证

所需的角色

如需获得查看计算实例正常关停情况所需的权限,请让管理员向您授予项目的 Compute Instance Admin (v1) (roles/compute.instanceAdmin.v1) IAM 角色。如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限

此预定义角色包含查看计算实例正常关停情况所需的 compute.instances.get on the project 权限。

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

查看正常关停设置

如需查看计算实例中的正常关停设置,请选择以下选项之一:

控制台

  1. 在 Google Cloud 控制台中,前往虚拟机实例页面。

    进入“虚拟机实例”

  2. 名称列中,点击您的实例的名称。

    系统会在详细信息标签页中打开实例的详细信息页面。

  3. 如需检查正常关停设置,请在可用性政策部分中检查正常关停时长上限字段的值。此字段显示正常关停时段。如果显示连字符 (-),则表示已停用正常关停。

gcloud

如需查看实例中的正常关停设置,请使用 gcloud beta compute instances describe 命令

gcloud beta compute instances describe INSTANCE_NAME \
    --zone=ZONE

替换以下内容:

  • INSTANCE_NAME:实例的名称。

  • ZONE:实例所在的可用区。

如果已启用正常关停,则输出类似于以下内容:

...
scheduling:
  ...
  gracefulShutdown:
    enabled: true
    maxDuration:
      seconds: 'MAX_DURATION'
  ...
...

输出包含 MAX_DURATION 值。此值表示正常关停时段的持续时间(以秒为单位)。如果您在实例中启用正常关停时未指定自定义关停时段,Compute Engine 会省略 maxDuration 字段并将正常关停时段设置为 10 分钟。

REST

如需查看实例中的正常关停设置,请向 Beta 版 instances.get 方法发出 GET 请求:

GET https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME

替换以下内容:

  • PROJECT_ID:您在其中创建了实例的项目的 ID。

  • ZONE:实例所在的可用区。

  • INSTANCE_NAME:实例的名称。

如果已启用正常关停,则输出类似于以下内容:

{
  ...
  "scheduling": {
    ...
    "gracefulShutdown": {
      "enabled": true,
      "maxDuration": {
        "seconds": "MAX_DURATION"
      }
    }
  },
  ...
}

输出包含 MAX_DURATION 值。此值表示正常关停时段的持续时间(以秒为单位)。如果您在实例中启用正常关停时未指定自定义关停时段,Compute Engine 会省略 maxDuration 字段并将正常关停时段设置为 10 分钟。

监控正常关停

如需监控计算实例中正在进行的正常关停,请选择以下选项之一:

控制台

  1. 在 Google Cloud 控制台中,前往虚拟机实例页面。

    进入“虚拟机实例”

  2. 名称列中,点击您的实例的名称。

    系统会在详细信息标签页中打开实例的详细信息页面。

  3. 如果正在进行正常关停,请在基本信息部分中检查以下字段:

    • 状态:此字段显示实例的状态。在正常关停期间,此字段会显示待停止和倒计时器。该计时器会倒计时到正常关停结束时刻。

    • 目标状态:此字段显示 Compute Engine 是停止(已停止)还是删除(已删除)实例。

gcloud

如需监控实例中正在进行的正常关停,请使用 gcloud beta compute instances describe 命令

gcloud beta compute instances describe INSTANCE_NAME \
    --zone=ZONE

替换以下内容:

  • INSTANCE_NAME:实例的名称。

  • ZONE:实例所在的可用区。

如果正在进行正常关停,则输出类似于以下内容:

...
resourceStatus:
  ...
  shutdownDetails:
    maxDuration:
      seconds: 'MAX_DURATION'
    requestTimestamp: 'REQUEST_TIMESTAMP'
    stopState: STOP_STATE
    targetState: TARGET_STATE
...
status: PENDING_STOP
...

此输出包括以下值:

  • MAX_DURATION:正常关停时段的持续时间(以秒为单位)。Compute Engine 将 STOP_STATE 设置为 STOPPING 后,会删除 maxDuration 字段。

  • REQUEST_TIMESTAMPSTOP_STATE 开始时的时间戳。

  • STOP_STATE:实例的停止阶段。可以是以下值之一:

    • PENDING_STOP:Compute Engine 已开始正常关停。在您手动结束正常关停或正常关停时段超时之前,实例会保持此状态。

    • STOPPING:正常关停已结束,Compute Engine 会继续执行停止或删除操作。

  • TARGET_STATE:Compute Engine 是停止 (STOPPED) 还是删除 (DELETED) 实例。

如果正在运行停止操作,则 Compute Engine 将 status 字段设置为 TERMINATE 后,会删除 shutdownDetails 字段。

REST

如需监控实例中正在进行的正常关停,请向 Beta 版 instances.get 方法发出 GET 请求:

GET https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME

替换以下内容:

  • PROJECT_ID:您在其中创建了实例的项目的 ID。

  • ZONE:实例所在的可用区。

  • INSTANCE_NAME:实例的名称。

如果正在进行正常关停,则输出类似于以下内容:

{
  ...
  "resourceStatus": {
    ...
    "shutdownDetails": {
      "maxDuration": {
        "seconds": "MAX_DURATION"
      },
      "requestTimestamp": "REQUEST_TIMESTAMP",
      "stopState": "STOP_STATE",
      "targetState": "TARGET_STATE"
    }
  },
  ...
  "status": "PENDING_STOP",
  ...
}

此输出包括以下值:

  • MAX_DURATION:正常关停时段的持续时间(以秒为单位)。Compute Engine 将 STOP_STATE 设置为 STOPPING 后,会删除 maxDuration 字段。

  • REQUEST_TIMESTAMPSTOP_STATE 开始时的时间戳。

  • STOP_STATE:实例的停止阶段。可以是以下值之一:

    • PENDING_STOP:Compute Engine 已开始正常关停。在您手动结束正常关停或正常关停时段超时之前,实例会保持此状态。

    • STOPPING:正常关停已结束,Compute Engine 会继续执行停止或删除操作。

  • TARGET_STATE:Compute Engine 是停止 (STOPPED) 还是删除 (DELETED) 实例。

如果正在运行停止操作,则 Compute Engine 将 status 字段设置为 TERMINATE 后,会删除 shutdownDetails 字段。

元数据服务器

  1. 连接到实例。

  2. 查询元数据服务器:

    curl "http://metadata.google.internal/computeMetadata/v1/instance/shutdown-details/?recursive=true?alt=json" \-H "Metadata-Flavor: Google"
    

    如果正在进行正常关停,则输出类似于以下内容:

    {
      "maxDuration": "MAX_DURATION",
      "requestTimestamp": "REQUEST_TIMESTAMP",
      "stopState": "STOP_STATE",
      "targetState": "TARGET_STATE"
    }
    

    输出包括以下值:

    • MAX_DURATION:正常关停时段的持续时间(以秒为单位)。Compute Engine 将 STOP_STATE 设置为 STOPPING 后,会删除 maxDuration 字段。

    • REQUEST_TIMESTAMPSTOP_STATE 开始时的时间戳。

    • STOP_STATE:实例的停止阶段。可以是以下值之一:

      • PENDING_STOP:Compute Engine 已开始正常关停。在您手动结束正常关停或正常关停时段超时之前,实例会保持此状态。

      • STOPPING:正常关停已结束,Compute Engine 会继续执行停止或删除操作。

    • TARGET_STATE:Compute Engine 是停止 (STOPPED) 还是删除 (DELETED) 实例。

后续步骤