获取有关 MIG 和托管实例的信息

使用此页面上的方法可以获取有关您的托管实例组 (MIG) 的信息,以及获取有关每个 MIG 中虚拟机 (VM) 实例的信息。

准备工作

获取有关 MIG 的信息

您可以检索有关实例组本身的信息,例如检查实例组附加的政策,以及实例组处于稳定状态还是正在进行更改。如需获取有关 MIG 中虚拟机实例的信息,请参阅获取有关托管实例的信息

列出 MIG

如需获取托管实例组的列表,请使用控制台gcloud 工具API

控制台

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

    转到“实例组”页面

    如果您已有实例组,该页面会列出这些组,包括托管实例组和非托管实例组

    托管实例组包含模板列中的一个值。

gcloud

如需列出项目中的所有托管实例组,请使用以下命令:

gcloud compute instance-groups managed list

API

如需列出一个地区中所有托管实例组,请构建一个向 instanceGroupManagers.list 方法发出的 GET 请求:

GET https://compute.googleapis.com/compute/v1/projects/project-id/zones/zone/instanceGroupManagers

对于区域级(多地区)托管实例组,请改为使用 regionInstanceGroupManagers 资源:regionInstanceGroupManagers.list

GET https://compute.googleapis.com/compute/v1/projects/project-id/regions/region/instanceGroupManagers

获取 MIG 的属性

如需获取有关特定 MIG 的信息,包括附加的政策(例如,自动修复政策),请使用控制台gcloud 工具API

如需获取实例组的 id,您必须使用 gcloud 工具或 API。

控制台

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

    转到“实例组”页面

    如果您已有实例组,该页面会列出这些组。该页面还会列出非托管实例组

  2. 在列表的名称列下方,点击要检查的实例组的名称。此时将打开一个页面,其中会显示实例组属性和组中包含的实例的列表。

gcloud

如需获取有关特定组的信息,请使用以下命令:

gcloud compute instance-groups managed describe instance-group \
    [--zone zone | --region region]

该命令会返回相应组的详细信息,包括附加的政策。

API

如需获取有关特定组的信息,请构建一个向 instanceGroupManagers.get 方法发出的 GET 请求,并在其中添加特定托管实例组的名称:

GET https://compute.googleapis.com/compute/v1/projects/project-id/zones/zone/instanceGroupManagers/instance-group

对于区域级(多地区)托管实例组,请改为使用 regionInstanceGroupManagers 资源:regionInstanceGroupManagers.listregionInstanceGroupManagers.get

GET https://compute.googleapis.com/compute/v1/projects/project-id/regions/region/instanceGroupManagers/instance-group

响应包含有关实例组的详细信息,包括除自动扩缩政策之外的其他附加政策。

如需获取有关自动扩缩程序的信息,请构建一个向 autoscalers.get 方法发出的 GET 请求,并在其中添加特定托管实例组的名称:

GET https://compute.googleapis.com/compute/v1/projects/project-id/zones/zone/autoscalers/instance-group

对于区域级(多地区)托管实例组,请改为使用 regionAutoscalers 资源:regionAutoscalers.get

GET https://compute.googleapis.com/compute/v1/projects/project-id/regions/region/regionAutoscalers/instance-group

检查实例组的状态

有多种命令和请求可用来创建、删除和修改托管实例组中的实例。一旦实例组预定将执行创建、删除或更新这些实例的操作,这些操作将返回 DONE 状态。但这并不表示已创建、删除或更新实例组中的实例,除非相应的底层操作已完成。您必须验证实例组的状态,或验证这些实例的状态

在实例组级层,Compute Engine 会填充一个名为 status 的只读字段,该字段包含 isStable 标志,您可以使用 gcloud 命令行工具API 进行访问。

gcloud

gcloud compute instance-groups managed describe instance-group-name \
    [--zone zone | --region region]

gcloud 工具会返回有关实例组的详细信息,其中包括 status.isStable 字段。

如需暂停脚本直至实例组稳定,请将 wait-until 命令与 --stable 标志结合使用。例如:

gcloud beta compute instance-groups managed wait-until instance-group-name \
    --stable \
    [--zone zone | --region region]
Waiting for group to become stable, current operations: deleting: 4
Waiting for group to become stable, current operations: deleting: 4
...
Group is stable

该命令会在实例组的 status.isStable 设置为 true 后返回。

API

对于地区级 MIG,请向 instanceGroupManagers.get 方法发出 POST 请求:

POST https://compute.googleapis.com/compute/beta/projects/project-id/zones/zone/instanceGroupManagers/[INSTANCE_GROUP_NAME]/get

