使用此页面上的方法可以查看有关托管式实例组 (MIG) 的信息以及有关每个 MIG 中的虚拟机 (VM) 实例的信息。
准备工作
- 查看限制,然后创建实例组。
- 
  
  如果您尚未设置身份验证,请进行设置。身份验证用于验证您的身份,以便访问 Google Cloud 服务和 API。如需从本地开发环境运行代码或示例,您可以通过选择以下选项之一向 Compute Engine 进行身份验证:
  
   
   
     
   
  
   
   
     
   
  
   
   
     
   
  
 
 
 
  
    
      Select the tab for how you plan to use the samples on this page: ConsoleWhen you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication. gcloud- 
 
 
  
  
   
   
  
   
   
  
   
   
     
   
  
  
   
   
  
   
   
  
   
   
  
 
 
   
   
      安装 Google Cloud CLI。 安装完成后,运行以下命令来初始化 Google Cloud CLI: gcloud init如果您使用的是外部身份提供方 (IdP),则必须先使用联合身份登录 gcloud CLI。 
- Set a default region and zone.
 REST如需在本地开发环境中使用本页面上的 REST API 示例,请使用您提供给 gcloud CLI 的凭证。 安装 Google Cloud CLI。 安装完成后,运行以下命令来初始化 Google Cloud CLI: gcloud init如果您使用的是外部身份提供方 (IdP),则必须先使用联合身份登录 gcloud CLI。 如需了解详情,请参阅 Google Cloud 身份验证文档中的使用 REST 时进行身份验证。 查看有关 MIG 的信息您可以检索有关实例组本身的信息,例如检查实例组附加的政策,以及实例组处于稳定状态还是正在进行更改。如需获取有关 MIG 中虚拟机实例的信息,请参阅查看有关代管式实例的信息。 列出 MIG如需获取代管式实例组的列表,请使用控制台、gcloud CLI 或 REST。 控制台gcloud如需列出项目中的所有代管式实例组,请使用以下命令: gcloud compute instance-groups managed list REST对于可用区级 MIG,请调用 instanceGroupManagers.list方法:GET https://compute.googleapis.com/compute/v1/projects/project-id/zones/zone/instanceGroupManagers 对于区域级 MIG,请调用 regionInstanceGroupManagers.list方法。GET https://compute.googleapis.com/compute/v1/projects/project-id/regions/region/instanceGroupManagers 查看 MIG 的属性如需查看特定 MIG(包括其政策,例如组的自动修复和更新政策)的相关信息,请使用控制台、gcloud CLI 或 REST。 如需查看该组的 id值,必须使用 gcloud CLI 或 Compute Engine API。控制台gcloud如需获取有关特定组的信息,请使用以下命令: gcloud compute instance-groups managed describe instance-group \ [--zone zone | --region region]该命令会返回相应组的详细信息,包括附加的政策。 使用 --format标志限制输出。例如,以下命令只返回实例组的自动扩缩器配置(如果存在)。gcloud compute instance-groups managed describe instance-group --format="(autoscaler)" REST对于可用区级 MIG,调用 instanceGroupManagers.get方法。对于区域级 MIG,调用regionInstanceGroupManagers.get方法。GET https://compute.googleapis.com/compute/v1/projects/project-id/regions/region/instanceGroupManagers/instance-group 响应包含有关实例组的详细信息,包括除实例组自动扩缩政策之外的其他附加政策。虽然自动扩缩是 MIG 的功能,但它是单独的 REST 资源。 自动扩缩政策 如果实例组附加了自动扩缩器,则自动扩缩器资源列在实例组的 status.autoscaler字段中。如需获取有关自动扩缩器的信息,请调用 autoscalers.get方法(对于可用区级 MIG)或regionAutoscalers.get方法(对于区域级 MIG)。自动扩缩器资源的网址包含其名称,默认情况下该名称是自动扩缩器附加到的实例组的名称。例如,您可以对区域级 MIG 的自动扩缩器发出以下请求:GET https://compute.googleapis.com/compute/v1/projects/project-id/regions/region/regionAutoscalers/mig_name 检查 MIG 是否处于稳定状态有多种命令和请求可用来创建、删除和修改代管式实例组中的实例。一旦实例组预定将执行创建、删除或更新这些实例的操作,这些操作将返回 DONE状态。但这并不表示组中的实例已经完成了创建、删除或更新,而是要等到相应的底层操作完成。您必须验证实例组的状态,或验证这些实例的状态。托管式实例组在满足如下所有条件时即处于稳定状态:托管式实例组中的所有实例均未进行任何更改、未安排在将来对实例进行更改,并且组本身也未进行修改。 如果您的依赖项需要组中的所有实例运行状况良好并能处理流量才能正常工作,您可能有必要知道该组是否处于稳定状态。例如,您可能需要首先确认所有虚拟机正在运行且运行状况良好,然后才能开始调度作业、发送流量或分配键范围。 通过检查实例组的 status.isStable字段的值来验证托管式实例组中的所有实例是否正在运行且健康状况良好。gcloud使用 describe命令:gcloud compute instance-groups managed describe instance-group-name \ [--zone zone | --region region]gcloud CLI 会返回有关 MIG(包括其 status.isStable字段)的详细信息。如需暂停脚本直至 MIG 稳定,请将 wait-until命令与--stable标志结合使用。例如:gcloud 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该命令会在 MIG 的 status.isStable设置为true后返回。REST对于可用区级 MIG,请向 instanceGroupManagers.get方法发出GET请求:GET https://compute.googleapis.com/compute/v1/projects/project-id/zones/zone/instanceGroupManagers/instance-group-name/get 对于区域级托管式实例组,请将 zones/zone替换为regions/region:GET https://compute.googleapis.com/compute/v1/projects/project-id/regions/region/instanceGroupManagers/instance-group-name/get 这些请求会返回有关 MIG 的详细信息,包括其 status.isStable字段。status.isStable设置为false表示更改已生效、待处理或者 MIG 本身正被修改。status.isStable设置为true时,则表示以下含义:- MIG 中的任何实例都未在进行任何类型的更改,并且所有实例的 currentAction均为NONE。
