K8s Pod使用CoreDNS服务IP无法解析DNS,但使用CoreDNS Pod IP可正常解析的问题求助
K8s Pod使用CoreDNS服务IP无法解析DNS,但使用CoreDNS Pod IP可正常解析的问题求助
大家好,我碰到一个挺诡异的K8s DNS问题,想请教下社区的朋友们。
先说说我的环境:
- 单节点K8s集群,运行在Ubuntu 22.04机器上
- 集群是通过K8s源码编译启动的,启动命令如下:
sudo CGROUP_DRIVER=systemd KUBELET_RESOLV_CONF=/run/systemd/resolve/resolv.conf hack/local-up-cluster.sh -O
问题的具体情况是这样的:
我创建了一个测试Pod:
kubectl run -it test --image=busybox -- sh
进入Pod后用nslookup github.com测试DNS解析,结果直接失败,报错:
;; connection timed out; no servers could be reached
但当我手动修改Pod内的/etc/resolv.conf,把nameserver从CoreDNS的**服务IP(10.0.0.10)改成CoreDNS的Pod IP(10.88.0.17)**之后,再执行nslookup github.com就完全正常了,输出如下:
Server: 10.88.0.17
Address: 10.88.0.17:53Name: github.com
Address: 20.205.243.166
为了搞清楚原因,我在测试Pod里用tcpdump抓了UDP包:
tcpdump -i eth0 udp -n -vvv
发现当nameserver设为CoreDNS Pod IP时,执行nslookup会有正常的数据包交互,部分抓包内容如下:
16:53:35.770523 IP (tos ...
我现在搞不懂的是,为什么通过CoreDNS服务IP无法把DNS请求转发到对应的Pod呢?会不会是我的集群里的服务转发组件(比如kube-proxy)有配置问题?有没有大佬遇到过类似的情况,或者能给我一些排查的方向?
备注:内容来源于stack exchange,提问作者Eric
相关产品推荐
相关产品推荐

