Amazon Elastic Container Service
开发人员指南 (API 版本 2014-11-13)
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

使用 Spot 实例

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

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

Spot 实例耗尽

如果 Spot 价格超过您的请求的最高价,或者不再具有可用的容量,Amazon EC2 将终止、停止或休眠您的 Spot 实例。Amazon EC2 将提供 Spot 实例中断通知,这会在实例中断之前为其提供两分钟的警告。如果在实例上启用了 Amazon ECS Spot 实例耗尽,则 ECS 会收到 Spot 实例中断通知,并将实例置于 DRAINING 状态。

重要

Amazon ECS 监控具有 terminatestop 实例操作的 Spot 实例中断通知。如果您在请求 Spot 实例或 Spot 队列时指定了 hibernate 实例中断行为,则这些实例不支持 Amazon ECS Spot 实例耗尽。

当某个容器实例设置为 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 容器实例

为现有容器实例启用 Spot 实例耗尽

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

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

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

    • 对于Amazon ECS-optimized Amazon Linux 2 AMI:

      sudo systemctl restart ecs
    • 对于Amazon ECS-optimized Amazon Linux AMI:

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

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

本页内容: