Kubeflow 1.6.1中istio-ingressgateway工作负载证书生成失败
解决Kubeflow 1.6.1中istio-ingressgateway工作负载证书生成失败问题
核心错误定位
从报错日志可明确问题根源:istio-ingressgateway无法连接istiod签发证书,直接原因是集群DNS服务访问失败,日志关键报错如下:
failed to warm certificate: failed to generate workload certificate: create certificate: rpc error: code = Unavailable desc = connection error: desc = "transport: Error while dialing dial tcp: lookup istiod.istio-system.svc on 10.43.0.10:53: read udp 10.42.153.193:33022->10.43.0.10:53: read: connection refused"
排查与解决步骤
1. 检查集群DNS服务状态
集群默认DNS(kube-dns/coredns)异常是最常见诱因:
# 查看DNS Pod状态 kubectl get pods -n kube-system -l k8s-app=kube-dns
- 若Pod处于
CrashLoopBackOff或NotReady,先重启DNS Pod:kubectl delete pods -n kube-system -l k8s-app=kube-dns - 检查DNS ConfigMap是否被篡改:
kubectl get configmap coredns -n kube-system -o yaml
2. 验证istiod服务可用性
确认istiod在istio-system命名空间正常运行:
# 查看istiod Pod与Service状态 kubectl get pods -n istio-system -l app=istiod kubectl get svc istiod -n istio-system
- 若istiod Pod未正常启动,重启部署:
kubectl rollout restart deployment istiod -n istio-system - 从ingressgateway Pod内直接测试istiod连通性:
kubectl exec -n istio-system <istio-ingressgateway-pod-name> -- curl -v http://istiod.istio-system.svc:15014/healthz
3. 检查网络策略与防火墙规则
确认istio-system命名空间的网络策略未阻止流量:
kubectl get networkpolicies -n istio-system
- 若存在限制策略,需添加规则允许istio-ingressgateway访问istiod的
15010(gRPC证书签发端口)和15014(健康检查端口)。 - 同时检查节点防火墙是否开放DNS(53/UDP)及istiod端口的流量。
4. 确认ingressgateway DNS配置
检查ingressgateway Pod的DNS策略是否为默认的ClusterFirst:
kubectl describe pod -n istio-system <istio-ingressgateway-pod-name> | grep DNS
若DNS策略被修改,需恢复为ClusterFirst。
5. 强制刷新证书配置
若以上步骤均正常,手动触发证书重建:
kubectl delete secret istio-ingressgateway-certs -n istio-system kubectl rollout restart deployment istio-ingressgateway -n istio-system
内容的提问来源于stack exchange,提问作者Satish Kumar Kuchipudi
相关产品推荐
相关产品推荐