- MIG 中的实例没有任何待处理的更改。
- MIG 本身未在修改。
 请注意,MIG 的稳定性取决于许多因素,因为 MIG 能够以多种方式修改。例如: - 发出发布新实例模板的请求。
- 发出创建、删除、调整或更新 MIG 中实例的请求。
- 通过自动扩缩器请求调整 MIG 的大小。
- 通过自动修复程序资源替换 MIG 中一个或多个运行状况不佳的实例。
- 重新分配区域 MIG 中的部分实例。
 完成所有操作后,该 MIG 的 status.isStable会立即重新设置为true。对于各个虚拟机实例,请参阅检查托管实例的状态。 检查 MIG 中是否停用了虚拟机修复功能如需检查 MIG 中的虚拟机修复功能是否已停用,请使用控制台、gcloud CLI 或 REST。 控制台- 在 Google Cloud 控制台中,转到实例群组页面。
- 点击要查看的实例组的名称。系统会打开一个页面,其中包含实例组属性以及实例组中的虚拟机实例列表。
- 点击详情标签页。
- 在虚拟机实例生命周期部分中,检查以下字段的值: - 失败时的默认操作:如果值为无操作,则自动修复发生故障的虚拟机功能处于关闭状态。
- 未能通过健康检查时:
- 如果值为无操作,则自动修复功能处于关闭状态。
- 如果值为默认操作,并且失败时的默认操作字段的值为无操作,则自动修复功能也处于关闭状态。
 
 
 gcloud使用 Beta 版 describe方法,如下所示:gcloud beta compute instance-groups managed describe instance-group \ --format="(instanceLifecyclePolicy)" \ --zone=zone替换以下内容: - instance-group:MIG 的名称。
- zone:对于可用区级 MIG,请指定可用区。对于区域级 MIG,请使用- --region=region标志。
 在输出中,检查以下值: - defaultActionOnFailure:如果该值为- DO_NOTHING,则自动修复发生故障的虚拟机功能处于关闭状态。
- onFailedHealthCheck:如果值为以下任一值,则自动修复功能处于关闭状态。- DEFAULT_ACTION,前提是- defaultActionOnFailure字段的值为- DO_NOTHING
- DO_NOTHING
 
 以下是在 MIG 中关闭发生故障和健康状况不佳的虚拟机修复功能时的示例输出: instanceLifecyclePolicy: defaultActionOnFailure: DO_NOTHING forceUpdateOnRepair: NO onFailedHealthCheck: DEFAULT_ACTIONREST对于可用区级 MIG,请使用 Beta 版 instanceGroupManagers.get方法;对于区域级 MIG,请使用 Beta 版regionInstanceGroupManagers.get方法。如需查看可用区级 MIG 中虚拟机出现故障时的 MIG 操作,请进行以下调用: GET https://compute.googleapis.com/compute/beta/projects/project_ID/zones/zone/instanceGroupManagers/instance_group 在响应正文中,检查以下字段的值: - defaultActionOnFailure:如果该值为- DO_NOTHING,则自动修复发生故障的虚拟机功能处于关闭状态。
