关于暂停和停止 MIG 中的虚拟机


本文档介绍了托管式实例组 (MIG) 中虚拟机实例的暂停和停止操作。还介绍了暂停和停止 MIG 中的虚拟机如何帮助您节省费用并在实例组中需要较多虚拟机时缩短等待时间。

MIG 可让您暂停和停止虚拟机以实现以下目标:

  • 通过不为计算资源付费,暂停未使用的应用或服务
  • 通过从已停止和已暂停虚拟机的备用池启动预先初始化的虚拟机,加快 MIG 扩容速度

使用场景

以下各部分介绍了 MIG 中备用池的典型使用场景。

暂停应用或服务

您可以根据计算、工作时间、高峰时间和预算限制,暂停或停止 MIG 中的虚拟机以暂停应用并在需要时恢复应用。您可以将当前计算结果保存在永久性磁盘上,如果是暂停虚拟机,则保留在内存中。

例如,您可能希望在以下情况下暂停或停止 MIG 中的虚拟机:

  • 您的工作日有繁重的工作负载,并且希望在周末暂停虚拟机以节省费用。
  • 您在实施更改期间需要一个测试环境,并且当您正在积极开发时不希望停止。

加快 MIG 扩容速度

您可以让预先初始化的虚拟机备用池保持准备就绪状态,可在 MIG 扩容时启动。MIG 会从备用池启动或恢复虚拟机,而不是创建新的虚拟机并等待应用初始化并准备好运行。在这种情况下,虚拟机初始化会提前完成,而不是在负载增加的关键时刻完成。

备用池对于初始化时间较长的应用非常有用,例如在以下情况下:

  • 需要将最新内容下载到永久性磁盘的应用。
  • 需要在内存中缓存额外内容的应用 - 通过从外部存储和/或本地计算下载。
  • 在初始化期间需要安装新软件的应用,例如 Kubernetes 节点。

保留的资源

下表显示了暂停和停止 MIG 中的虚拟机时保留的资源。

保留 已暂停的虚拟机 已停止的虚拟机
虚拟机名称
内部 IP
外部 IP(临时)
外部 IP(静态*)
磁盘
元数据
内存

*如果要在停止或暂停 MIG 中的虚拟机时保留外部 IP,请使用有状态 MIG 配置将外部 IP 提升为静态 IP。

行为和配置

备用池由已停止和已暂停的虚拟机池组成。所有已停止的虚拟机都会成为已停止池的一部分,所有已暂停的虚拟机都会成为已暂停池的一部分。如果您在 MIG 中配置了自动扩缩,则在暂停或停止虚拟机后,MIG 会立即创建新虚拟机以保持 MIG 的建议大小。

已暂停和已停止的池的目标大小

与 MIG 的目标大小类似,已停止和已暂停的池具有自己的目标大小。您可以通过以下方式控制备用池目标大小:

  • 通过配置已停止和已暂停的目标大小的值。
  • 通过手动停止和暂停虚拟机,然后自动更改目标大小。

更改已停止或已暂停的池的目标大小时,MIG 的行为如下:

  • 增加已暂停或已停止的池的大小时,MIG 会创建新的虚拟机,等待虚拟机初始化,然后相应地暂停或停止虚拟机。对于区域级 MIG,系统会根据配置的目标分布形状创建虚拟机。
  • 当您减小已暂停或已停止的池的大小时,MIG 会任意选择要删除的已暂停或已停止的虚拟机。
  • 当您同时更改 MIG 目标大小和已暂停或已停止的池大小时,MIG 会尝试最大限度地减少应用更改所需的操作次数。这意味着 MIG 可能会从备用池恢复或启动虚拟机,或者暂停或停止某些正在运行的虚拟机。

备用政策

备用政策根据您指定的以下参数定义备用池的行为:

  • 模式:MIG 使用已暂停和已停止的虚拟机的模式。可以是 manualscale-out-pool 模式。
  • 初始延迟时间:MIG 在暂停或停止新创建的虚拟机之前运行它的时间。配置初始延迟,让应用有足够的时间进行预先初始化并准备好在虚拟机启动或恢复时运行。

模式

您可以通过设置操作模式来选择如何管理备用池。有两个可能的选项:manual 模式和 scale-out-pool 模式。

手动模式(默认)

在手动模式下,您可以完全控制停止和暂停 MIG 中的哪些虚拟机。手动模式是备用池的默认模式。

在以下情况下,手动模式非常有用:

  • 暂停工作负载并节省空闲运行虚拟机的费用。
  • 将 MIG 与需要高级管理个别虚拟机的第三方自动扩缩器集成。
  • 停止所选虚拟机以进行调试。

使用手动模式时,MIG 不会向备用池应用任何自动化:

  • 当您或自动扩缩器增加 MIG 的目标大小时,MIG 不会自动启动或恢复虚拟机,而是创建新的虚拟机。
  • 当您或自动扩缩器减小 MIG 的目标大小时,MIG 不会自动停止或暂停正在运行的虚拟机,而是删除它们。

扩容池模式

