У меня есть кластер ECS с ELB. Вчера вечером я увидел, что задача застряла в цикле перезапуска. В журнале событий службы было сказано:
«Сервис xxxxx не смог разместить задачу, потому что ни один экземпляр контейнера не отвечал всем его требованиям. Ближайший соответствующий экземпляр контейнера xxxxxxxxxxxxxx уже использует порт, необходимый для вашей задачи».
Однако я проверил, что все такие задачи мертвы, и в то время ничто не должно использовать порт. Обновление службы не помогает, но помогает создание нового определения задачи, а затем обновление. Завершение экземпляра и разрешение ELB перезапустить его помогает.
Есть идеи, почему служба не может защитить порт для задачи?
Я думаю, ваша проблема заключается в определении задачи «Сетевой режим» - это хост или что-то, что работает одинаково, это приводит к тому, что порт хоста уже используется, когда ECS запускает развертывание.
При развертывании ECS используется ваш минимальный процент работоспособности, поэтому, если у вас более 0%, необходимо запустить новую задачу, прежде чем останавливать старую. В этом случае он не может привязать порт хоста к новой задаче, потому что он используется старой.
Попробуйте использовать другой сетевой режим, который не блокирует порт хоста, например "awsvpc"
Надеюсь, поможет!