You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

K8s v1.22中cert-manager-webhook无可用端点问题求助

cert-manager启动检查Job报错:webhook服务无可用端点(K8s v1.22)

问题场景

  • 运行环境:Kubernetes v1.22
  • 使用组件:最新版cert-manager(相同Chart在K8s v1.21可正常运行)
  • 触发位置:由job.batch/cert-manager-startupapicheck启动的Pod(如cert-manager-startupapicheck-l4ccx)
  • 核心报错:
Not ready: Internal error occurred: failed calling webhook "webhook.cert-manager.io": failed to call webhook: Post "https://cert-manager-webhook.cert-manager.svc:443/mutate?timeout=10s": no endpoints available for service "cert-manager-webhook"
Not ready: Internal error occurred: failed calling webhook "webhook.cert-manager.io": failed to call webhook: Post "https://cert-manager-webhook.cert-manager.svc:443/mutate?timeout=10s": no endpoints available for service "cert-manager-webhook"

排查步骤

  • 检查webhook Pod状态:
    kubectl get pods -n cert-manager | grep webhook
    
    确认Pod是否处于Running状态,有无CrashLoopBackOff或重启记录。
  • 验证服务与端点关联:
    1. 查看服务的标签选择器:
      kubectl describe svc cert-manager-webhook -n cert-manager | grep Selector
      
    2. 检查对应端点是否存在:
      kubectl get endpoints cert-manager-webhook -n cert-manager
      
      若端点列表为空,说明服务选择器与Pod标签不匹配,或Pod未通过就绪探针。
  • 检查K8s 1.22 API适配情况:
    确认cert-manager使用的Webhook配置API版本为admissionregistration.k8s.io/v1(K8s 1.22已废弃v1beta1版本),可通过以下命令检查:
    kubectl get mutatingwebhookconfigurations webhook.cert-manager.io -o yaml | grep apiVersion
    
  • 查看webhook Pod就绪探针与日志:
    1. 检查就绪探针状态:
      kubectl describe pod <webhook-pod-name> -n cert-manager | grep -A5 -B5 Readiness
      
    2. 查看Pod启动日志:
      kubectl logs <webhook-pod-name> -n cert-manager
      
      重点排查证书挂载、服务启动失败等异常信息。
  • 检查网络策略限制:
    若集群启用了网络策略,确认是否允许cert-manager命名空间内的Pod互相通信,可临时删除或禁用相关网络策略测试。

修复方案

  • 标签不匹配修复:确保cert-manager-webhook服务的selector与webhook Pod的metadata.labels完全一致,例如服务选择器为app=cert-manager,component=webhook时,Pod需添加对应标签。
  • API版本适配:更新cert-manager Chart的values.yaml,设置webhook.apiVersion: admissionregistration.k8s.io/v1,重新部署。
  • 就绪探针问题修复:根据日志排查具体故障(如CA证书生成失败需检查cert-manager的CA issuer配置),确保webhook服务正常启动并通过就绪探针。
  • 网络策略调整:添加允许cert-manager命名空间内Pod访问webhook服务的网络策略,示例:
    apiVersion: networking.k8s.io/v1
    kind: NetworkPolicy
    metadata:
      name: allow-cert-manager-internal
      namespace: cert-manager
    spec:
      podSelector: {}
      ingress:
      - from:
        - podSelector: {}
        ports:
        - port: 443
          protocol: TCP
    
  • 临时绕过启动检查:紧急情况下可设置startupapicheck.enabled=false跳过检查,但仅作为临时方案,需尽快修复核心问题。

内容的提问来源于stack exchange,提问作者S1c0r4x

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 09:45:35