容器实例耗尽
有时可能需要删除集群中的容器实例;例如,为了执行系统更新、更新 Docker 守护程序或缩减集群规模。容器实例耗尽允许您从集群中删除容器实例而不影响集群中的任务。
将某个容器实例设置为 DRAINING
时,Amazon ECS 将阻止安排放置在该容器实例上的新任务。连接即将耗尽的容器实例上处于 PENDING
状态的服务任务将立即停止。如果集群中有可用的容器实例,则在这些容器实例上启动替换服务任务。
容器实例上处于 RUNNING
状态的服务任务将停止,并根据服务的部署配置参数 minimumHealthyPercent
和 maximumPercent
进行替换。
-
如果
minimumHealthyPercent
低于 100%,计划程序在替换任务时可以临时忽略desiredCount
。例如,desiredCount
为四项任务,如果最小值为 50%,则允许计划程序在开始两项新任务之前终止两项现有任务。如果最小值为 100%,那么在替换任务正常运行之前,服务计划程序无法删除现有任务。如果针对未使用负载均衡器的服务的任务处于RUNNING
状态,则认为这些任务正常运行。服务任务的状态如果为RUNNING
且使用负载均衡器,同时该负载均衡器报告托管该服务任务的容器实例运行正常,则该服务任务运行正常。 -
maximumPercent
参数表示进行任务替换时正在运行的任务数量上限,允许您定义替换批处理大小。例如,如果desiredCount
为四项任务,那么上限 200% 会在停止将要耗尽的四项任务前启动四项新任务 (假设需要进行此操作的集群中有可用资源)。如果上限为 100%,只有在耗尽任务停止后才能启动替换任务。
有关更多信息,请参阅 服务定义参数。
不属于服务的 PENDING
或 RUNNING
任务不会受到影响;您必须等待它们完成,或手动停止它们。
如果容器实例中已没有 RUNNING
任务,即完成了耗尽 (虽然状态仍为 DRAINING
)。您可以使用具有 containerInstance
参数的 ListTasks 操作进行验证。
如果将容器实例的状态从 DRAINING
更改为 ACTIVE
,Amazon ECS 计划程序可以再次计划该实例的任务。
耗尽实例
您可以使用 UpdateContainerInstancesState API 操作或 update-container-instances-state 命令将容器实例的状态更改为 DRAINING
。
以下过程说明如何使用 AWS 管理控制台将实例设置为 DRAINING
。
使用控制台将实例设置为 DRAINING
-
在 https://console.amazonaws.cn/ecs/ 上打开 Amazon ECS 控制台。
-
在导航窗格中,选择 Clusters 并选择集群。
-
选择 ECS Instances,然后选中容器实例的复选框。
-
选择 Actions,Drain instances。
-
实例操作完成后,选择 Done。