cert-manager-webhook:FailedDiscoveryCheck,名称空间在终止时挂起

时间:2020-01-21 16:25:10

标签: kubernetes nginx-ingress cert-manager

我删除了一个名称空间,该名称空间的服务由nginx-ingress公开,并带有由cert-manager控制的Let's Encrypt证书。命名空间的删除正在挂起,状态为“正在终止”。

内部API可能有问题,如here所述。当我跑步时:

kubectl api-resources

它返回证书管理器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-inress和cert-manager豆荚都处于良好状态。在部署和删除此命名空间时,我对certmanager进行了更新,这可能是对该问题的解释。这个问题怎么解决?

版本:

1 个答案:

答案 0 :(得分:1)

提出了一个解决该问题的简单解决方案here。但这并没有描述如何出现或如何防止这种问题。

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

{
  "queries": [
    {
      "type": "commit",
      "items": [ COMMIT_ID ]
    }
  ]
}

通过从kubectl get namespace <terminating-namespace> -o json >tmp.json 字段中删除tmp.json值来编辑文件kubernetes,然后保存文件。

设置临时代理IP和端口:

finalizers

在新的终端窗口中,使用您的临时代理IP和端口进行API调用:

kubectl proxy