证书管理器在带有Webhook的kubernetes上失败

证书管理器在带有Webhook的kubernetes上失败,kubernetes,kubernetes-helm,cert-manager,Kubernetes,Kubernetes Helm,Cert Manager,我遵循Kubernetes针对Helm的安装说明: K8 v1.15上的Cert manager v0.81,Ubuntu18.04内置。 当我开始测试安装时,会出现以下错误: error when creating "test-resources.yaml": Internal error occurred: failed calling webhook "issuers.admission.certmanager.k8s.io": the server is currently unable

我遵循Kubernetes针对Helm的安装说明: K8 v1.15上的Cert manager v0.81,Ubuntu18.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配置有关。

我还尝试了
cert manager v0.8.0
Ubuntu18.04
和k8s
v1.14.1
上的一个非常类似的设置,当我使用
kubectl delete
撕毁
cert manager
并重新安装它时,我开始出现同样的错误,在群集上遇到一些网络问题后

我无意中发现这是有效的。在主节点上,只需重新启动
apiserver
容器:

$sudo docker ps-a | grep apiserver
af99f816c7ec gcr.io/google_containers/kube-apiserver@sha256:53B987E5A2932BDAF8849080801B488E3B56AF5B6A14891895B08703129477D85“/bin/sh-c'/usr/loc”15个月前上升19小时k8s_kube-apiserver_kube-apiserver-ip-xxxxx c_0
40f3a18050c3 gcr.io/google_containers/pause-amd64:3.0“/pause”15个月前上升15个月k8s_POD_kube-apiserver-ip-xxxc_0
$sudo docker重新启动af99f816c7ec
af99f816c7ec
$ 
然后再次尝试应用
测试资源。yaml

$kubectl apply-f test-resources.yaml
命名空间/证书管理器测试未更改
issuer.certmanager.k8s.io/test-selfsigned已创建
certificate.certmanager.k8s.io/selfsigned-cert已创建

如果这不起作用,说明主节点可能需要防火墙规则才能访问
certmanager webhook
pod。具体操作步骤取决于您所使用的云平台。

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

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

范例 1.设置K8:

kubeadm init --pod-network-cidr=10.244.0.0/16
  • 配置Calico.yaml:

    - name: CALICO_IPV4POOL_CIDR
      value: "10.244.0.0/16"
    

  • 谢谢你的回复,我终于有机会尝试了。不幸的是,重新启动API服务器没有帮助。另外,我在自己的服务器上,不应该有任何防火墙问题(目前在节点之间被禁用),我只是通过禁用helm图表上的Webhook来实现它,但我不知道这会产生什么后果。你能发布你的解决方案作为答案并接受它吗?如果有人在搜索类似的问题,它将使您的解决方案更加明显。这绝对是答案。我意识到这是一个问题,它指向了我配置的
    cni
    的一个更根本的问题。和你一样,我几个月前就解决了这个问题,所以我在这里确认这就是解决方案。