Charmed Kubeflow部署失败:domainmapping-webhook CrashLoopBackOff
排查Charmed Kubeflow中Knative domainmapping-webhook崩溃问题
核心问题定位
从日志能明确两个关键故障点:
failed to fetch secret: secret "domainmapping-webhook-certs" not foundtls: no certificates configured
本质是webhook依赖的TLS证书缺失,导致无法完成TLS握手,最终引发组件崩溃。
分步排查与修复
1. 确认证书secret是否存在
先定位domainmapping-webhook所在命名空间(默认是knative-serving),执行命令检查目标secret:
kubectl get secrets -n knative-serving domainmapping-webhook-certs
若返回NotFound,说明证书确实未生成。
2. 检查cert-manager运行状态
Knative默认依赖cert-manager自动生成webhook证书,先确认该组件是否正常:
kubectl get pods -n cert-manager
如果cert-manager的pod未就绪或不存在:
- 先确保cert-manager已正确安装到集群
- 查看cert-manager日志,排查证书签发失败的具体原因
3. 触发Knative资源重新生成
若cert-manager正常但证书未生成,可删除现有webhook部署并重启控制器,触发自动重建流程:
# 删除domainmapping-webhook部署 kubectl delete deployment domainmapping-webhook -n knative-serving # 重启Knative Serving控制器 kubectl rollout restart deployment knative-serving-controller -n knative-serving
等待数分钟后,再次检查secret是否生成。
4. 检查Charmed Kubeflow的Knative配置
Charmed Kubeflow通过Juju部署Knative,可查看Knative charm的配置项:
juju config knative-serving
确认是否存在禁用自动证书生成的配置,若有则调整后重新部署:
juju refresh knative-serving --config auto-cert-generation=true
5. 手动创建证书(应急方案)
如果以上方法均无效,可手动生成自签名证书并创建secret:
# 生成自签名TLS证书 openssl req -x509 -newkey rsa:4096 -keyout tls.key -out tls.crt -days 365 -nodes -subj "/CN=domainmapping-webhook.knative-serving.svc" # 创建对应secret kubectl create secret tls domainmapping-webhook-certs --cert=tls.crt --key=tls.key -n knative-serving
完成后重启webhook部署:
kubectl rollout restart deployment domainmapping-webhook -n knative-serving
内容的提问来源于stack exchange,提问作者Joseph Chun-Chung Cheung
相关产品推荐
相关产品推荐

