Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Kubernetes 证书管理器webhook:FailedDiscoveryCheck,命名空间挂起终止_Kubernetes_Nginx Ingress_Cert Manager - Fatal编程技术网

Kubernetes 证书管理器webhook:FailedDiscoveryCheck,命名空间挂起终止

Kubernetes 证书管理器webhook:FailedDiscoveryCheck,命名空间挂起终止,kubernetes,nginx-ingress,cert-manager,Kubernetes,Nginx Ingress,Cert Manager,我删除了一个名称空间,该名称空间具有一个由证书管理器控制的Let's Encrypt证书通过nginx入口公开的服务。命名空间的删除挂起,状态为终止 如前所述,这可能是内部API的问题。当我跑步时: kubectl api-resources 它返回无法访问certmanager webhook API: 错误:无法检索服务器API的完整列表:webhook.certmanager.k8s.io/v1beta1:服务器当前无法处理该请求 当我运行kubectl get apiservices

我删除了一个名称空间,该名称空间具有一个由证书管理器控制的Let's Encrypt证书通过nginx入口公开的服务。命名空间的删除挂起,状态为终止

如前所述,这可能是内部API的问题。当我跑步时:

kubectl api-resources
它返回无法访问certmanager webhook API:

错误:无法检索服务器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入口和cert manager吊舱都处于良好状态。在部署和删除此名称空间时,我对certmanager进行了更新,这可能是对问题的一种解释。如何解决这个问题

版本:

  • 库伯内特斯:v1.15.4-gke.22
  • v0.12.0
  • :1.29.3

    • 提出了一种简单的解决方案。但这并没有说明这类问题是如何产生或如何预防的

      创建描述终止命名空间的临时JSON文件:

      kubectl get namespace <terminating-namespace> -o json >tmp.json
      
      在新的终端窗口中,使用临时代理IP和端口进行API调用:

      kubectl proxy
      
       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
      
      curl-k-H“内容类型:application/json”-X PUT--data binary@tmp.jsonhttp://127.0.0.1:8001/api/v1/namespaces//finalize