У меня есть кластер ECS с поставщиком емкости и сервисом. Поставщик емкости запускает группу автомасштабирования, и когда запускается один экземпляр этой группы, в конце я вижу, что доступны экземпляры ECS. На самом деле, я могу подключиться к ним через SSH.
Служба также работает хорошо, поскольку она создает новую задачу, которая основана на образе docker в репозитории ERS. Однако задача никогда не переходит из "PROVISIONING", и если я открываю задачу, я вижу, что контейнер задачи пуст и загружается. Если я вхожу в свой экземпляр, я вижу тот же экземпляр docker, если я делаю docker ps
или docker 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
Что у меня было после выполнения docker ps
wsa на самом деле ecs-agent, который Amazon создает для управления контейнером. Это была застрявшая часть. Мой docker даже не был запущен на самом деле.
Чтобы решить эту проблему, при создании задачи в параметрах контейнера, когда вы выбираете порты контейнера для перенаправления на хост, введите в качестве значений хоста 0. Например, перенаправьте порт 22 на 22 -> 0 на 22. Это динамическое сопоставление портов в ecs.