亚马逊 ECS 服务限制逻辑 - Amazon Elastic Container Service
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

亚马逊 ECS 服务限制逻辑

Amazon ECS 服务计划程序包含限制服务任务在反复启动失败后再启动的频率逻辑。

如果某项服务的任务反复未能进入RUNNING状态(直接从 a 变PENDINGSTOPPED状态),则后续尝试重启之间的时间将逐渐增加到最多 27 分钟。此最长周期将来可能会发生变化。此行为降低了失败任务对 Amazon ECS 集群资源或 Fargate 基础设施成本的不利影响。如果您的服务启动了限制逻辑,则您会收到以下服务事件消息

(service service-name) is unable to consistently start tasks successfully.

Amazon ECS 永远不会阻止失败的服务重试。除了延长重启的间隔时间外,它也不会尝试以任何方式对其进行修改。服务限制逻辑不提供任何用户可调参数。

如果您将服务更新为使用新的任务定义,则您的服务会立即返回到正常的无限制状态。有关更多信息,请参阅 使用控制台更新服务

以下是引发此逻辑的一些常见原因。我们建议您采取手动操作来解决此问题:

  • 集群中缺乏用来托管任务的资源,如端口、内存或 CPU 单位。在这种情况下,您还会看到资源不足服务事件消息

  • Amazon ECS 容器代理无法提取任务 Docker 映像。这可能是因为容器映像名称、映像、标签错误,或者缺少私有注册表身份验证或权限。在这种情况下,您还会在CannotPullContainerError停止的任务错误中看到

  • 您的容器实例上的磁盘空间不足,无法创建容器。在这种情况下,您还会在CannotCreateContainerError停止的任务错误中看到 。有关更多信息,请参阅 CannotCreateContainerError: API error (500): devmapper

重要

进入 RUNNING 状态后停止的任务不会启动限制逻辑或相关服务事件消息。例如,假设因服务的 Elastic Load Balancing 运行状况检查失败而导致某个任务被标记为运行状况不佳,则 Amazon ECS 会将其注销并停止该任务。此时,任务没有受到限制。即使任务的容器命令立即退出并伴随非零退出代码出现,该任务也已转为 RUNNING 状态。由于命令错误而立刻失败的任务不会导致限制或服务事件消息。