跨节点Pod无法解析Service名称(CoreDNS部署在其他节点时)的问题排查求助
跨节点Pod无法解析Service名称(CoreDNS部署在其他节点时)的问题排查求助
大家好,我被一个Kubernetes DNS问题卡了4-5天,实在没办法了想请教各位大佬:
先说说我的集群环境:
- Kubernetes版本是v1.26.0,用kubeadm搭建的
- CNI组件用的是Calico,通过Helm Chart部署,完全跟着Calico官方文档和Chart的步骤来操作的
- 容器引擎用的是containerd
- 节点系统是CentOS 8,防火墙用firewalld配置iptables,参考了社区相关线程的配置方案
现在的问题是这样的:
当我用dnsutils Pod执行nslookup命令时,如果这个Pod被调度到CoreDNS所在的节点上,就能正常解析kube-dns.kube-system这类Service名称;但如果Pod在其他节点,就会超时失败。另外不管Pod在哪个节点,直接Ping Pod IP是没问题的,唯独跨节点时用{Service Name}.{Namespace}的方式访问就不行。
我已经做了这些排查工作:
- 确认Calico要求的所有防火墙端口都已经开放,并且可以正常访问
- 开启了kube-proxy的
--v=4日志级别,能看到它已经正确加载了所有Service的名称和对应的Cluster IP - 检查了节点上的iptables规则,和Kubernetes官方调试Service页面里的规则是一致的
实在找不到问题根源了,有没有大佬能给我一些调试方向,或者帮我分析下到底哪里出问题了?
备注:内容来源于stack exchange,提问作者Peeradis Sa-nguantrakul
相关产品推荐
相关产品推荐