- onFailedHealthCheck:如果值为以下任一值,则自动修复功能处于关闭状态。- DEFAULT_ACTION,前提是- defaultActionOnFailure字段的值为- DO_NOTHING
- DO_NOTHING
 
 以下是在 MIG 中关闭发生故障和健康状况不佳的虚拟机修复功能时的示例输出: ... "instanceLifecyclePolicy": { "forceUpdateOnRepair": "NO", "defaultActionOnFailure": "DO_NOTHING", "onFailedHealthCheck": "DEFAULT_ACTION" } ...如果您关闭了修复功能,但想重新将其开启,请参阅开启修复或自动修复功能。 查看历史自动修复操作如果您已配置自动修复,则可以查看过去的自动修复事件。 监控滚动更新如果您启动了滚动更新,并想知道更新何时完成,请参阅监控更新。 查看有状态配置如果您配置了有状态 MIG 并且想查看您的配置,请参阅查看有状态配置。 查看 MIG 中托管式虚拟机实例的详细信息本部分介绍了如何查看 MIG 中托管式实例的各种详细信息。 列出 MIG 的托管实例如需查看实例组中托管式实例的列表,包括其状态和模板,请使用控制台、gcloud CLI 或 REST。 控制台gcloud使用 gcloud CLI list-instances子命令。gcloud compute instance-groups managed list-instances instance-group \ [--zone zone | --region region]该命令会返回实例列表及实例详细信息,包括其当前状态、实例模板和最近的错误。 REST对于可用区级 MIG,请构建对 instanceGroupManagers.listManagedInstances方法的GET请求,并添加特定托管式实例组的名称: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状态。但这并不表示组中的实例已经完成了创建、删除或更新,而是要等到相应的底层操作完成。您必须验证这些实例的状态,或者验证组本身的状态。使用 Google Cloud CLI 或 REST 查看有关托管式实例组中的实例的详细信息。详细信息包括实例状态和实例组对其实例执行的当前操作。 gcloud所有代管式实例 如需查看实例组中所有实例的状态和当前操作,请使用 list-instances命令。gcloud compute instance-groups managed list-instances INSTANCE_GROUP_NAME \ [--zone=ZONE | --region=REGION]该命令会返回组中的实例列表,包括实例状态、当前操作和其他详细信息: NAME: vm-instances-9pk4 ZONE: us-central1-f STATUS: HEALTH_STATE: ACTION: CREATING INSTANCE_TEMPLATE: my-new-template VERSION_NAME: LAST_ERROR: NAME: vm-instances-h2r1 ZONE: us-central1-f STATUS: STOPPING HEALTH_STATE: ACTION: DELETING INSTANCE_TEMPLATE: my-old-template VERSION_NAME: LAST_ERROR: HEALTH_STATE列显示为空,除非您已设置健康检查。某个特定的代管式实例 如需查看实例组中某个特定实例的状态和当前操作,请使用 describe-instance命令。gcloud compute instance-groups managed describe-instance INSTANCE_GROUP_NAME \ --instance INSTANCE_NAME \ [--zone=ZONE | --region=REGION]该命令会返回该实例的详细信息,包括实例状态、当前操作,以及保留状态(对于有状态 MIG): currentAction: NONE id: '6789072894767812345' instance: https://www.googleapis.com/compute/v1/projects/example-project/zones/us-central1-a/instances/example-mig-hz41 instanceStatus: RUNNING name: example-mig-hz41 preservedStateFromConfig: metadata: example-key: example-value preservedStateFromPolicy: disks: persistent-disk-0: autoDelete: NEVER mode: READ_WRITE source: https://www.googleapis.com/compute/v1/projects/example-project/zones/us-central1-a/disks/example-mig-hz41 version: instanceTemplate: https://www.googleapis.com/compute/v1/projects/example-project/global/instanceTemplates/example-templateREST对区域或可用区 MIG 资源调用 listManagedInstances方法。例如,如需查看可用区 MIG 资源中的实例的详细信息,可以发出以下请求:GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instanceGroupManagers/INSTANCE_GROUP_NAME/listManagedInstances 调用会返回 MIG 的实例列表,其中包含每个实例的 instanceStatus和currentAction。{ "managedInstances": [ { "instance": "https://www.googleapis.com/compute/v1/projects/example-project/zones/us-central1-f/instances/vm-instances-prvp", "instanceStatus": "RUNNING", "currentAction": "REFRESHING", "id": "5317605642920955957", "version": { instanceTemplate": "https://www.googleapis.com/compute/v1/projects/example-project/global/instanceTemplates/example-template" }, "name": "vm-instances-prvp" }, { "instance": "https://www.googleapis.com/compute/v1/projects/example-project/zones/us-central1-f/instances/vm-instances-w2t5", "instanceStatus": "RUNNING", "currentAction": "REFRESHING", "id": "2800161036826218547", "version": { "instanceTemplate": "https://www.googleapis.com/compute/v1/projects/example-project/global/instanceTemplates/example-template" }, "name": "vm-instances-w2t5" } ] }如果您设置健康检查,则响应还会包含 instanceHealth字段。如需查看有效的 instanceStatus字段值的列表,请参阅虚拟机实例生命周期。如果实例正在进行某种更改,托管式实例组会将实例的 currentAction字段设置为以下操作之一,以帮助您跟踪更改进度。否则,currentAction字段将设置为NONE。可能的 currentAction值如下:- ABANDONING:正在将该实例从 MIG 中移除。
