Kubernetes+Calico+CRIO集群新增节点Pod DNS访问异常:部分CoreDNS节点可达部分不可达
Kubernetes+Calico+CRIO集群新增节点Pod DNS访问异常:部分CoreDNS节点可达部分不可达
我有一个裸金属Kubernetes集群,包含1个控制平面节点和10个工作节点,所有原有工作节点的配置完全一致:相同的OS、kube/crio/iptables/ufw版本。集群使用Calico作为CNI,Pod CIDR和Service CIDR配置均无问题。
最近新增了两个节点,其中一个工作正常,但另一个出现了奇怪的DNS问题:当在这个节点上运行Pod并执行nslookup时,Pod能连接到CoreDNS Service,但部分CoreDNS后端节点可达,另一部分则超时。
具体表现是:如果CoreDNS Pod运行在节点1、2、3、4、5上,从故障节点的Pod发起请求时,始终能成功访问节点1、2、3上的CoreDNS,但访问节点4、5上的CoreDNS时必然超时。这个现象完全一致,没有随机性。
集群所有节点使用UFW作为主机防火墙,节点之间没有访问限制(UFW已允许节点间所有出入流量)。我已经花了两天排查这个问题,但始终找不到根源。
有没有人遇到过类似的问题?哪怕是一丁点思路也可以分享一下吗?
补充排查信息(基于回复建议)
感谢你的回复。我已经尝试了你提到的所有方法,以下是通过tcpdump抓取并在Wireshark中分析的DNS数据包情况:
- 当访问可达的CoreDNS节点时:从故障节点到可达节点执行
nslookup google.com,能正常获取响应- 当访问不可达的CoreDNS节点时:从故障节点到不可达节点执行
nslookup google.com,完全收不到响应,甚至CoreDNS日志里都没有超时记录
另外我做了额外验证:在某个不可达的CoreDNS节点主机上启动一个HTTP服务器,故障节点的Pod可以正常访问这个服务器,说明主机间的防火墙规则并没有阻断通信。即使关闭UFW,问题依然存在。
还有其他思路吗?非常感谢!
备注:内容来源于stack exchange,提问作者Corentin
相关产品推荐
相关产品推荐

