Моя служба деплоится, но никогда не становится здоровой
Сборка проходит успешно, реплики запускаются, но деплой остаётся в ожидании, помечается как нездоровый или никогда не начинает принимать трафик.
Что это значит
Проверка здоровья платформы — которая проверяет доступность порта вашего приложения — никогда не проходит, поэтому трафик никогда не переключается на новые реплики.
Почему это может происходить
- Ваше приложение не слушает ожидаемый порт. Lizard внедряет переменную окружения
PORT(порт контейнера по умолчанию3000) и проверяет, что ваше приложение доступно там. Если ваше приложение жестко задано на другой порт или никогда не привязывает порт, проверка здоровья бесконечно проваливается. Типичный случай — Python-приложение:gunicornиuvicornпривязывают127.0.0.1, если вы не скажете им иначе, а проверка приходит извне процесса. В хостинге Python-приложений указана строка--bind 0.0.0.0:$PORT, которую требует каждый фреймворк. - Служба случайно перешла в рабочий режим. Установка
containerPort=0переводит службу в рабочий режим, который полностью пропускает проверку здоровья и регистрацию в балансировщике нагрузки. Служба, которая должна обслуживать HTTP, но получилаcontainerPort=0, будет деплоиться «успешно» и просто никогда ничего не обслуживать — рабочий режим скрывает базовую проблему запуска вместо того, чтобы выявить её.
Возможные решения
Проверьте текущий порт
lizard port --service apiЕсли это выводит worker mode, у службы установлен containerPort=0. Верните его на реальный порт, если эта служба предназначена для обслуживания HTTP:
lizard port 3000 --service api
lizard redeploy --service apiУбедитесь, что ваше приложение слушает там, где ожидает Lizard
Прочитайте логи среды выполнения на предмет ошибок запуска и сверьте порт, который фактически привязало приложение, с тем, что внедрил Lizard:
lizard logs --service api
lizard ssh --service api -- env | grep PORTСм. также
- Фоновые рабочие процессы — когда
containerPort=0уместен, а когда нет. - Деплойменты → жизненный цикл — где проверка здоровья находится в деплойменте.