如果实例组是区域级托管实例组,请将 zones/zone 替换为 regions/region

POST https://compute.googleapis.com/compute/beta/projects/project-id/regions/region/instanceGroupManagers/[INSTANCE_GROUP_NAME]/get

API 会返回有关实例组的详细信息,其中包括 status.isStable 字段。

您可以通过检查相关 instanceGroupManagersregionInstanceGroupManagers 资源的 status.isStable 字段值来确认托管实例组是否正在运行且运行状况良好。

您还可以将 gcloud 命令行工具 wait-until 命令与 --stable 标志结合使用,直到实例组的 status.isStable 设置为 true

gcloud beta compute instance-groups managed wait-until INSTANCE_GROUP_NAME \
    --stable \
    [--zone [ZONE] | --region [REGION]]

status.isStable 设置为 false 表示正在更改、正在等待更改或者正在修改托管实例组本身。

status.isStable 设置为 true 则表示:

  • 托管实例组中的任何实例都不在进行任何类型的更改,并且所有实例的 currentAction 都为 NONE
  • 托管实例组中的实例没有任何待执行的更改。
  • 托管实例组本身未在进行修改。

有多种途径可导致对托管实例组的修改。例如:

  • 发出发布新实例模板的请求。
  • 发出创建、删除、调整或更新实例组中实例的请求。
  • 通过自动扩缩程序请求调整实例组的大小。
  • 通过自动修复程序资源替换托管实例组中一个或多个运行状况不佳的实例。
  • 在区域级托管实例组中,重新分布某些实例。

完成所有操作后,该托管实例组的 status.isStable 会立即重新设置为 true

对于各个虚拟机实例,请参阅检查托管实例的状态

查看历史自动修复操作

如果您已配置自动修复,则可以查看过去的自动修复事件

获取有关 MIG 中托管虚拟机实例的信息

列出 MIG 的托管实例

如需获取有关实例组中托管实例的列表,包括托管实例的状态和模板,请使用控制台gcloud 工具API

控制台

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

    转到“实例组”页面

    如果您已有实例组,该页面会列出这些组。该页面还会列出非托管实例组

  2. 在列表的名称列下方,点击要检查的实例组的名称。此时将打开一个页面,其中会显示实例组属性和组中包含的实例的列表。

gcloud

使用 gcloud 工具 list-instances 子命令。

gcloud compute instance-groups managed list-instances instance-group \
    [--zone zone | --region region]

该命令会返回实例列表及实例详细信息,包括其当前状态、实例模板和最近的错误。

API

对于地区级 MIG,请构建一个向 instanceGroupManagers.listManagedInstances 方法发出的 POST 请求,并在其中添加特定托管实例组的名称:

GET https://compute.googleapis.com/compute/v1/projects/project-id/zones/zone/instanceGroupManagers/instance-group

对于区域级(多地区)托管实例组,请改为使用 regionInstanceGroupManagers 资源:regionInstanceGroupManagers.list

GET https://compute.googleapis.com/compute/v1/projects/project-id/regions/region/instanceGroupManagers/instance-group

响应包含实例列表及实例详细信息,包括其当前状态和实例模板。

检查托管实例的状态

有多种命令和请求可用来创建、删除和修改托管实例组中的实例。一旦实例组预定将执行创建、删除或更新这些实例的操作,这些操作将返回 DONE 状态。但这并不表示已创建、删除或更新实例组中的实例,除非相应的底层操作已完成。您必须使用 gcloud 工具API 验证这些实例的状态,或验证实例组本身的状态

如需查看托管实例组中每个实例的 status 及其正在执行的 currentAction,您可以使用 gcloud 命令行工具API

gcloud

gcloud compute instance-groups managed list-instances [INSTANCE_GROUP_NAME] [--filter="zone:([ZONE])" | --filter="region:([REGION])"]

gcloud 会返回实例组中的实例列表,以及各实例的状态和当前操作。例如:

NAME               ZONE           STATUS    ACTION    INSTANCE_TEMPLATE  VERSION_NAME  LAST_ERROR
vm-instances-9pk4  us-central1-f            CREATING  my-new-template
vm-instances-h2r1  us-central1-f  STOPPING  DELETING  my-old-template
vm-instances-j1h8  us-central1-f  RUNNING   NONE      my-old-template
vm-instances-ngod  us-central1-f  RUNNING   NONE      my-old-template

API

在 API 中,向 regionInstanceGroupManagers.listManagedInstances 方法发出 POST 请求。对于地区级托管实例组,请使用 instanceGroupManagers.listManagedInstances 方法。

