使用 Spot 实例 - Amazon Elastic Container Service
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

使用 Spot 实例

Spot 实例是一种未使用的 Amazon EC2 实例,以低于按需价格提供。由于竞价型实例允许您以极低的折扣请求未使用的 EC2 实例,这可能会显著降低您的 Amazon EC2 成本。竞价型实例的每小时价格称为 Spot 价格。每个可用区中的每种实例类型的 Spot 价格是由 Amazon EC2 设置的,并根据 Spot Instances 的长期供求趋势逐步调整。有关更多信息,请参阅适用于 Linux 实例的 Amazon EC2 用户指南 中的 Spot 实例

您可以将 Spot 实例注册到您的 Amazon ECS 集群。有关更多信息,请参阅启动 Amazon ECS Linux 容器实例

Spot 实例耗尽

当 Spot 价格超过您请求的最高价格或容量不再可用时,Amazon EC2会终止、停止或休眠您的 Spot 实例。Amazon EC2 为终止和停止操作提供两分钟的竞价型实例中断通知。它没有提供休眠操作的两分钟通知。如果在实例上启用了 Amazon ECS Spot 实例耗尽,则 ECS 会收到 Spot 实例中断通知,并将实例置于 DRAINING 状态。

重要

当 Auto Scaling Capacity Rebalancing 移除实例时,Amazon ECS 不会收到来自 Amazon EC2 的通知。有关更多信息,请参阅 Amazon EC2 Auto Scaling 容器重新平衡

当某个容器实例设置为 DRAINING 时,Amazon ECS 将阻止安排放置在该容器实例上的新任务。连接即将耗尽的容器实例上处于 PENDING 状态的服务任务将立即停止。如果集群中有可用的容器实例,则在这些容器实例上启动替换服务任务。

Spot 实例耗尽在默认情况下处于禁用状态,必须手动启用。要为新的容器实例启用 Spot 实例耗尽,请在启动容器实例时将以下脚本添加到 User data (用户数据) 字段中,将 MyCluster 替换为容器实例注册到的集群的名称。

#!/bin/bash cat <<'EOF' >> /etc/ecs/ecs.config ECS_CLUSTER=MyCluster ECS_ENABLE_SPOT_INSTANCE_DRAINING=true EOF

有关更多信息,请参阅启动 Amazon ECS Linux 容器实例

要为现有容器实例开启竞价型实例耗尽

  1. 通过 SSH 连接到 Spot 实例。

  2. 编辑 /etc/ecs/ecs.config 文件并添加以下内容:

    ECS_ENABLE_SPOT_INSTANCE_DRAINING=true
  3. 重新启动 ecs 服务。

    • 对于经 Amazon ECS 优化的 Amazon Linux 2 AMI:

      sudo systemctl restart ecs
    • 对于经 Amazon ECS 优化的 Amazon Linux AMI:

      sudo stop ecs && sudo start ecs
  4. (可选) 您可以通过查询代理自检 API 操作,验证代理是否正在运行并查看有关新容器实例的一些信息。有关更多信息,请参阅Amazon ECS 容器代理自检

    curl http://localhost:51678/v1/metadata