为什么即使我的最高价格高于 Spot 价格,我的 Spot 实例仍然终止?

上次更新日期:2021 年 9 月 21 日

即使我设置的最高价格高于 Spot 价格,Amazon Elastic Compute Cloud(Amazon EC2)仍然终止我的 Spot 实例。如何排查此问题?

解决方法

即使您的最高价格高于 Spot 价格,Amazon EC2 仍可能会终止您的 Spot 实例,原因如下:

  • Spot 容量不足 – 当需要容量时,Amazon EC2 会中断您的 Spot 实例。Amazon EC2 会经常回收您的实例以重新利用容量。您的 Spot 实例也可能因主机维护或硬件停用等问题而终止。
  • Amazon EC2 无法满足您的 Spot 实例请求约束条件 – 如果您的请求包含约束条件(例如启动组或特定可用区组),则当组不再能够满足该约束条件时,将会终止 Spot 实例。

设置较高的最高价格并不能保证 Spot 实例的可用性。有关更多信息,请参阅 Spot 实例工作原理

注意:当 Amazon EC2 中断 Spot 实例时,默认情况下会终止 Spot 实例。您可以将此默认行为更改为 hibernate(休眠)或 stop(停止),而不是终止实例。有关更多信息,请参阅中断行为

要确定 Amazon EC2 中断 Spot 实例的原因,请执行以下操作:

  1. 打开 Amazon EC2 控制台,然后选择 Spot Requests (Spot 请求)
  2. 选择已终止的 Spot 实例的 Request ID (请求 ID)
  3. 查看 Description (描述) 部分下的 Status (状态) 字段,以查看实例终止的原因代码。例如,如果 Amazon EC2 的 Spot 容量不足,则 Status (状态) 字段将显示“instance-terminated-no-capacity”。有关原因代码的完整列表,请参阅 Spot 请求状态代码

您可以使用 Spot 实例中断通知来绕过潜在的中断问题。有关更多信息,请参阅利用 Amazon EC2 Spot 实例中断通知