使用代管式实例


代管式实例组 (MIG) 会根据您使用的配置组件创建每个代管式实例:实例模板、可选的所有实例配置和可选的有状态配置。

每个代管式实例都是一个数据实体,表示 MIG 中实际虚拟机实例的预期状态

阅读本文档了解如何可靠地使用 MIG 中的代管实例。例如,您可能需要添加、移除、更新特定实例或查看特定实例的相关信息。

为了确保 MIG 不会还原您的配置更改,请务必使用本文档中介绍的方法。如果您使用实例组方法以外的方法修改 MIG 的虚拟机,MIG 不一定能检测到这些虚拟机将不再使用实例组的预期配置,因此您可能会遇到意外结果。例如,如果您使用实例 API 而不是要求的实例组管理器 API 来删除或更新 MIG 中的虚拟机,MIG 将无从知晓您的意图,在这之后,MIG 随时可能根据 MIG 的配置自动重新创建或还原该虚拟机。

准备工作

  • 查看限制,然后创建实例组。
  • 设置身份验证(如果尚未设置)。身份验证是通过其进行身份验证以访问 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 中的数据实体,其中包含实际虚拟机实例的当前状态和预期状态。

代管实例的当前状态包括以下字段:

代管实例的实际虚拟机实例预期状态包括:

  • 预期版本,即要用于实例的版本名称和实例模板。
  • 待保留项(例如磁盘或元数据)的保留状态

如图 1 所示,对于 MIG 中的每个代管实例,MIG 会根据该代管实例的规范启动并运行实际虚拟机。

MIG 会根据您的配置自动生成代管实例,这些实例对应于 MIG 代表您维护的实际虚拟机实例。

图 1.代管实例和对应虚拟机之间的关系。

如需查看代管式实例的规范,请参阅查看有关 MIG 中代管式实例的信息

向 MIG 添加实例

如需向 MIG 添加更多实例,您可以执行以下操作:

如需验证新添加的实例已经启动且正在运行,请验证组的状态验证托管实例的状态

手动调整大小

如果代管式实例组尚未设置为自动扩缩,则可以手动设置实例组的大小以更改实例组中的实例数。请参阅手动调整 MIG 的大小

自动扩缩

您可以将托管实例组配置为根据其工作负载自动添加或移除实例。您的应用可以顺利应对流量增加的情况,同时您也可以在计算资源需求量降低时减少费用。如需详细了解如何自动扩缩 MIG,请参阅自动扩缩实例组

添加具有特定名称的实例

如果您的系统依赖于特定名称,您可以将具有这些名称的虚拟机添加到现有 MIG。如果 MIG 重新创建虚拟机,则您为这些代管式实例分配的名称仍会保留。如需了解详情,请参阅在 MIG 中创建具有特定名称的实例

如需详细了解如何保留 MIG 实例状态,请参阅有状态 MIG

从 MIG 中删除实例

在您删除代管实例时,MIG 会缩减实例组的 targetSize 并删除相应的虚拟机实例。

如果您设置了有状态 MIG,则 MIG 会删除实例的保留状态配置。MIG 还会从其所属的任何目标池中移除实例。

如果该实例组属于已启用连接排空后端服务,则在连接排空结束后,最长可能需要再等待 60 秒才会移除或删除虚拟机实例。

如需删除代管式实例,您可以执行以下操作:

更新 MIG 中的虚拟机配置

如果您需要更改 MIG 中的虚拟机配置(例如,修改启动磁盘或机器类型、添加磁盘或更改其他虚拟机属性),请参阅更新 MIG 中的虚拟机配置

在 MIG 中重新创建实例

您可以使用此方法来更新选定的虚拟机,从而让它们使用组的最新虚拟机配置组件。如果您需要重新创建代管式实例组中的所有虚拟机,请改为启动滚动更新

如果该实例组属于已启用连接排空后端服务,则在连接排空结束后,最长可能需要再等待 60 秒才会移除或删除虚拟机实例。

您可以使用 gcloud CLIREST 重新创建代管式实例组中的选定虚拟机实例。

gcloud

使用 instance-groups managed recreate-instances 命令

gcloud compute instance-groups managed recreate-instances INSTANCE_GROUP_NAME \
    --instances INSTANCE_NAME_1,INSTANCE_NAME_2 \
    [--region REGION | --zone ZONE]

REST

在 API 中,向 regionInstanceGroupManagers.recreateInstances 方法发出 POST 请求。对于区域代管实例组,请使用 instanceGroupManagers.recreateInstances 方法。

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instanceGroupManagers/INSTANCE_GROUP_NAME/recreateInstances

{
 "instances": [
  "zones/ZONE/instances/INSTANCE_NAME_1",
  "zones/ZONE/instances/INSTANCE_NAME_2"
 ]
}

在您发出在托管实例组中重新创建虚拟机实例的请求后,新虚拟机会在系统可以对其进行预配后立即启动。此过程可能会耗费大量时间,具体取决于您重新创建的实例数。 验证组的状态验证托管实例的状态

重新创建操作会保留虚拟机实例名称,但实例创建时间戳可能不会更改。如果实例创建时间戳未更改,如需确认重新创建操作已创建新实例,请检查挂接到该实例的启动磁盘的创建时间戳。

查看有关 MIG 中实例的信息

请参阅查看有关 MIG 中代管式实例的信息

在 MIG 中配置有状态实例

请参阅配置有状态 MIG

后续步骤