За сервисом Kubernetes нет ни одного готового пода
Предупреждение ingress-nginx «Service "namespace/name" does not have any active Endpoint»: запросы к сайту получают 503, потому что за сервисом нет готовых подов. Поды не готовы, метки не совпадают или приложение остановлено.
Что это значит
Контроллер ingress-nginx пересобирает конфигурацию и не находит у сервиса ни одного адреса, куда отправлять запросы. Пользователь получает ответ 503. Адреса у сервиса появляются только у подов, которые совпадают с селектором сервиса и прошли проверку готовности (readiness).
Причин три: поды есть, но не готовы; поды есть, но метки не совпадают с селектором; подов нет, потому что приложение остановлено или масштабировано в ноль. Последний случай на тестовых стендах обычен и тревоги не заслуживает.
Как проверить
kubectl get endpointslices -n <namespace> -l kubernetes.io/service-name=<service>
kubectl get pods -n <namespace> -l <селектор сервиса> -o wide
kubectl describe svc <service> -n <namespace> | grep -i selector
Если подов нет, смотреть, кто остановил приложение. Если поды не готовы, смотреть события пода и проверку готовности: kubectl describe pod, ошибки вида Readiness probe failed.
Что сделать
- Поды не готовы: разбирать, почему не проходит проверка готовности.
- Метки не совпадают: привести селектор сервиса и метки шаблона пода к одному виду.
- Приложение остановлено намеренно: убрать правило ingress или исключить такие пространства имён из тревог.
Ошибка повторяется?
Запустите Диагностика: за полминуты он покажет состояние базы, брокера, поиска и сервера. С отчётом разберём причину за 30 минут бесплатного созвона.
Написать