Kubernetes 证书管理器webhook:FailedDiscoveryCheck,命名空间挂起终止
我删除了一个名称空间,该名称空间具有一个由证书管理器控制的Let's Encrypt证书通过nginx入口公开的服务。命名空间的删除挂起,状态为终止 如前所述,这可能是内部API的问题。当我跑步时: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
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