耗尽 Amazon ECS 容器实例 - Amazon Elastic Container Service

耗尽 Amazon ECS 容器实例

有时可能需要从集群中移除容器实例;例如,要执行系统更新,或缩减集群容量。Amazon ECS 能够将容器实例转换为 DRAINING 状态。这称为容器实例耗尽。当某个容器实例设置为 DRAINING 时,Amazon ECS 将阻止安排放置在该容器实例上的新任务。

服务的耗尽行为

作为服务一部分的任何处于 PENDING 状态的任务都将立即停止。如果集群中存在可用容器实例容量,则服务计划程序将启动替换任务。如果容器实例容量不足,将发送一条指出问题的服务事件消息。

作为容器实例上处于状态 RUNNING 的服务的一部分的任务将转换为状态 STOPPED。服务计划程序尝试根据服务的部署类型和部署配置参数、minimumHealthyPercentmaximumPercent 替换任务。有关更多信息,请参阅Amazon ECS 服务Amazon ECS 服务定义参数

  • 如果 minimumHealthyPercent 低于 100%,计划程序在替换任务时可以临时忽略 desiredCount。例如,desiredCount 为四项任务,如果最小值为 50%,则允许计划程序在开始两项新任务之前终止两项现有任务。如果最小值为 100%,那么在替换任务正常运行之前,服务计划程序无法删除现有任务。如果针对未使用负载均衡器的服务的任务处于 RUNNING 状态,则认为这些任务正常运行。服务任务的状态如果为 RUNNING 且使用负载均衡器,同时该负载均衡器报告托管该服务任务的容器实例运行正常,则该服务任务运行正常。

    重要

    如果您使用的竞价型实例和 minimumHealthyPercent 大于或等于 100%,则服务将没有足够的时间在竞价型实例终止之前替换任务。

  • maximumPercent 参数表示进行任务替换时正在运行的任务数量上限,允许您定义替换批处理大小。例如,如果 desiredCount 为四项任务,那么上限 200% 会在停止将要耗尽的四项任务前启动四项新任务 (假设需要进行此操作的集群中有可用资源)。如果上限为 100%,只有在耗尽任务停止后才能启动替换任务。

    重要

    如果 minimumHealthyPercentmaximumPercent 都是 100%,那么服务无法删除现有任务,也无法启动替换任务。这可以防止成功耗尽容器实例并防止进行新的部署。

独立任务的耗尽行为

处于 PENDINGRUNNING 状态的任何独立任务不受影响;您必须等待它们自行停止或手动停止。容器实例将保留在 DRAINING 状态。

当实例上运行的所有任务都转换为 STOPPED 状态时,容器实例已完成排空。在再次激活或删除容器实例之前,容器实例将保持为状态 DRAINING。您可以使用带有 containerInstance 参数的 ListTasks 操作来验证容器实例上的任务状态,以获取实例上的任务列表,然后使用带有每个任务的 Amazon Resource Name (ARN) 或 ID 的 DescribeTasks 操作来验证任务状态。

当您准备好容器实例再次开始托管任务时,您可以将容器实例的状态从 DRAINING 改为 ACTIVE。然后,Amazon ECS 服务调度程序将再次考虑容器实例放置任务。

过程

可以通过以下步骤使用新的 AWS Management Console 将容器实例设置为耗尽。

您还可以使用 UpdateContainerInstancesState API 操作或 update-container-instances-state 命令将容器实例的状态更改为 DRAINING

AWS Management Console
  1. https://console.aws.amazon.com/ecs/v2 打开控制台。

  2. 在导航窗格中,选择集群

  3. Clusters(集群)页面中,选择托管实例的集群。

  4. Cluster : name(集群:名称)页面上,选择 Infrastructure(基础设施)选项卡。然后,在 Container instances(容器实例)下,选择要耗尽的每个容器实例的复选框。

  5. 依次选择操作耗尽