Cert-manager терпит неудачу на кубернетах с веб-перехватчиками

Я следую инструкциям по установке Kubernetes для Helm: https://docs.cert-manager.io/en/latest/getting-started/install/kubernetes.html С Cert-manager v0.81 на K8 v1.15, Ubuntu 18.04 локально. Когда я приступаю к тестированию установки, я получаю следующие ошибки:

error when creating "test-resources.yaml": Internal error occurred: failed calling webhook "issuers.admission.certmanager.k8s.io": the server is currently unable to handle the request
Error from server (InternalError): error when creating "test-resources.yaml": Internal error occurred: failed calling webhook "certificates.admission.certmanager.k8s.io": the server is currently unable to handle the request

Если я применяю test-resources.yaml перед установкой с помощью Helm, я не получаю сообщений об ошибках, но он по-прежнему не работает. Эти ошибки новы для меня, так как Cert-manager работал у меня на моей предыдущей установке около месяца назад, следуя тем же инструкциям по установке. Я пробовал с Cert-Manager 0.72 (CRD 0.7), и я думаю, что это была последняя версия, которую мне удалось установить, но она тоже не работает.

Что означают эти ошибки?

Обновление. Оказалось, что это внутренняя проблема с CoreDNS в моем кластере. Как-то неправильно настраивается. Возможно, связано с неправильной конфигурацией POD_CIDR.


person Isaack Rasmussen    schedule 25.06.2019    source источник
comment
не могли бы вы опубликовать свое решение в качестве ответа и принять его? Это сделает ваше решение более заметным, если кто-то будет искать похожие проблемы.   -  person PjoterS    schedule 05.07.2019


Ответы (2)


Я также попробовал cert-manager v0.8.0 очень похожую настройку на Ubuntu 18.04 и k8s v1.14.1, и я начал получать ту же ошибку, когда я отключил cert-manager с помощью kubectl delete и переустановил его после некоторых сетевых проблем в кластере.

Я наткнулся на решение, которое сработало. На главном узле просто перезапустите контейнер apiserver:

$ sudo docker ps -a | grep apiserver
af99f816c7ec        gcr.io/google_containers/kube-apiserver@sha256:53b987e5a2932bdaff88497081b488e3b56af5b6a14891895b08703129477d85               "/bin/sh -c '/usr/loc"   15 months ago       Up 19 hours                                     k8s_kube-apiserver_kube-apiserver-ip-xxxxxc_0
40f3a18050c3        gcr.io/google_containers/pause-amd64:3.0                                                                                      "/pause"                 15 months ago       Up 15 months                                    k8s_POD_kube-apiserver-ip-xxxc_0
$ sudo docker restart af99f816c7ec
af99f816c7ec
$ 

Затем попробуйте снова применить test-resources.yaml:

$ kubectl apply -f test-resources.yaml
namespace/cert-manager-test unchanged
issuer.certmanager.k8s.io/test-selfsigned created
certificate.certmanager.k8s.io/selfsigned-cert created

Если это не сработает, в этом выпуске github упоминается, что главный узел для доступа к модулю cert-manager-webhook могут потребоваться правила брандмауэра. Конкретные шаги для этого будут зависеть от того, на какой облачной платформе вы находитесь.

person L. J.    schedule 28.06.2019
comment
Спасибо за ответ, наконец-то появилась возможность попробовать. К сожалению, перезапуск сервера API не помог. Кроме того, я нахожусь на своих собственных серверах, и проблем с брандмауэром быть не должно (в настоящее время он отключен между узлами). Я заставил его работать только путем отключения веб-перехватчиков на диаграмме управления, но я не знаю, какие последствия это имеет. - person Isaack Rasmussen; 04.07.2019

Если у вас возникла эта проблема, проверьте журналы CoreDNS (или KubeDNS), и вы можете увидеть множество ошибок, связанных с обращением к службам. К сожалению, ошибок у меня больше нет. Но вот как я понял, что моя сетевая настройка неверна.

Я использую Calico (будет применяться и для других сетей), и его сеть не была настроена так же, как сеть POD_CIDR, с которой я инициализировал свой Kubernetes.

Пример 1. Настройте K8:

kubeadm init --pod-network-cidr=10.244.0.0/16
  1. Настройте Calico.yaml:

    - name: CALICO_IPV4POOL_CIDR
      value: "10.244.0.0/16"
    
person Isaack Rasmussen    schedule 07.07.2019
comment
Это абсолютно ответ. Я понял, что это проблема, указывающая на более фундаментальную проблему с моей конфигурацией cni. И, как и вы, я решил это несколько месяцев назад, поэтому я здесь, чтобы подтвердить, что это решение. - person L. J.; 29.12.2019