В кластере остался вебхук удалённого приложения
«Failed calling webhook, failing open» и «failed calling webhook ... service ... not found» в журнале Kubernetes: API-сервер вызывает вебхук приложения, которого уже нет. Иногда это только шум, иногда блокирует создание подов.
Что это значит
Операторы и политики (cert-manager, Kyverno, инжекторы сайдкаров) регистрируют в кластере вебхуки: API-сервер перед созданием или изменением объекта спрашивает у них разрешения или поправки. Если приложение удалили, а регистрацию вебхука оставили, API-сервер при каждом подходящем запросе пытается обратиться к несуществующему сервису.
Дальше зависит от настройки failurePolicy. При Ignore API-сервер пишет Failed calling webhook, failing open и пропускает запрос: это шум в журнале. При Fail запрос отклоняется, и, например, поды перестают создаваться с ошибкой Internal error occurred: failed calling webhook.
Как проверить
kubectl get mutatingwebhookconfigurations,validatingwebhookconfigurations
kubectl get mutatingwebhookconfiguration <имя> -o yaml | grep -A5 clientConfig
В clientConfig.service указан сервис и пространство имён. Если такого сервиса нет (kubectl get svc -n <ns> <service>), регистрация осиротела.
Что сделать
- Если приложение удалено намеренно, удалить его регистрацию вебхука:
kubectl delete mutatingwebhookconfiguration <имя>. - Если приложение нужно, восстановить его сервис и поды.
- Удалять операторы штатным способом (тем же helm, которым ставили): тогда вебхуки удаляются вместе с ними.
Ошибка повторяется?
Запустите Диагностика: за полминуты он покажет состояние базы, брокера, поиска и сервера. С отчётом разберём причину за 30 минут бесплатного созвона.
Написать