配置 Amazon ECS Linux 容器实例以接收竞价型实例通知 - Amazon Elastic Container Service
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

配置 Amazon ECS Linux 容器实例以接收竞价型实例通知

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

重要

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

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

竞价型实例耗尽功能在默认情况下处于关闭状态。

您可以在启动实例时开启竞价型实例耗尽功能。将以下脚本添加到用户数据字段。将 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
  4. (可选) 您可以通过查询代理自检 API 操作,验证代理是否正在运行并查看有关新容器实例的一些信息。有关更多信息,请参阅 Amazon ECS 容器自检

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