cert-manager-webhook: FailedDiscoveryCheck, пространство имен зависает при завершении - PullRequest
0 голосов
/ 21 января 2020

Я удалил пространство имен, в котором есть служба, предоставляемая с помощью nginx -ingress, с сертификатом Let's Encrypt, контролируемым cert-manager. Удаление пространства имен зависает со статусом Завершение.

Вероятно, проблема с внутренним API, как объяснено здесь . Когда я запускаю:

kubectl api-resources

, возвращается, что веб-крючок API certmanager недоступен:

ошибка: невозможно получить полный список серверных API: webhook.certmanager. k8s.io/v1beta1: сервер в настоящее время не может обработать запрос

Когда я запускаю kubectl get apiservices v1beta1.webhook.certmanager.k8s.io -o yaml, для проверки условий его состояния:

...
service:
    name: cert-manager-webhook
    namespace: nginx-ingress
    port: 443
version: v1beta1
versionPriority: 15
status:
conditions:
- lastTransitionTime: "2020-01-21T15:02:23Z"
    message: 'failing or missing response from https://10.24.32.6:10250/apis/webhook.certmanager.k8s.io/v1beta1:
    bad status from https://10.24.32.6:10250/apis/webhook.certmanager.k8s.io/v1beta1:
    404'
    reason: FailedDiscoveryCheck
    status: "False"
    type: Available

Все nginx капсулы -дресс и сертификат-менеджер в добром здравии. В то время, когда я развернул и удалил это пространство имен, я сделал обновление для certmanager, что может быть объяснением проблемы. Как решить эту проблему?

версии:

1 Ответ

1 голос
/ 21 января 2020

Простое решение для решения проблемы представлено здесь . Но это не описывает, как такая проблема возникает или может быть предотвращена.

Создайте временный JSON файл, описывающий завершающее пространство имен:

kubectl get namespace <terminating-namespace> -o json >tmp.json

Отредактируйте файл tmp.json с помощью удалив значение kubernetes из поля finalizers и сохраните файл.

Установите временный IP-адрес и порт прокси-сервера:

kubectl proxy

Из нового окна терминала выполните вызов API с вашим временным IP прокси и портом:

 curl -k -H "Content-Type: application/json" -X PUT --data-binary @tmp.json http://127.0.0.1:8001/api/v1/namespaces/<terminating-namespace>/finalize
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...