Вопрос или проблема
Я настраиваю кластер k8s на двух экземплярах EC2.
Устанавливаю cert-manager: kubectl apply -f https://github.com/cert-manager/cert-manager/releases/download/v1.15.3/cert-manager.yaml
kubectl get node
ИМЯ СТАТУС РОЛИ ВОЗРАСТ ВЕРСИЯ
ip-172-31-31-197 Готов <нет> 39м v1.31.1
ip-172-31-31-79 Готов контрольная-плоскость 41м v1.31.1
kubectl get pod –all-namespaces
ПОДМОЩНОСТЬ ИМЯ ГОТОВ СТАТУС ПЕРезапуски ВОЗРАСТ
cert-manager cert-manager-7fbbc65b49-mj848 1/1 Работает 0 30м
cert-manager cert-manager-cainjector-6664fc84f6-v7w7q 1/1 Работает 0 30м
cert-manager cert-manager-webhook-59598898fd-cfvhp 1/1 Работает 0 30м
kube-flannel kube-flannel-ds-5qtfz 1/1 Работает 0 37м
kube-flannel kube-flannel-ds-k8m7x 1/1 Работает 0 39м
kube-system coredns-7c65d6cfc9-5qq2l 1/1 Работает 0 39м
kube-system coredns-7c65d6cfc9-69t5n 1/1 Работает 0 39м
kube-system etcd-ip-172-31-31-79 1/1 Работает 0 39м
kube-system kube-apiserver-ip-172-31-31-79 1/1 Работает 0 39м
kube-system kube-controller-manager-ip-172-31-31-79 1/1 Работает 0 39м
kube-system kube-proxy-4svnx 1/1 Работает 9 (6м39с назад) 37м
kube-system kube-proxy-nbldj 0/1 CrashLoopBackOff 10 (98с назад) 39м
kube-system kube-scheduler-ip-172-31-31-79 1/1 Работает 0 39м
cmctl check api
Ошибка от сервера (InternalError): Произошла внутренняя ошибка: ошибка при вызове вебхука "webhook.cert-manager.io": не удалось вызвать вебхук: Пост "https://cert-manager-webhook.cert-manager.svc:443/validate?timeout=30s": истекло время ожидания контекста
kubectl apply -f test-resources.yaml
namespace/cert-manager-test создан
Ошибка от сервера (InternalError): ошибка при создании "test-resources.yaml": Произошла внутренняя ошибка: ошибка при вызове вебхука "webhook.cert-manager.io": не удалось вызвать вебхук: Пост "https://cert-manager-webhook.cert-manager.svc:443/validate?timeout=30s": net/http: запрос отменен при ожидании соединения (истекло время ожидания клиента во время ожидания заголовков)
Ошибка от сервера (InternalError): ошибка при создании "test-resources.yaml": Произошла внутренняя ошибка: ошибка при вызове вебхука "webhook.cert-manager.io": не удалось вызвать вебхук: Пост "https://cert-manager-webhook.cert-manager.svc:443/validate?timeout=30s": истекло время ожидания контекста
kubectl exec -it my-nginx — curl -k https://cert-manager-webhook.cert-manager.svc:443
404 страница не найдена
похоже, что “404 страница не найдена” означает, что мы можем достучаться до cert-manager-webhook.cert-manager.svc:443
Ответ или решение
Ответ на проблему с ошибкой вебхука cert-manager
Ваша проблема с ошибкой InternalError: Internal error occurred: failed calling webhook "webhook.cert-manager.io"
связана с тем, что Kubernetes не может установить соединение с вебхуком cert-manager. Это может происходить по нескольким причинам. Рассмотрим возможные решения этой проблемы.
1. Проверьте доступность сервиса вебхука
Сначала убедитесь, что сервис cert-manager-webhook
работает корректно и доступен. Вы можете использовать команду для проверки, функционирует ли он:
kubectl get svc -n cert-manager
Вы должны увидеть что-то подобное:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
cert-manager-webhook ClusterIP xx.xx.xx.xx <none> 443/TCP 30m
Если сервис не доступен, попробуйте перезапустить поды cert-manager для обновления конфигурации:
kubectl delete pod -n cert-manager --all
2. Проверка логов подов
Проверьте логи вебхука cert-manager, чтобы увидеть, есть ли какие-либо ошибки, влияющие на его работу:
kubectl logs -l app=cert-manager -n cert-manager
kubectl logs -l app=cert-manager-webhook -n cert-manager
Обратите внимание на любые ошибки, которые могут указывать на проблемы с конфигурацией или зависимостями.
3. Проверьте манифесты
Убедитесь, что манифесты cert-manager были правильно установлены. Иногда поврежденные или ошибочные манифесты могут вызывать такие проблемы. Чтобы исправить это, можно заново применить манифесты:
kubectl delete namespace cert-manager
kubectl apply -f https://github.com/cert-manager/cert-manager/releases/download/v1.15.3/cert-manager.yaml
4. Настройка сетевых политик и дополнений
Если вы используете сетевые политики или дополнения (например, Flannel), иногда они могут блокировать сетевой трафик. Проверьте, что нет ограничений на вэбхуки. Для этого временно отключите любые сетевые политики и посмотрите, устранит ли это проблему.
5. Проверка конфигурации кластера
Хотя вы правильно устанавливаете cert-manager, стоит проверить и другие компоненты кластера, чтобы убедиться, что они работают правильно. Убедитесь, что у вас корректно настроены RBAC (Role-Based Access Control) и другие политики безопасности, которые могут блокировать доступ к сервисам.
6. Убедитесь в корректности версии
Вы используете cert-manager версии 1.15.3. Убедитесь, что эта версия наиболее подходящая для вашего кластера Kubernetes (v1.31.1). Возможно, стоит попробовать использовать более новую версию cert-manager, если она доступна.
Заключение
Если ни одно из предложенных выше решений не устранит вашу проблему, возможно, стоит обратиться к документации cert-manager или форума поддержки, таких как GitHub или Slack-сообщество cert-manager, для получения дополнительной помощи и информации от других пользователей, столкнувшихся с аналогичными проблемами.