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

容器实例耗尽

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

服务的耗尽行为

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

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

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

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

    重要

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

独立任务的耗尽行为

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

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

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

容器实例耗尽

New Amazon Web Services Management Console

新的 Amazon Web Services Management Console

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

  1. 打开位于 https://console.aws.amazon.com/ecs/ 的 Amazon ECS 控制台。

  2. 在导航窗格中,选择 Clusters

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

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

  5. 选择 Drain(耗尽)。

Classic Amazon Web Services Management Console

经典 Amazon Web Services Management Console

可以通过以下步骤用经典 Amazon Web Services Management Console 将容器实例设置为耗尽。

  1. 打开位于 https://console.aws.amazon.com/ecs/ 的 Amazon ECS 控制台。

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

  3. 选择 ECS 实例选项卡,然后选中要耗尽的每个容器实例的复选框。

  4. 选择 ActionsDrain instances

  5. 实例操作完成后,选择 Done

  6. 如果要再次激活容器实例,请重复这些相同的步骤,但从操作菜单中选择激活实例

Amazon CLI

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