本文档介绍如何创建代管式实例组 (MIG),以便为 MIG 的所有虚拟机保留具有给定设备名称的磁盘上的数据,即使在虚拟机重新创建时(例如自动修复、更新或重新创建 MIG 中的虚拟机时)也是如此。保留磁盘对某些工作负载(例如数据库或旧版应用)非常有用。
除了为实例组中的所有虚拟机保留磁盘之外,您还可以为以下各项配置有状态 MIG:
- 您可以添加和保留特定于实例的磁盘。
- 您可以添加和保留特定于实例的元数据。
- 您可以添加和保留 IP 地址。
如需了解详情,请参阅有状态 MIG 概览。
您还可以阅读创建 MIG 的其他基本场景。
准备工作
- 创建实例模板,以便创建代管式实例组。
-
如果您尚未设置身份验证,请进行设置。身份验证是通过其进行身份验证以访问 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
-
After installing the Google Cloud CLI, initialize it by running the following command:
gcloud init
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
- Set a default region and zone.
-
Install the Google Cloud CLI.
-
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
If you're using a local shell, then create local authentication credentials for your user account:
gcloud auth application-default login
You don't need to do this if you're using Cloud Shell.
If an authentication error is returned, and you are using an external identity provider (IdP), confirm that you have signed in to the gcloud CLI with your federated identity.
- 如果您的 MIG 采用有状态配置,则您无法使用自动扩缩功能。
- 如果您要使用自动滚动更新,则必须将替换方法设置为
RECREATE
。 - 对于有状态区域级 MIG,您必须停用主动式重新分布功能(将重新分布类型设置为
NONE
),以防止通过自动跨可用区重新分布删除有状态实例。 - 如果您使用所有实例配置来替换实例模板属性,则无法在任何每个实例配置中指定这些属性,同时也无法在组的所有实例配置中指定这些属性。
INSTANCE_GROUP_NAME
:要创建的代管实例组的名称。INSTANCE_TEMPLATE_URL
:您要用于在 MIG 中创建虚拟机的实例模板的网址。网址可以包含实例模板的 ID 或名称。请指定以下某个值:- 对于区域级实例模板:
projects/PROJECT_ID/regions/REGION/instanceTemplates/INSTANCE_TEMPLATE_ID
- 对于全球实例模板:
INSTANCE_TEMPLATE_ID
- 对于区域级实例模板:
SIZE
:您所需的该实例组初始虚拟机数。DEVICE_NAME
:实例模板中指定的磁盘的设备名称。DELETE_RULE
:用于设置在删除虚拟机后应如何处理有状态磁盘的值。可用的选项包括:never
:(默认值)永不删除磁盘;而是在删除磁盘虚拟机后分离磁盘。on-permanent-instance-deletion
:从实例组永久删除磁盘的虚拟机实例时(例如,手动删除代管实例或减小实例组大小时),删除该磁盘。
无论删除规则的值如何,有状态磁盘在虚拟机自动修复、更新和重新创建操作时始终会保留。
PROJECT
:请求的项目 ID。ZONE
:MIG 所在的可用区(适用于可用区级 MIG)。- 对于区域级 MIG,将
zones/ZONE
替换为regions/REGION
并指定 MIG 所在的区域。
- 对于区域级 MIG,将
NAME
:要创建的 MIG 的名称。INSTANCE_TEMPLATE_URL
:您要用于在 MIG 中创建虚拟机的实例模板的网址。网址可以包含实例模板的 ID 或名称。请指定以下某个值:- 对于区域级实例模板:
projects/PROJECT_ID/regions/REGION/instanceTemplates/INSTANCE_TEMPLATE_ID
- 对于全球实例模板:
INSTANCE_TEMPLATE_ID
- 对于区域级实例模板:
SIZE
:您所需的该实例组初始实例数。DEVICE_NAME
:实例模板中指定的磁盘的设备名称。DELETE_RULE
:用于设置在删除虚拟机实例后应如何处理有状态磁盘的值。可用的选项包括:never
:(默认值)永不删除磁盘;而是在删除磁盘虚拟机后分离磁盘。on_permanent_instance_deletion
:从实例组永久删除有状态磁盘的虚拟机时(例如,手动删除托管实例或减小实例组大小时),删除该有状态磁盘。
无论删除规则的值如何,有状态磁盘在实例自动修复、更新和重新创建操作时始终会保留。
- 详细了解有状态 MIG 以及何时使用它们。
- 详细了解如何在 MIG 中配置有状态磁盘。
- 了解有状态 MIG 的工作原理。
- 详细了解如何为磁盘、元数据和 IP 地址配置有状态 MIG。
Terraform
如需在本地开发环境中使用本页面上的 Terraform 示例,请安装并初始化 gcloud CLI,然后使用您的用户凭证设置应用默认凭证。
如需了解详情,请参阅 Set up authentication for a local development environment。
REST
如需在本地开发环境中使用本页面上的 REST API 示例,请使用您提供给 gcloud CLI 的凭据。
After installing the Google Cloud CLI, initialize it by running the following command:
gcloud init
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
如需了解详情,请参阅 Google Cloud 身份验证文档中的使用 REST 时进行身份验证。
限制
具有有状态配置的 MIG(有状态 MIG)具有以下限制:
如需查看 MIG 限制的完整列表(因您使用的配置而异),请参阅 MIG 限制。
创建具有有状态磁盘的 MIG
使用 Google Cloud console、gcloud CLI、Terraform 或 REST。
控制台
gcloud
如需指定创建 MIG 时实例模板中的哪些磁盘应为有状态磁盘,请将
--stateful-disk
标志与gcloud compute instance-groups managed create
命令结合使用:gcloud compute instance-groups managed create INSTANCE_GROUP_NAME \ --template INSTANCE_TEMPLATE_URL \ --size SIZE \ --stateful-disk device-name=DEVICE_NAME[,auto-delete=DELETE_RULE]
替换以下内容:
Terraform
如果您尚未创建您希望为 MIG 中的每个虚拟机指定机器类型、启动磁盘映像、网络和其他虚拟机属性的实例模板,请创建实例模板。
如需指定创建 MIG 时实例模板中的哪些磁盘应为有状态,请添加
stateful_disk
组成块。以下示例会创建一个具有有状态磁盘的可用区级 MIG。如需详细了解示例中使用的资源,请参阅google_compute_instance_group_manager
资源。如需了解如何应用或移除 Terraform 配置,请参阅基本 Terraform 命令。
REST
如需指定创建 MIG 时实例模板中的哪些磁盘应为有状态,请将这些磁盘添加到请求正文中的
statefulPolicy
字段。对于可用区级 MIG,请使用instanceGroupManagers.insert
方法;对于区域级 MIG,请使用regionInstanceGroupManagers.insert
方法。POST https://compute.googleapis.com/compute/v1/projects/PROJECT/zones/ZONE/instanceGroupManagers { "name": "NAME", "versions": [ { "instanceTemplate": "INSTANCE_TEMPLATE_URL" } ], "targetSize": SIZE, "statefulPolicy": { "preservedState": { "disks": { "DEVICE_NAME": {"autoDelete": "DELETE_RULE" }, "DEVICE_NAME": {"autoDelete": "DELETE_RULE" } } } } }
替换以下内容:
后续步骤
如未另行说明,那么本页面中的内容已根据知识共享署名 4.0 许可获得了许可,并且代码示例已根据 Apache 2.0 许可获得了许可。有关详情,请参阅 Google 开发者网站政策。Java 是 Oracle 和/或其关联公司的注册商标。
最后更新时间 (UTC):2025-06-19。
-