Kubernetes. Приложение перестало работать — как понять, что случилось?
Причин, по которым приложение не работает в кластере Kubernetes, много.
Вот самые распространенные:
🔵под отсутствует;
🔵под не запускается (статус Pending);
🔵под запускается, но падает с ошибкой (статус CrashLoopBackOff);
🔵под работает (статус Runnung), но недоступен по сети.
Ниже кратко рассмотрим алгоритмы, позволяющие понять, что же все-таки случилось.
🔵 Для начала нужно убедиться, что манифест выполнился и под действительно зарегистрирован в кластере. Если подов и деплоймента не находится, проверьте манифесты.
🔵Если поды находятся в статусе Pending, значит Scheduler не может найти подходящую ноду для запуска пода. На это тоже может быть много причин: недостаточно ресурсов в кластере, несовпадение taints/tolerances, невозможность скачать образ и многое другое. Найти причину помогут события, связанные с подом, однако некоторые проблемы (например, отказ Scheduler) не попадут в этот список. Также проверьте статус нод в кластере и селекторы, указанные в манифесте.
🔵Если под был назначен ноде, но при запуске произошла ошибка, под будет иметь статус CrashLoopBackOff и кластер будет предпринимать попытки запустить его повторно. Обычно это происходит в случае ошибки в самом приложении внутри контейнера, а найти причину обычно помогают логи (если приложение их пишет, конечно).
🔵Следующая ситуация — поды работают (статус Running), однако не доступны по сети из других подов. Для начала нужно проверить, создан ли Service с соответствующим селектором. Также необходимо проверить, что они находятся в одном namespace.
Post #88
2K
- 👍 5
- 🤓 1