AWS ECS 任务停滞在“PROVISIONING”状态

AWS ECS 任务停滞在“PROVISIONING”状态

我有一个包含容量提供程序和服务的 ECS 集群。容量提供程序运行一个自动缩放组,当该组的一个实例启动时,最后我可以看到有可用的 ECS 实例。实际上,我可以通过 SSH 连接到它们。

该服务也运行良好,因为它创建了一个基于 ERS ​​存储库中的 docker 映像的新任务。但是,任务从未通过“PROVISIONING”,如果我打开该任务,我可以看到任务的容器为空并且正在加载。如果我进入我的实例,我会看到相同的 docker 实例,如果我执行docker psdocker ps -a。如果我执行代理,docker exec id_docker /agent我会看到:

level=info time=2022-05-02T21:16:05Z msg="Successfully got ECS instance credentials from provider: EC2RoleProvider" module=instancecreds.go
level=info time=2022-05-02T21:16:05Z msg="Starting Amazon ECS Agent" version="1.61.0" commit="05730614"
level=info time=2022-05-02T21:16:05Z msg="Loading configuration"
level=info time=2022-05-02T21:16:05Z msg="Successfully got ECS instance credentials from provider: EC2RoleProvider" module=instancecreds.go

如果我尝试,docker exec id_docker bash我会收到错误:

OCI runtime exec failed: exec failed: container_linux.go:380: starting container process caused: exec: "bash": executable file not found in $PATH: unknown

发生了什么事?有什么线索吗?

答案1

我执行 wsa 后得到的docker ps实际上是 ecs-agent,这是 Amazon 为控制容器而创建的。这是卡住的部分。事实上,我的 docker 甚至没有运行。

为了解决这个问题,当您创建任务时,在容器选项中,当您选择要重定向到主机的容器端口时,在主机值中输入 0。例如,将端口 22 重定向到 22 -> 0 到 22。这是 ecs 中的动态端口映射。

相关内容