AWS Сбой CodePipeline при подключении EFS к мультиконтейнеру Docker Elasti c Beanstalk - PullRequest
0 голосов
/ 27 апреля 2020

Я использую AWS CodePipeline для развертывания многоконтейнерного приложения docker на Elasti c Beanstalk. Приложение требует подключения файловой системы из EFS как смонтированного тома. Чтобы подключиться и получить доступ к тому, кажется, мне нужно перезагрузить docker. Это объясняется в этом вопросе: Использование AWS EFS с Docker. Хотя я могу успешно подключить файловую систему на основе этих инструкций, мое развертывание иногда «завершается сбоем» со следующей ошибкой:

Action execution failed Deployment completed, but with errors: ECS task stopped due to: Task failed to start.  Failed to start ECS task: arn:aws… is STOPPED.

В этих случаях приложение успешно развертывается и полностью функционирует, но я получаю сообщение об ошибке, потому что docker еще не перезапущен во время этой проверки.

Когда это происходит, я вижу следующее в моих журналах Beanstalk:

-------------------------------------
/var/log/ecs/ecs-init.log
-------------------------------------
2020-04-27T15:06:41Z [INFO] pre-start
2020-04-27T15:06:44Z [INFO] start
2020-04-27T15:06:44Z [INFO] No existing agent container to remove.
2020-04-27T15:06:44Z [INFO] Starting Amazon Elastic Container Service Agent
2020-04-27T15:07:20Z [INFO] Agent exited with code 0
2020-04-27T15:07:20Z [INFO] Error connecting to docker, backing off for 1.14777941s, error: Get http://unix.sock/v1.25/version: dial unix /var/run/docker.sock: connect: no such file or directory
2020-04-27T15:07:21Z [INFO] Error connecting to docker, backing off for 2.282153551s, error: Get http://unix.sock/v1.25/version: dial unix /var/run/docker.sock: connect: no such file or directory
2020-04-27T15:07:23Z [INFO] post-stop
2020-04-27T15:07:23Z [INFO] Cleaning up the credentials endpoint setup for Amazon Elastic Container Service Agent
2020-04-27T15:07:23Z [INFO] pre-start
2020-04-27T15:07:23Z [INFO] start
2020-04-27T15:07:23Z [INFO] Container name: /ecs-agent
2020-04-27T15:07:23Z [INFO] Removing existing agent container ID:
2020-04-27T15:07:23Z [INFO] Starting Amazon Elastic Container Service Agent

Есть ли способ предотвратить эти ложные сбои

1 Ответ

0 голосов
/ 28 апреля 2020

Кажется, проблема в том, что docker демон не работает во время запуска ecs-agent. Elasticbeanstalk имеет свой собственный способ управления docker запуском демона и ecs-агента, если он не вмешивается вручную / автоматически.

Можете ли вы подтвердить, перезапускаете ли вы docker / ecs-agent через какие-либо расширения EB, так как он может помешать нормальному процессу EB bootstrap?

Если вы используете расширения EB для запуска / перезапуска docker, пожалуйста, сделайте это в фазе «после развертывания», используя «ловушки», которые не повлияют на вашу bootstrap процесс. Вот общие хуки, которые вы можете использовать [1]. Есть также несколько примеров, приведенных по этой ссылке [2].

Ссылки:

[1] https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/custom-platform-hooks.html

[2] https://github.com/equivalent/scrapbook2/blob/master/archive/blogs/2016-08-22-aws-elasticbeanstalk-hooks.md

...