在修复期间应用配置更新


本文档介绍如何配置 MIG 以在修复操作期间重新创建虚拟机时应用最新的实例模板和每个实例配置。在修复操作期间应用最新的可用配置也称为修复时更新。本文档还介绍了如何检查 MIG 中是否启用了修复时更新功能,以及如何停用修复时更新功能(如果已启用)。

默认情况下,在修复期间,MIG 会使用最初用于创建虚拟机的同一实例配置重新创建虚拟机。如果有实例组的实例模板或每个实例配置的更新可用,您可以选择将这些更改应用于正在修复的虚拟机。

如果您想自动将配置更新应用于所有或一组虚拟机 (PROACTIVE),或者选择性地更新特定实例 (OPPORTUNISTIC),请参阅将新配置应用于 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

    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 时进行身份验证

配置修复时更新

如需配置修复时更新,请使用 Google Cloud 控制台、gcloud CLI 或 REST。

控制台

  1. 在 Google Cloud 控制台中,转到实例组页面。

    进入“实例组”

  2. 点击要配置“修复时更新”的 MIG 名称。

  3. 点击修改以修改 MIG。

  4. 虚拟机实例生命周期部分中,针对虚拟机实例修复期间的更新,选择更新实例配置

  5. 点击保存

gcloud

对于现有 MIG,请使用 update 命令

gcloud compute instance-groups managed update MIG_NAME \
    --force-update-on-repair

对于新的 MIG,请使用 create 命令

gcloud compute instance-groups managed create MIG_NAME \
    --template INSTANCE_TEMPLATE \
    --size SIZE \
    --force-update-on-repair

请替换以下内容:

  • MIG_NAME:实例组的名称。
  • INSTANCE_TEMPLATE:要用于实例组的实例模板的名称。
  • SIZE:实例组的目标大小。

REST

对于现有的可用区级 MIG,请使用 instanceGroupManagers.patch 方法;对于现有的区域级 MIG,请使用 regionInstanceGroupManagers.patch 方法

进行以下调用,在现有可用区级 MIG 中配置修复更新:

PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instanceGroupManagers/MIG_NAME

{
"instanceLifecyclePolicy":
  { "forceUpdateOnRepair": YES
  }
}

对于新的可用区级 MIG,请使用 instanceGroupManagers.insert 方法;对于新的区域级 MIG,请使用 regionInstanceGroupManagers.insert 方法

创建可用区级 MIG 时,进行以下调用以配置修复时更新:

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instanceGroupManagers
{
"name": "MIG_NAME",
"instanceTemplate": "INSTANCE_TEMPLATE",
"targetSize": SIZE,
"instanceLifecyclePolicy":
  { "forceUpdateOnRepair": YES
  }
}

请替换以下内容:

  • PROJECT_ID:您的项目 ID
  • ZONE:MIG 所在的可用区。
  • MIG_NAME:实例组的名称。
  • INSTANCE_TEMPLATE:要用于实例组的实例模板的名称。
  • SIZE:实例组的目标大小。

检查是否启用了修复时更新

默认情况下,MIG 不会在修复期间更新虚拟机。如需检查是否为 MIG 启用了修复时更新,请使用 Google Cloud 控制台、gcloud CLI 或 REST 查看修复时更新配置。

控制台

  1. 在 Google Cloud 控制台中,转到实例组页面。

    进入“实例组”

  2. 点击要检查其配置的 MIG 的名称。

  3. 点击详细信息标签页。

  4. 虚拟机实例生命周期部分中,检查针对虚拟机实例修复期间的更新选择的选项。如果选择了更新实例配置,则启用修复时更新。

gcloud

使用如下所示的 describe 命令

gcloud compute instance-groups managed describe MIG_NAME \
--format="(instanceLifecyclePolicy)"

在响应正文中,检查 forceUpdateOnRepair 字段,该字段的值为以下值之一:

  • NO:默认值。MIG 不会在虚拟机修复时更新虚拟机。
  • YES:MIG 会在修复期间更新虚拟机。

以下是输出示例:

instanceLifecyclePolicy:
 forceUpdateOnRepair: YES

REST

对于可用区级 MIG,请使用 instanceGroupManagers.get 方法;对于区域级 MIG,请使用 regionInstanceGroupManagers.get 方法

例如,在可用区级 MIG 中,使用以下命令:

GET https://compute.googleapis.com/compute/v1/PROJECT_ID/zones/ZONE/instanceGroupManagers/MIG_NAME

在响应正文中,检查 instanceLifecyclePolicy.forceUpdateOnRepair 字段,该字段的值为以下值之一:

  • NO:默认值。MIG 不会在虚拟机修复时更新虚拟机。
  • YES:MIG 会在修复期间更新虚拟机。

以下是示例响应:

{
...
"name": "example-mig",
"targetSize": 12,
...
"instanceLifecyclePolicy": {
  "forceUpdateOnRepair": "YES"
  },
...
}

请替换以下内容:

  • PROJECT_ID:您的项目 ID
  • ZONE:MIG 所在的可用区。
  • MIG_NAME:实例组的名称。

停用修复更新

在 MIG 修复虚拟机时,如果您希望 MIG 使用用于创建虚拟机的原始实例模板或实例配置,则必须停用修复时更新。默认情况下,系统会对 MIG 停用修复时更新。

使用 Google Cloud 控制台、gcloud CLI 或 REST 停用修复时更新。

控制台

  1. 在 Google Cloud 控制台中,转到实例组页面。

    进入“实例组”

  2. 点击要停用修复时更新的 MIG 名称。

  3. 点击修改以修改 MIG。

  4. 虚拟机实例生命周期部分中,针对虚拟机实例修复期间的更新,选择保留相同的实例配置

  5. 点击保存

gcloud

使用 update 命令设置 --no-force-update-on-repair 标志,如下所示:

gcloud compute instance-groups managed update MIG_NAME \
    --no-force-update-on-repair

REST

对于可用区级 MIG,请使用 instanceGroupManagers.patch 方法;对于区域级 MIG,请使用 regionInstanceGroupManagers.patch 方法

例如,如需为可用区级 MIG 停用修复更新功能,请使用以下命令:

PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instanceGroupManagers/MIG_NAME
{
"instanceLifecyclePolicy":
{ "forceUpdateOnRepair": NO
}
}

请替换以下内容:

  • PROJECT_ID:您的项目 ID
  • ZONE:MIG 所在的可用区。
  • MIG_NAME:实例组的名称。

后续步骤