AWS ECS 服务未启动任何任务

AWS ECS 服务未启动任何任务

我已经在 ECS 上设置了集群、容器、任务和服务。

在我创建服务后,它似乎正在运行,并有“3 个所需任务”,但是没有创建待处理或正在运行的任务。实际上它似乎什么也没做。

我的任务定义(不包括空值和空数组)是

{
  "containerDefinitions": [
    {
      "portMappings": [
        {
          "hostPort": 5000,
          "protocol": "tcp",
          "containerPort": 25565
        },
        {
          "hostPort": 5000,
          "protocol": "udp",
          "containerPort": 25565
        }
      ],
      "cpu": 0,
      "memoryReservation": 1024,
      "image": "itzg/bungeecord",
      "essential": true,
      "name": "BungeeCord"
    }
  ],
  "compatibilities": [
    "EC2"
  ],
  "taskDefinitionArn": "arn:aws:ecs:us-west-1:949960343466:task-definition/BungeeCordTask:3",
  "family": "BungeeCordTask",
  "requiresAttributes": [
    {
      "name": "com.amazonaws.ecs.capability.docker-remote-api.1.21"
    }
  ],
  "requiresCompatibilities": [
    "EC2"
  ],
  "revision": 3,
  "status": "ACTIVE",
}

我的集群有3个ECS实例,它们都在运行,并且上面没有任何内容: 我的集群

我的服务在这里: 我的服务

我没有设置任何自动缩放、负载平衡或任何其他功能。但我确实有一些非常默认的服务发现。

有人知道为什么没有任务开始吗?

编辑:

  • 我看了一下“已停止的任务”,它实际上是空的。
  • 我还通过 SSH 连接到每个 ec2 实例,并查看了 /var/log:我发现文件夹 /var/log/ecs 包含一些日志文件,但没有任何错误或与我的任务特别相关的内容。它似乎正在成功轮询亚马逊 Web 端点以获取更新。
  • 我还运行了 curl google.com 来验证他们是否有外部访问权限。

答案1

我会检查 ECS 服务中的“事件”选项卡。在某些情况下,它会告诉您没有足够的内存来启动容器。如果不了解的话,找到它有点困难,因为它隐藏在服务内的选项卡中。我预计一定发生了一些事件。

答案2

在里面集群选项卡中,选择集群。在服务打开任务选项卡并将视图切换为“已停止的任务”。

您应该会看到启动失败的任务列表以及失败的原因。

还要检查/var/log/amazon/{something about ecr}/*其他可能的错误。

可能是实例无法访问 docker 注册表(网络配置问题)或者如果是 ECR(IAM 角色)则无法登录或需要用户名/密码。

希望有帮助:)

答案3

这个答案可能会对某些人有所帮助。对我来说,类似地,该服务没有尝试启动任何任务 - 没有停止的任务,没有事件,CloudTrail 中没有显示任何内容。

事实证明,服务定义中的一个子网已不存在。该服务默默地无法启动任何任务,也没有记录任何尝试的证据。因此,如果有疑问,请尝试重新创建该服务,以帮助确保您尝试使用的所有资源仍然存在。

答案4

找出任务无法启动的原因的另一种方法是使用 AWS-CLI 分析日志。例如,要查看有关名为 mycluster 的集群中 ID 为 xxxxx 的任务的信息,我们可以执行以下操作:

aws ecs describe-tasks --cluster mycluster --tasks xxxxx

然后搜索字段“stoppedReason”

相关内容