如何诊断ECS Fargate任务启动失败?

时间:2019-05-20 22:42:31

标签: docker amazon-ecs aws-fargate

我正在尝试使用其ECS服务在AWS上启动/运行Dockerfile。我可以在本地运行docker镜像,但是在Fargate启动类型上失败。我已将Docker映像上传到ECR,并从中创建了集群/服务/任务。

但是,我的集群的任务状态仅显示为“ DEPROVISIONING(任务失败,无法启动)”,但是它没有提供日志或运行映像输出的详细信息,因此我不知道出了什么问题。如何查找更多信息并诊断ECS为什么无法运行我的映像?

5 个答案:

答案 0 :(得分:4)

我可能迟到了聚会,但是您可以查看容器日志,而不是查看任务日志。

转到失败的任务->详细信息->容器(在底部)并打开它。在详细信息下方,您会看到一个Status reason

打开容器详细信息 Opening the container

获取失败原因enter image description here

答案 1 :(得分:1)

请转到集群> 任务> 详细信息> 容器

您可能会在“错误消息”图中的红色矩形周围看到一些错误消息。

任务详细信息:

task detail

错误消息:

error message

答案 2 :(得分:0)

您可以在服务的信息中心的“事件”标签下获取有关任务失败的一些信息。尽管其中的信息不是很具描述性,但是它们可以为您提供一个模糊的提示,指出确切的地方出了问题。

enter image description here

答案 3 :(得分:0)

正如Abhinav所说,该消息不是很具有描述性(并且使用CLI aws ecs describe-tasks并没有添加更多内容)。唯一的可能性是登录到主机EC2实例并在其中读取日志,或将那些日志发送到CloudWatch https://docs.aws.amazon.com/AmazonECS/latest/developerguide/using_cloudwatch_logs.html#cwlogs_user_data

(在ECS中)最可能的原因是群集没有足够的资源来启动新任务。有时,您可以从“度量标准”选项卡中找出原因,或者自2019年中以来(取决于您猜测的地区),您可以从ECS帐户设置中启用“ CloudWatch Container Insights”以获取有关内存和CPU预留的更多详细信息。

答案 4 :(得分:0)

这些方法都不适合我。 有效的方法是将其中一项服务设为必不可少(只有您确定可以使用的服务),然后查看 Cloudwatch 日志,最终甚至查看 EC2 实例中的 ECS 日志。

# ecs-params.yml

version: 1
task_definition:
  services:
    myservice1:
       essential: true
    myservice2:
       essential: false
    myservice3:
       essential: false
    myservice4:
       essential: false
    myservice5:
       essential: false

ECS 的黑匣子毕竟不是很友好。