我正在尝试运行我在 AWS ECS 中的任务定义。我有一个默认集群,并且在其上启动了一个容器实例,我正在尝试运行我在该实例上获得的任务定义。任务直接从 PENDING 状态变为 STOPPED,原因如下:
已停止(任务中的重要容器已退出)
我深入研究了该实例并提取了日志/var/log/ecs/
,发现:
转换容器 XXX 的统计信息时出错:报告的容器统计信息无效,未报告 CPU 核心使用情况
知道为什么会发生这种情况吗?我在 Google 上搜索并浏览了不同的 Stack Exchange 网站,但没有找到任何有用的信息。如果我忽略了某些内容,请原谅我。
答案1
您添加的日志消息不是您的任务未继续运行的原因。发生的情况是 ECS 使用您指定的命令和参数启动了您的容器,但容器自行退出。这可能很难调试。
找到已停止的容器的日志会很有帮助。您可以使用 查看所有容器,包括已停止的容器docker ps -a
。找到已停止的容器后,您可以使用 查看其日志docker logs <container_id>
(假设您使用的是默认日志记录驱动程序)。
答案2
启用 Cloudwatch 日志。有关如何设置和使用 Cloud Watch 的详细信息,请参见此处:http://docs.aws.amazon.com/AmazonECS/latest/developerguide/using_cloudwatch_logs.html
答案3
问题出在“任务标记配置”>禁用“启用 ECS 管理标记”
启用此参数后,Amazon ECS 会自动为您的任务添加两个与集群和服务名称对应的标签。这些标签可让您在 AWS 成本和使用情况报告中轻松识别任务。
计费权限是单独的,当您使用默认设置创建新的 ECS 集群和任务定义时,不会默认分配。这就是 ECS 失败并显示“已停止:任务中的基本容器已退出”的原因