在扩容池模式下,MIG 使用备用池中的虚拟机来加快扩容速度(通过恢复或启动这些虚拟机实现)。然后,MIG 会自动使用新虚拟机补充备用池,以保持目标大小。

在以下情况下,扩容池模式可用于加快 MIG 扩容的速度:

  • 如果您使用 Compute Engine 自动扩缩器。
  • 如果您使用第三方自动扩缩器,并且希望保留任何现有集成。
  • 手动增加正在运行的虚拟机的目标大小。

在扩容池模式下,MIG 的行为如下:

  • 当您或自动扩缩器增加 MIG 中正在运行的虚拟机的目标大小时,MIG 会按以下顺序执行操作:

    1. MIG 会恢复已暂停的虚拟机,以防 MIG 在其中扩容的可用区中有可用虚拟机。
    2. 恢复已暂停的虚拟机后,如果尚未达到 MIG 的目标大小,则当 MIG 在其中扩容的可用区中有可用的虚拟机时,MIG 会启动已停止的虚拟机。
    3. 启动虚拟机后,如果仍然没有达到 MIG 的目标大小,则会从头开始创建新虚拟机。

    使用备用池来加快扩容速度后,MIG 会执行以下操作:

    1. 它会创建新的虚拟机,以根据其目标大小以及(对于区域级 MIG)目标分布形状进来补充已暂停和已停止的池。
    2. 它将新虚拟机置于正在运行状态。
    3. 初始延迟时间过后,它会暂停或停止新的虚拟机。
  • 当您或自动扩缩器减小 MIG 的目标大小时,MIG 不会自动停止或暂停正在运行的虚拟机,而是删除它们。

初始延迟时间

如需确保虚拟机正确初始化,请在备用政策中指定初始延迟时间。初始延迟时间是虚拟机在创建之后、在停止或暂停之前等待的时间。这样,您的初始化脚本就有时间完成工作。

在以下情况下,初始延迟时间会发生:

  • 创建了一个预期目标状态为 SUSPENDEDTERMINATED 的新虚拟机。
  • 已暂停或已停止处于 RUNNING 状态的现有实例。

在这两种情况下,实例都可以在被暂停或停止之前进行初始化。

如果要使用备用池来加快 MIG 扩容的速度,则建议您衡量在所选机器类型上初始化应用所需的时间,以确保在暂停或停止之前,应用有充足的时间完全准备就绪。否则,从备用池恢复或启动虚拟机所需时间可能比从头开始创建虚拟机所需时间还要长。

MIG 中的虚拟机的目标状态

MIG 具有声明式 API。这意味着您声明 MIG 中虚拟机的目标状态,并且在保存目标状态时 API 请求会成功。然后,MIG 会执行必要的操作以达到目标状态,您可以通过 API 检查所有虚拟机的当前操作和当前状态。

暂停和停止 MIG 中的虚拟机以相同的声明式方法工作。当您发送暂停或停止虚拟机的请求时,MIG 会存储每个虚拟机目标状态的相关信息,并启动到达该状态的必要操作。

当您在 MIG 中列出托管式虚拟机时,您可以看到 targetStatus 字段。它描述了当 MIG 稳定时虚拟机的最终状态。具体状态可以是以下值之一:

  • RUNNING
  • STOPPED
  • SUSPENDED

MIG 中的虚拟机可以具有单个虚拟机的相同生命周期状态。以下是针对 MIG 的可能操作的示例以及 targetStatus 字段的关联值:

  • 创建新的虚拟机,并在初始化后暂停该虚拟机。
    • 虚拟机的目标状态:SUSPENDED
  • 恢复先前已暂停的虚拟机。
    • 虚拟机的目标状态:RUNNING
  • 停止以前正在运行的虚拟机。
    • 虚拟机的目标状态:STOPPED
  • 启动先前已停止的虚拟机。
    • 虚拟机的目标状态:RUNNING

限制

  • 停止和暂停 MIG 中的虚拟机与停止暂停 MIG 外部的虚拟机具有相同的限制。
  • 在启用了 EVEN 目标分布形状和实例重新分布的区域级 MIG 中,您无法暂停、停止、恢复或启动实例组中的特定虚拟机。如需管理备用池,请设置已暂停和已停止的池的目标大小。
  • 在扩容池模式下,您无法添加第二个实例模板以在 MIG 中启动 Canary 更新
  • 如果您已经在 MIG 中停用修复,则无法暂停或停止 MIG 中的虚拟机。
  • 在虚拟机自动停止之前,您最多只能将实例暂停 60 天。

价格

每个已停止和已暂停的虚拟机都会针对以下项目计费:

  • 启动磁盘以及挂接到虚拟机的任何其他磁盘的任何永久性磁盘使用量。如需了解详情,请参阅永久性磁盘价格
  • 挂接到虚拟机的任何静态 IP。如需了解详情,请参阅 IP 地址价格
  • (对于已暂停的虚拟机)虚拟机内存和设备状态。如需了解详情,请参阅虚拟机实例价格

后续步骤