- CREATING:正在创建实例。
- CREATING_WITHOUT_RETRIES:正在创建该实例,且不会重试;如果第一次尝试并未创建该实例,则 MIG 将不会再次尝试替换该实例。
- DELETING:正在删除实例。
- RECREATING:该实例正在被替换。
- REFRESHING:该实例正从其当前目标池中移除,并正在被读取到当前目标池列表中(此列表与现有目标池可能相同,也可能不同)。
- RESTARTING:正在使用- stop和- start方法重启该实例。
- RESUMING。实例在暂停后处于恢复过程中。
- STARTING。实例在停止后处于启动过程中。
- STOPPING:实例正在停止。
- SUSPENDING:实例正在暂停。
- VERIFYING:该实例已创建并且正在接受验证。
- NONE:没有对实例执行任何操作。
 如需检查整个实例组处于稳定状态还是正在进行更改,请参阅检查实例组的状态。 检查运行状况如果您为托管式实例组配置了自动修复,则可以查看每个虚拟机的健康状况。请参阅检查运行状况。 列出实例错误如果您的托管实例发生错误,您可以查看这些错误以诊断原因并采取缓解措施。 使用 Google Cloud 控制台、gcloud CLI 或 REST 列出错误。 控制台- 在 Google Cloud 控制台中,前往实例群组页面。 
- 在列表的名称列下方,点击要检查的实例组的名称。此时将打开一个页面,其中会显示实例组属性和组内包含的实例的列表。 
- 点击错误。 
 gcloud使用 instance-groups managed list-errors命令列出组中的最新错误gcloud compute instance-groups managed list-errors instance-group-name \ [--zone zone | --region region]例如: gcloud compute instance-groups managed list-errors example-group \ --region us-west1INSTANCE_URL ACTION ERROR_CODE ERROR_MESSAGE TIMESTAMP INSTANCE_TEMPLATE VERSION_NAME https://www.googleapis.com/compute/v1/projects/my-project/zones/us-central1-a/instances/igm-1-v0hl CREATING QUOTA_EXCEEDED Instance 'igm-1-v0hl' creation failed: Quota 'CPUS' exceeded. Limit: 1.0 in zone us-central1-a. 2019-07-11T07:44:40.156-07:00 https://www.googleapis.com/compute/v1/projects/my-project/global/instanceTemplates/instance-template-1 https://www.googleapis.com/compute/v1/projects/my-project/zones/us-central1-a/instances/igm-1-qp3d CREATING QUOTA_EXCEEDED Instance 'igm-1-qp3d' creation failed: Quota 'CPUS' exceeded. Limit: 1.0 in zone us-central1-a. 2019-07-11T07:44:40.081-07:00 https://www.googleapis.com/compute/v1/projects/my-project/global/instanceTemplates/instance-template-1 ... REST为可用区或区域级托管式实例组构造一个向 listErrors方法发出的GET请求。例如: GET https://compute.googleapis.com/compute/v1/projects/project-id/zones/zone/instanceGroupManagers/instance-group-name/listErrors&maxResults=100 请求会获取类似于以下内容的响应: { "items": [ { "error": { "code": "QUOTA_EXCEEDED", "message": "Instance 'example-mig-m1sz' creation failed: Quota 'CPUS' exceeded. Limit: 50.0 in zone us-central1-c." }, "timestamp": "2019-01-03T18:47:28.457-08:00", "instanceDetails" : { "instance": "zones/us-central1-c/instances/example-mig-m1sz", "action": "CREATING", "version": { "name": "example-version-name", "instanceTemplate": "global/instanceTemplates/example-template", } } } ], ... "nextPageToken": "Ch0yMDE5LTA3LTI5VDExOjA4OjA2LjYxMi0wNzowMBJ5aHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vY29tcHV0ZS9zdGFnaW5nX2FscGhhL3Byb2plY3RzL215cnpha2VyZXltcy1zdGFnaW5nL3pvbmVzL3VzLWNlbnRyYWwxLWlyMS9pbnN0YW5jZXMvaWdtLTEtcXAzZA==" }listErrorsAPI 支持列表分页。如需获取下一页结果,请在后续请求中使用一个响应中的nextPageToken字段。例如:GET https://compute.googleapis.com/compute/v1/projects/project-id/zones/zone/instanceGroupManagers/instance-group-name/listErrors&maxResults=100&nextPageToken=next-page-token,将next-page-token替换为从上一个响应中获取的令牌。可能的错误列表包括但不限于以下示例: - 无法创建新实例,原因如下:
