本页面介绍 Spot 虚拟机,Spot 虚拟机实例是过剩的 Compute Engine 容量。Spot 虚拟机的折扣力度很大,但 Compute Engine 可能会提前停止或删除(抢占)Spot 虚拟机来随时收回容量。Spot 虚拟机是最新版本的抢占式虚拟机。
虚拟机的预配模型会影响其折扣和可用性:Compute Engine 虚拟机可以使用标准预配模型(标准虚拟机,默认)或 Spot 预配模型(Spot 虚拟机)。与标准虚拟机相比,Spot 虚拟机的价格要低得多,但可用性也较低,因为它们可能会被抢占。您可以使用 Spot 虚拟机降低容错型工作负载的费用。
如需从整体上详细了解 Compute Engine 虚拟机,请参阅虚拟机实例文档。如需了解如何创建 Spot 虚拟机,请参阅创建和使用 Spot 虚拟机。
什么是 Spot 虚拟机?
与标准虚拟机的按需价格相比,Spot 虚拟机的大多数机器类型和 GPU 的价格要低得多(60-91% 的折扣),部分其他资源的折扣则相对少一些。但是,Compute Engine 可能会随时抢占 Spot 虚拟机的位置,例如,在它需要资源来执行其他任务时,这种情况就可能会发生。在这种不确定的抢占时刻,Compute Engine 会停止(默认)或删除 Spot 虚拟机,具体取决于您为每个 Spot 虚拟机指定的终止操作。Spot 虚拟机是过剩的 Compute Engine 容量,因此它们的可用性因 Compute Engine 使用情况而异。Spot 虚拟机没有最小或最大运行时长,除非您明确限制运行时长。
如果您的工作负载具有容错能力,并且可以承受可能的虚拟机抢占,Spot 虚拟机可以显著降低您的 Compute Engine 费用。例如,批处理作业可以在 Spot 虚拟机上运行。如果其中某些虚拟机在处理期间停止,作业会减慢但不会完全停止。Spot 虚拟机可完成您的批处理任务,而不会在现有虚拟机上增加额外的负载,您也不再需要为额外的标准虚拟机支付全价。
Spot 虚拟机限制
Spot 虚拟机的功能类似于标准虚拟机,但具有以下限制:
- Compute Engine 可能会抢占 Spot 虚拟机来随时收回资源。Compute Engine 会因为各种原因(例如因为系统事件)而抢占 Spot 虚拟机。Compute Engine 抢占 Spot 虚拟机的可能性通常很低,但根据当前条件,每天和每个可用区都可能会有所不同。
- Spot 虚拟机是有限的 Compute Engine 资源,因此它们可能并非始终可用。
- Spot 虚拟机无法在运行时实时迁移成为标准虚拟机,也无法设置为在发生主机事件时自动重启。
- 由于上述限制,Spot 虚拟机不在任何服务等级协议的涵盖范围内,并且已从 Compute Engine SLA 中排除。
- 适用于 Compute Engine 的 Google Cloud 免费层级赠金不适用于 Spot 虚拟机。
Spot 虚拟机抢占
本部分介绍 Compute Engine 如何抢占 Spot 虚拟机以及选择哪些虚拟机进行抢占。
抢占过程
Compute Engine 执行以下步骤来抢占 Spot 虚拟机:
- Compute Engine 以 ACPI G2 软关闭信号的形式向虚拟机发送抢占通知。您可以使用关闭脚本来处理抢占通知,并在虚拟机停止前完成清理操作。
- 如果虚拟机在 30 秒后没有停止,Compute Engine 会向操作系统发送 ACPI G3 机械关闭信号。
- Spot 虚拟机的最终状态因每个虚拟机指定的终止操作而异:
- 如果终止操作设置为
STOP
或未指定,则 Compute Engine 会停止虚拟机,将虚拟机转换为TERMINATED
状态。 - 如果终止操作设置为
DELETE
,则 Compute Engine 会删除虚拟机。
- 如果终止操作设置为
如果被抢占的虚拟机已停止,它仍会出现在您的项目中,但您无需为处于 TERMINATED
状态的虚拟机使用时间付费。您可以从挂接到虚拟机的任何永久性磁盘访问和恢复数据,但这些磁盘在您删除它们之前仍会产生存储费用。与标准虚拟机一样,当您删除 Spot 虚拟机时,还将删除标记为自动删除的永久性磁盘。
如果 Compute Engine 在 Spot 虚拟机创建后不到一分钟就抢占它们,则您不需要为使用这些虚拟机付费。 这可以确保除非 Spot 虚拟机有时间完成一定数量的工作,否则您不用为它们付费。但是,付费操作系统的费用仍然按正常计算。
抢占选择
当 Spot 虚拟机处于 RUNNING
状态时,可能发生抢占。处于 TERMINATED
状态时,不考虑对 Spot 虚拟机进行抢占。因此,您可以通过停止然后重启 Spot 虚拟机来重置抢占过程,因为停止虚拟机会使这些虚拟机处于在TERMINATED
状态。
只要有容量,您就可以根据需要停止和重启抢占式 Spot 虚拟机。值得注意的是,重置虚拟机或运行 sudo reboot
会使虚拟机保持 RUNNING
状态,因此不会重置抢占过程。
如需了解有关降低抢占率的建议,请参阅我们的最佳做法。
价格
Spot 价格(Spot 虚拟机的价格)为虚拟机提供了大幅折扣。Spot 价格可以在大多数机器类型和 GPU 的标准价格的基础上为您提供 60-91% 的折扣。此外,任何 A3 机器类型和 GPU、本地 SSD、外部 IP 地址和 Spot 虚拟机的 Tier_1 网络费用则享受相对较小的折扣。如果使用自定义机器类型,您需要在标准机器类型价格的基础上支付附加费。自定义机器类型的 Spot 价格包含此附加费。
值得注意的是,如果抢占的虚拟机已停止,则您无需为保持 TERMINATED
状态的虚拟机小时数付费。您可以从挂接到虚拟机的任何永久性磁盘访问和恢复数据,但这些磁盘在您删除它们之前仍会产生存储费用。详细了解实例正常运行时间和磁盘价格。
如需查看 Spot 虚拟机的最新价格,请参阅 Spot 虚拟机价格页面,使用 Cloud Billing Catalog API 或订阅 Spot 虚拟机的价格通知。
将 Spot 虚拟机与 Compute Engine 搭配使用
本部分提供有关如何将 Spot 虚拟机与其他 Compute Engine 产品结合使用的显著信息。了解如何将 Spot 虚拟机与托管实例组、付费操作系统、本地 SSD 和 GPU 搭配使用。此外,了解 Spot 虚拟机如何影响 Compute Engine 资源的配额。
代管式实例组中的 Spot 虚拟机
您可以使用 gcloud CLI 或 Compute Engine API 在代管式实例组中创建 Spot 虚拟机。在创建或更新组之前,在实例模板中指定创建 Spot 虚拟机的选项。
仅当其他 Compute Engine 资源可用时,代管式实例组才可创建或添加新的 Spot 虚拟机。如果这些资源有限,则代管式实例组无法调整大小或自动调节组中 Spot 虚拟机的数量。
托管实例组始终尽力保持其目标大小或由该组的自动扩缩程序指定的大小。如果 Compute Engine 停止代管式实例组中的一个或多个 Spot 虚拟机,则该组会反复尝试使用指定的实例模板重新创建这些虚拟机。如果必要的资源变得再次可用,则该组将重新创建虚拟机并保持目标组大小。
Spot 虚拟机上的付费操作系统
Spot 虚拟机不会降低付费操作系统的费用,也不会改变您支付此类操作系统使用费的方式。如果 Compute Engine 停止运行付费操作系统的 Spot 虚拟机,则需要为该操作系统付费,就像您自己停止了虚拟机一样。最低使用费仍然适用,并且付费操作系统的账单仍然通过向上舍入到最接近的使用量增量来计算。
运行付费操作系统的 Spot 虚拟机上的机器类型始终按秒计费,并遵循机器类型价格页面上列出的价格。
Spot 虚拟机上的本地 SSD
您可以使用本地 SSD 启动 Spot 虚拟机,Compute Engine 会根据本地 SSD 使用量向您收取 spot 价格挂接到 Spot 虚拟机的本地 SSD 的工作方式类似于普通的本地 SSD;此类 SSD 会保留相同的数据持久性特性,并在虚拟机生命周期内保持挂接状态。
如果本地 SSD 的虚拟机在开始运行后的第一分钟被抢占,则 Compute Engine 不会针对这些本地 SSD 向您收取费用。
如需详细了解本地 SSD,请参阅添加本地 SSD。
Spot 虚拟机上的 GPU
您可以较低的 GPU spot 价格将 GPU 添加到 Spot 虚拟机。挂接到 Spot 虚拟机的 GPU 的工作方式类似于普通 GPU,但只会在虚拟机的生命周期内保留。搭载 GPU 的 Spot 虚拟机遵循与所有 Spot 虚拟机相同的抢占过程。
考虑申请将专用 Preemptible GPU
配额用于 Spot 虚拟机上的 GPU。如需了解详情,请参阅 Spot 虚拟机的配额。
在维护事件发生时,挂接了 GPU 的 Spot 虚拟机会默认被抢占,并且无法自动重启。如果您要在虚拟机被抢占后重新创建这些实例,请使用代管式实例组。如果 vCPU、内存和 GPU 资源可用,则代管式实例组将重新创建您的虚拟机实例。
如果您希望在虚拟机被抢占前收到警告,或者想要将虚拟机配置为在维护事件结束后自动重启,请使用具有 GPU 的标准虚拟机。对于具有 GPU 的标准虚拟机,Compute Engine 会在抢占前提前一小时发出通知。
如果 GPU 所属的虚拟机在开始运行后的第一分钟被抢占,则 Compute Engine 不会针对这些 GPU 向您收费。
如需了解如何创建挂接 GPU 的 Spot 虚拟机,请参阅创建挂接 GPU 的虚拟机和创建 Spot 虚拟机。
Spot 虚拟机的配额
与其他虚拟机一样,Spot 虚拟机需要可用的 CPU 配额。此外,如果您计划将 Spot 虚拟机与本地 SSD 或 GPU 搭配使用,Spot 虚拟机还需要磁盘配额和 GPU 配额。
如果您将 Spot 虚拟机与这些资源搭配使用,并且没有申请抢占式配额,则 Spot 虚拟机会使用这些资源的标准配额。如果您计划使用 Spot 虚拟机,请考虑为这些资源申请抢占式配额,以防止 Spot 虚拟机消耗您的其他配额。
在 Compute Engine 授予您某个区域的抢占式配额后,该区域中的所有 Spot 虚拟机(以及任何抢占式虚拟机)都将计入该配额。该地区中的所有标准虚拟机仍会计入标准配额。在您没有抢占式配额的区域中,您可以使用标准配额来启动 Spot 虚拟机。
抢占式配额不会显示在 gcloud CLI 或 Google Cloud 控制台配额页面中,除非 Compute Engine 已授予该配额。
了解如何申请抢占式配额。
后续步骤
自行试用
如果您是 Google Cloud 新手,请创建一个账号来评估 Compute Engine 在实际场景中的表现。新客户还可获享 $300 赠金,用于运行、测试和部署工作负载。
免费试用 Compute Engine