Windows Worker节点上的Pods无法访问CoreDNS问题排查求助
解决Windows Worker节点Pod DNS解析故障
1. 检查Windows节点CNI插件兼容性
- 确认Windows节点使用的CNI插件(如Flannel、Calico)适配Windows Server 2019及当前K8s版本,部分CNI插件对Windows的网络转发逻辑有特殊要求,比如Flannel需开启VXLAN/Host-gw模式并配置正确的网络网段。
- 在Windows节点主机执行
route print,验证是否存在指向集群服务网段(通常为10.96.0.0/12)及CoreDNS Service IP(默认10.96.0.10)的路由条目,缺失则需手动补充或重启CNI服务。
2. 验证CoreDNS网络可达性
- 在Windows节点主机直接ping CoreDNS的Service IP和Pod IP:若主机能连通但Pod无法连通,说明CNI的Pod到集群网络转发规则异常。
- 检查Windows防火墙规则:确保允许Pod网段(如
10.244.x.0/24)与集群服务网段之间的UDP 53(DNS)、ICMP通信,缺失则添加规则:netsh advfirewall firewall add rule name="Allow K8s DNS UDP" dir=in action=allow protocol=UDP localport=53 remoteip=<Pod网段>/24 netsh advfirewall firewall add rule name="Allow K8s DNS TCP" dir=in action=allow protocol=TCP localport=53 remoteip=<Pod网段>/24
3. 检查Pod DNS配置
- 进入Windows Pod内部,查看
C:\Windows\System32\drivers\etc\resolv.conf和hosts文件,确认nameserver是否指向CoreDNS的Service IP(10.96.0.10)。 - 检查Windows节点kubelet配置:确认启动参数中的
--cluster-dns和--cluster-domain与Linux节点一致,若配置错误则修改kubelet服务配置并重启。
4. 排查CoreDNS运行状态
- 在Master节点执行
kubectl get pods -n kube-system -l k8s-app=kube-dns,确认CoreDNS Pod均处于Running状态且无频繁重启。 - 查看CoreDNS日志:
kubectl logs -n kube-system <coredns-pod-name>,检查是否存在拒绝Windows Pod请求或DNS解析异常的记录。
5. 验证kube-proxy服务状态
- 在Windows节点查看kube-proxy运行日志:
Get-EventLog -LogName Application -Source kube-proxy -Newest 20 - 确认kube-proxy模式(IPVS/iptables)适配Windows:IPVS模式需确保节点已安装IPVS组件,iptables模式需确认WinDivert组件正常运行,异常则重启kube-proxy服务。
6. 手动测试DNS解析
- 在Windows Pod内执行指定CoreDNS IP的解析命令:
nslookup google.pl 10.96.0.10,若能返回结果说明Pod默认DNS配置错误;若仍超时则聚焦排查Pod到CoreDNS的网络连通问题。
内容的提问来源于stack exchange,提问作者Kambey
相关产品推荐
相关产品推荐

