在修复期间应用配置更新


本文档介绍如何配置 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. 安装 Google Cloud CLI,然后通过运行以下命令初始化 Google Cloud CLI:

      gcloud init
    2. Set a default region and zone.
    3. REST

      如需在本地开发环境中使用本页面上的 REST API 示例,请使用您提供给 gcloud CLI 的凭据。

        安装 Google Cloud CLI,然后通过运行以下命令初始化 Google Cloud CLI:

        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://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instanceGroupManagers/MIG_NAME

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

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

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

POST https://www.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/projects/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://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instanceGroupManagers/MIG_NAME
{
"instanceLifecyclePolicy":
{ "forceUpdateOnRepair": NO
}
}

请替换以下内容:

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

后续步骤