POST https://compute.googleapis.com/compute/v1/projects/project-id/regions/region/instanceGroupManagers/instance-group-name/listManagedInstances

API 会返回该实例组的实例列表,其中包含每个实例的 instanceStatuscurrentAction

{
 "managedInstances": [
  {
   "instance": "https://compute.googleapis.com/compute/v1/projects/[PROJECT_ID]/zones/[ZONE]/instances/vm-instances-prvp",
   "id": "5317605642920955957",
   "instanceStatus": "RUNNING",
   "instanceTemplate": "https://compute.googleapis.com/compute/v1/projects/[PROJECT_ID]/global/instanceTemplates/[INSTANCE_TEMPLATE_NAME]",
   "currentAction": "REFRESHING"
  },
  {
   "instance": "https://compute.googleapis.com/compute/v1/projects/[PROJECT_ID]/zones/[ZONE]/instances/vm-instances-pz5j",
   "currentAction": "DELETING"
  },
  {
   "instance": "https://compute.googleapis.com/compute/v1/projects/[PROJECT_ID]/zones/[ZONE]/instances/vm-instances-w2t5",
   "id": "2800161036826218547",
   "instanceStatus": "RUNNING",
   "instanceTemplate": "https://compute.googleapis.com/compute/v1/projects/[PROJECT_ID]/global/instanceTemplates/[INSTANCE_TEMPLATE_NAME]",
   "currentAction": "REFRESHING"
  }
 ]
}

对于托管实例组中的每个实例,实例的状态均由其 instanceStatus 字段描述。如需查看有效 instanceStatus 字段值的列表,请参阅检查实例的状态

如果实例正在进行某类更改,则系统会在 currentAction 字段中填入以下某一操作,以帮助您跟踪更改进度。否则,currentAction 字段为 NONE

可能的 currentAction 值包括:

  • ABANDONING:正在从托管实例组中移除实例。
  • CREATING:正在创建实例。
  • CREATING_WITHOUT_RETRIES:正在创建实例且不重试;如果在第一次尝试时未创建实例,则托管实例组将不会再次尝试替换该实例。
  • DELETING:正在删除实例。
  • RECREATING:已删除实例并且正在替换实例。
  • REFRESHING:正在将实例从其当前目标池中移除并重新添加到当前目标池列表中(此列表与现有目标池可能相同,也可能不同)。
  • RESTARTING:正在使用 stopstart 方法重启实例。
  • VERIFYING:已创建实例并且正在验证实例。
  • NONE:没有对实例执行任何操作。

如需检查整个实例组处于稳定状态还是正在进行更改,请参阅检查实例组的状态

检查运行状况

如果您已为托管实例组配置自动修复,则可以查看每个实例的运行状况。请参阅检查运行状况

检查虚拟机实例是否属于 MIG

如需检查特定实例当前是否是实例组的成员,您可以使用控制台或 API。

控制台

  1. 在 Google Cloud Platform Console 中,转到虚拟机实例页面。

    转到“虚拟机实例”页面

  2. 点击某个实例以访问其虚拟机实例详细信息
  3. 如果虚拟机实例是托管实例组的成员,则该托管实例组的名称将显示在使用者标题下。如果虚拟机实例不是实例组的成员,则实例详细信息页面上不会显示使用者标题。

API

请参阅查看虚拟机实例的引荐来源

另外,如需确定某个实例是否属于(或曾经属于)某个托管实例组,请在该实例的元数据中查找以下两个元数据键:

  • instance-template 表示创建实例时使用的模板。
  • created-by 表示创建实例的托管实例组。

即使您放弃该实例,该实例仍将包含这些元数据条目,除非您手动移除它们。

例如,如果存在一个名为 random-instance-biy 的实例,并且您想知道该实例是否由托管实例组所创建,您可以描述该实例并查找上述元数据键。例如:

gcloud compute instances describe random-instance-biy --zone us-central1-f

gcloud 工具会返回如下所示的响应:

canIpForward: false
cpuPlatform: Intel Ivy Bridge
creationTimestamp: '2016-08-24T14:11:38.012-07:00'
...
metadata:
  items:
  - key: instance-template
    value: projects/123456789012/global/instanceTemplates/example-it
  - key: created-by
    value: projects/123456789012/zones/us-central1-f/instanceGroupManagers/igm-metadata

后续步骤

此页内容是否有用?请给出您的反馈和评价:

发送以下问题的反馈:

此网页
Compute Engine 文档