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

Kubernetes集群Istio边车注入场景下Deployment部署失败求助

问题根因定位

核心根因为CoreDNS服务异常,无法与Kubernetes API Server通信同步集群服务资源,导致集群内部DNS解析失效,进而触发Istio全链路异常,和你提供的所有现象完全匹配:

  1. CoreDNS无法拉取Service、Endpoint资源,所有集群内部域名(如istiod.istio-system.svc)解析失败
  2. Istio的验证/注入webhook依赖istiod域名解析,kube-apiserver、kube-controller调用webhook超时,导致开启Istio注入的命名空间无法创建Pod
  3. Istio网关组件无法解析istiod域名,无法拉取配置和证书,因此READY状态显示为0/1
  4. 未开启Istio边车注入的命名空间不需要调用Istio webhook,因此部署完全正常
排查步骤
  • 确认CoreDNS运行状态:执行kubectl get pods -n kube-system -l k8s-app=kube-dns,查看CoreDNS Pod是否处于Running状态,重启次数是否存在异常
  • 测试CoreDNS服务可用性:在集群任意节点执行nslookup istiod.istio-system.svc 169.254.25.10,确认是否能解析到istiod对应的ClusterIP
  • 排查CoreDNS到kube-apiserver的网络连通性:进入CoreDNS Pod容器,执行curl -k https://10.233.0.1:443/healthz,确认是否能正常访问apiserver
  • 确认kube-apiserver状态:如果是二进制部署执行systemctl status kube-apiserver,如果是静态Pod部署执行kubectl get pods -n kube-system -l component=kube-apiserver,确认apiserver运行正常,无端口监听异常
  • 检查集群网络插件状态:执行kubectl get pods -n kube-system | grep -E 'calico|flannel',确认Calico/Flannel等网络组件无异常,跨Pod通信正常
解决方案
  • 紧急恢复方案:如果需要优先恢复业务,可先删除Istio的webhook配置,临时关闭Istio校验和注入,执行后开启Istio注入的命名空间即可正常创建Pod:
kubectl delete validatingwebhookconfigurations istiod-istio-system
kubectl delete mutatingwebhookconfigurations istio-sidecar-injector

后续CoreDNS恢复后重新应用Istio的webhook配置即可恢复Istio能力

  • 修复CoreDNS异常:
    1. 先尝试重启所有CoreDNS Pod,验证是否为临时运行异常:kubectl rollout restart deployment coredns -n kube-system
    2. 若重启后仍存在apiserver连接报错,检查CoreDNS的RBAC权限:确认system:coredns ClusterRole绑定正常,拥有Service、Endpoint的list权限
    3. 若为网络插件断流导致的连通性异常,重启所有网络插件Pod后重新验证CoreDNS到apiserver的连通性
  • 验证恢复:CoreDNS恢复正常后,先测试集群内部域名解析正常,再重新应用Istio的webhook配置,重启Istio的网关和istiod组件,确认所有Istio Pod READY状态为1/1,最后验证应用部署功能恢复正常

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 07:06:03