У меня есть одна услуга. У меня есть кластер ECS с двумя экземплярами t3.small.
Я не могу запустить задачу ECS. У меня есть задача ECS с двумя контейнерами (NGINX и PHP-FPM). NGINX предоставляет порт 80, а PHP-FPM предоставляет порты 9000, 9001, 9002.
Ошибка, которую я вижу:
dev-cluster/ecs-agents i-12345678901234567 2019-09-15T13:20:48Z [ERROR] Task engine [arn:aws:ecs:us-east-1:123456789012:task/ea1d6e4b-ff9f-4e0a-b77a-1698721faa5c]: unable to configure pause container namespace: cni setup: invoke bridge plugin failed: bridge ipam ADD: failed to execute plugin: ecs-ipam: getIPV4AddressFromDB commands: failed to get available ip from the db: getAvailableIP ipstore: failed to find available ip addresses in the subnet
Агент ECS: 1.29.
Вы знаете, как я могу понять, что не так?
Вот фрагмент журнала: https://pastebin.com/my620Kip
Определение задачи: https://pastebin.com/C5khX9Zy
ОБНОВЛЕНИЕ: мои наблюдения
Отредактировано, потому что мой пост ниже был удален...
Я пересоздал кластер, после этого проблема исчезла.
Затем я удалил образ приложения из ECR и увидел ошибку в веб-консоли AWS:
CannotPullContainerError: Error response from daemon: manifest for 123456789123.dkr.ecr.us-east-1.amazonaws.com/application123:development-716b4e55dd3235f6548d645af9e463e744d3785f not found
Затем я подождал несколько часов, пока первоначальная проблема не повторилась.
Затем я перезапустил экземпляр вручную с помощью systemctl reboot
, и проблема снова исчезла только для перезапущенного экземпляра.
Эта проблема возникает, когда в кластере есть сотни задач awsvpc, которые не могут быть запущены.
Я думаю, что это ошибка в агенте ECS. И когда мы пытаемся создать слишком много контейнеров с требованиями ENI, он пытается использовать все свободные IP-адреса в подсети. (255) Я думаю, что после перезапуска/пересоздания экземпляра EC2 некоторый кеш очищается и проблема решена.
Вот подобное решение, которое я нашел сегодня: https://github.com/aws/amazon-ecs-cni-plugins/issues/93#issuecomment-502099642
Что вы думаете об этом?
Я открыт для предложений.