如何清除k8s dns 缓存,be一直去连接不存在的ip

Viewed 103

SQL Error [1105] [HY000]: errCode = 2, detailMessage = (doriscluster-be-5.doriscluster-be-internal.doris-2-1.svc.cluster.local)[CANCELLED]Failed to connect to backend 20508: [E112]Not connected to 172.16.18.126:8060 yet, server_id=6121
集群中并不存在172.16.18.126这个ip,部署用的k8s,镜像是官网2.1.6版本

3 Answers

1、可以考虑通过进入Pod执行清空DNS缓存的命令或重启k8s清除一些缓存影响
2、检查下上下游是否有172.16.18.126这个ip,已经各相关conf中是否有配置

doris 在 k8s 上使用域名的原理: (k8s 组件)coredns 是从 (k8s组件)apiserver 获取 pod 的ip,然后关联到 service 记录一个解析记录。 doris 使用 nslookup 机制获取域名对应的 IP,这个是在心跳机制里,fe 每一次心跳都会进行一次域名解析,判断跟现在的 IP 是否一致,不一致就更新。
所以,这种情况下,先看 coredns 的解析问题,判断的依据从其他节点 的pod 内发起一次域名解析,如果解析的地址还是错的那就是 coredns 解析的问题。如果是对的,就需要排查 doris 的代码实现。请提供 fe master 的日志信息,重点提供域名解析部分的日志,然后给出从不同 pod 内发起错误 pod 域名的解析记录,看看是不是能解析正确的 ip。

这个问题依然存在,版本:2.1.6,有 BE Pod 重启之后,会访问到失效的 DNS Cache
image.png
image.png

完整日志:https://paste.org.cn/1FCtb8mySJ