4

我正在遵循 Helm 的 Kubernetes 安装说明:https : //docs.cert-manager.io/en/latest/getting-started/install/kubernetes.html 在 K8 v1.15、Ubuntu 上使用 Cert-manager v0.81 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

如果我在使用 Helm 安装之前应用了 test-resources.yaml,我不会收到错误消息,但它仍然无法正常工作。这些错误对我来说是新的,因为大约一个月前,Cert-manager 曾经在我以前的安装中为我工作,遵循相同的安装说明。我已经尝试过 Cert-Manager 0.72(CRD 0.7) 并且我认为这是我设法安装的最后一个版本,但它也不起作用。

这些错误是什么意思?

更新:原来是我集群上的内部 CoreDNS 问题。不知何故配置不正确。可能与错误的 POD_CIDR 配置有关。

4

2 回答 2

3

如果您遇到此问题,请查看 CoreDNS(或 KubeDNS)的日志,您可能会看到很多与联系服务相关的错误。不幸的是,我不再有错误。但这就是我发现我的网络设置无效的方式。

我正在使用 Calico(也将适用于其他网络),并且它的网络未设置为与我初始化 Kubernetes 时使用的 POD_CIDR 网络相同。

示例 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"
    
于 2019-07-07T11:57:01.387 回答
2

我也在k8s上尝试cert-manager v0.8.0了一个非常相似的设置,当我在集群上遇到一些网络问题后,当我使用它并重新安装它时,我开始遇到同样的错误。Ubuntu 18.04v1.14.1cert-managerkubectl 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-webhookpod。执行此操作的确切步骤取决于您使用的云平台。

于 2019-06-28T17:58:59.407 回答