- 抢占式容量不可用。
- 配额不足,例如某个区域的 CPU 数量不足。
- 与组关联的网络已达到虚拟机实例数量上限。
- 实例模板的 properties.disks[].initializeParams.sourceImage字段中指定的磁盘映像已删除,或其权限已更改。
- 与项目关联的结算账号的信用卡拒付。
 
- 无法删除现有实例,原因如下:
- 该组使用的服务账号没有 compute.instances.delete权限。
- 请求的并发删除过多,超出了速率限制。
 
- 该组使用的服务账号没有 
- 无法将实例添加到目标池,因为目标池已被删除。
 检查此类错误后,您可以减少错误。例如: - 将您的工作负载迁移到具有可抢占容量的其他可用区。
- 请求在指定区域增加配额。
- 将 compute.instances.delete权限添加到该组使用的服务账号。
 如果托管式实例组触发的操作失败(例如,如果自动扩缩器在尝试增加该组的大小时发生错误),则该组可能会立即重试该操作。如果最后一次立即重试尝试失败,则 MIG 会记录错误,您可以通过列出实例错误来查看错误。在退避一段时间后,该组会再次重试失败的操作。如果错误一直存在,则可能被记录多次。 即使底层实例不再存在或无法创建,Compute Engine 也会保留最近 8 天的 500 个最新错误。 检查虚拟机实例是否属于 MIG如需检查特定虚拟机是否为组成员,您可以使用控制台或 REST。 控制台- 在 Google Cloud 控制台中,前往虚拟机实例页面。
- 点击某个实例以访问其虚拟机实例详情。
- 如果虚拟机实例是托管式实例组的成员,则该托管式实例组的名称会显示在使用者标题下。如果虚拟机实例不是实例组的成员,则实例详细信息页面上不会显示使用者标题。
 REST请参阅查看虚拟机实例的引用方。 另外,如需确定某个虚拟机是否是(或曾经是)某个代管式实例组的成员,请在该实例的元数据中查找以下两个元数据键: - instance-template表示创建虚拟机时使用的模板。
- created-by表示创建虚拟机的托管式实例组。
 即使您放弃该实例,该虚拟机仍将包含这些元数据条目,除非您手动移除这些条目。 例如,如果存在一个名为 random-instance-biy的虚拟机,并且您想知道该虚拟机是否由托管式实例组创建,您可以描述该实例并查找元数据键。例如:gcloud compute instances describe random-instance-biy \ --zone us-central1-fgcloud CLI 会返回如下所示的响应: 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查看托管实例的保留状态如果您配置了有状态 MIG 并且想查看保留状态,请参阅查看有状态配置和保留状态。 后续步骤如未另行说明,那么本页面中的内容已根据知识共享署名 4.0 许可获得了许可,并且代码示例已根据 Apache 2.0 许可获得了许可。有关详情,请参阅 Google 开发者网站政策。Java 是 Oracle 和/或其关联公司的注册商标。 最后更新时间 (UTC):2025-10-22。 -