本页介绍了如何测试 Compute Engine 实例的主机维护政策对应用的影响。
您可以在虚拟机上模拟维护事件,以测试以下内容:
- 实时迁移对应用的影响。
- 应用和批处理作业在使用一个或多个 Spot 虚拟机时如何处理抢占和关停。
- 应用如何处理被配置为在维护事件期间终止并重启(而非实时迁移)的实例的关闭和重启过程。
- 在主机维护事件期间在单租户节点上运行的工作负载的情况,并查看单租户虚拟机的主机维护政策对虚拟机上运行的应用的效果。
如果您尝试在不支持实时迁移的实例上模拟主机维护事件,则实例会被终止或重新启动,具体取决于所配置的主机维护政策。
准备工作
- 查看
SimulateMaintenanceEventRequestsPerMinutePerProjectPerRegion
的区域 API 速率限制。 -
如果您尚未设置身份验证,请进行设置。身份验证是通过其进行身份验证以访问 Google Cloud 服务和 API 的过程。如需从本地开发环境运行代码或示例,您可以选择以下任一选项向 Compute Engine 进行身份验证:
Select the tab for how you plan to use the samples on this page:
gcloud
-
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
- Set a default region and zone.
- 如需正确模拟单租户节点组上主机维护政策设置为在节点组内迁移的维护事件,您需要在每个节点上按顺序触发维护事件。
- 对于单租户节点组,如果您尝试模拟主机维护事件,并且节点组的主机维护政策设置为在节点组内迁移,则:
- 如果指定的节点数小于或等于预留的隔离节点总数,则主机维护事件模拟会同时针对所有指定节点运行。
- 如果指定的节点数大于预留隔离节点总数,则模拟将失败。
- 您每分钟可在每个区域启动的维护事件模拟次数受
simulate_maintenance_event_requests_per_region
指标的 API 速率限制所限。 - 在模拟开始时,
maintenance-event
元数据键的值会从NONE
更改为MIGRATE_ON_HOST_MAINTENANCE
。 - 在整个模拟事件的持续时间内,该值保持为
MIGRATE_ON_HOST_MAINTENANCE
。 - 模拟结束后,该值会恢复为
NONE
。 INSTANCE_NAME
:您要在其中模拟维护事件的计算实例的名称。您可以指定由单一空格分隔的多个实例名称,以模拟同一区域中多个实例上的维护事件。例如
instance-1 instance-2 instance-3
。ZONE
:实例所在的区域。PROJECT_ID
:此请求的项目 ID。INSTANCE_NAME
:您要为其模拟维护事件的实例的名称。ZONE
:实例所在的区域。使用
compute instances simulate-maintenance-event
命令为实例模拟维护事件,并测试其配置的主机维护政策设置。您可以选择性添加--with-extended-notifications
标志。gcloud compute instances simulate-maintenance-event INSTANCE_NAME \ --zone=ZONE --with-extended-notifications=True
替换以下内容:
INSTANCE_NAME
:您要在其中模拟维护事件的计算实例的名称。您可以指定由单一空格分隔的多个实例名称,以模拟同一区域中多个实例上的维护事件。例如
instance-1 instance-2 instance-3
。ZONE
:实例所在的区域。
可选:如需手动启动模拟的维护事件,请使用
compute instances perform-maintenance
命令。gcloud compute instances perform-maintenance INSTANCE_NAME \ --zone=ZONE
替换以下内容:
INSTANCE_NAME
:您要在其中模拟维护事件的计算实例的名称。您可以指定由单一空格分隔的多个实例名称,以模拟同一区域中多个实例上的维护事件。例如
instance-1 instance-2 instance-3
。ZONE
:实例所在的可用区。
构建对
compute.instances.simulateMaintenanceEvent
方法的POST
请求。您可以选择性添加查询参数withExtendedNotifications
。POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME/simulateMaintenanceEvent?withExtendedNotifications=True
替换以下内容:
PROJECT_ID
:此请求的项目 ID。INSTANCE_NAME
:您要为其模拟维护事件的实例的名称。ZONE
:实例所在的区域。
可选:如需手动启动模拟的维护事件,请构建对
compute.instances.performMaintenance
方法的POST
请求。POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME/performMaintenance
替换以下内容:
INSTANCE_NAME
:您要在其中启动维护事件的计算实例的名称。您可以指定由单一空格分隔的多个实例名称,以在同一区域中多个实例上执行维护事件。例如
instance-1 instance-2 instance-3
。ZONE
:实例所在的可用区。
NODE_GROUP
:您要在其中模拟维护事件的节点组的名称。NODE_NAMES
:您要在其中模拟维护事件的节点的名称。在指定多个节点名称时,请使用以逗号分隔的值,例如node-1,node-2,node-3
。ZONE
:节点所在的可用区。PROJECT_ID
:此请求的项目 ID。ZONE
:节点所在的可用区。NODE_GROUP
:您要在其中模拟维护事件的节点组的名称。NODE_NAMES
:您要在其中模拟维护事件的节点的名称。用英文双引号括起节点名称,例如"node-1"
。此外,在指定多个节点名称时,请使用以逗号分隔的值,例如"node-1","node-2","node-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 CLI 或 API 请求来模拟计算实例的维护事件。此模拟事件包含常规维护事件中发生的各种维护活动。这样,您就可以观察端到端流程,并测试您可能已实现的任何自动化操作。
在使用实时迁移的实例的主机维护事件模拟期间,实例的
maintenance-event
元数据键会发生以下变化:如需查询维护事件键,请参阅查询维护事件元数据键。
gcloud
使用
compute instances simulate-maintenance-event
命令为实例模拟维护事件,并测试其配置的主机维护政策设置:gcloud compute instances simulate-maintenance-event INSTANCE_NAME \ --zone=ZONE --with-extended-notifications=True
替换以下内容:
REST
构建对
compute.instances.simulateMaintenanceEvent
方法的POST
请求:POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME/simulateMaintenanceEvent
替换以下内容:
针对终止的计算实例模拟主机维护
您可以使用 Google Cloud CLI 或 API 请求来模拟计算实例的维护事件。此模拟事件包含常规维护事件中发生的各种维护活动。这样,您就可以观察端到端流程,并测试您可能已实现的任何自动化操作。
此外,通过将参数
--with-extended-notifications
与受支持的机器类型搭配使用,您可以测试在模拟事件期间手动启动主机维护。gcloud
REST
模拟单租户节点上的主机维护事件
您可以使用 Google Cloud CLI 或 API 请求来模拟单租户节点上的主机维护事件。在模拟单租户虚拟机上的主机维护事件期间,
maintenance-event
元数据键值对不会更改,并且在模拟过程中保持为NONE
。gcloud
运行
sole-tenancy node-groups simulate-maintenance-event
命令强制单租户节点激活其配置的维护政策:gcloud compute sole-tenancy node-groups simulate-maintenance-event NODE_GROUP \ --nodes=NODE_NAMES \ --zone=ZONE \ --async
请替换以下内容:
REST
构建对
compute.nodeGroups.simulateMaintenanceEvent
方法的POST
请求:POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/nodeGroups/NODE_GROUP/simulateMaintenanceEvent { "nodes": [ "NODE_NAMES" ] }
替换以下内容:
后续步骤
如未另行说明,那么本页面中的内容已根据知识共享署名 4.0 许可获得了许可,并且代码示例已根据 Apache 2.0 许可获得了许可。有关详情,请参阅 Google 开发者网站政策。Java 是 Oracle 和/或其关联公司的注册商标。
最后更新时间 (UTC):2024-12-22。
-