【发布时间】:2020-03-08 19:43:17
【问题描述】:
所以我最近在我的家庭网络上设置了一个单节点 kubernetes 集群。我有一个在我的路由器(DD-WRT、dnsmaq)上运行的 dns 服务器,它解析了一堆本地域以便于使用。 server1.lan,例如解析为192.168.1.11。
服务器 1 被设置为我的单节点 kubernetes 集群。对本地 DNS 的可能性感到兴奋,我使用名为 netshoot 的 docker 容器启动了我的第一个部署,该容器捆绑了一堆有用的网络调试工具。我执行到容器中,然后运行 ping 并得到以下结果...
bash-5.0# ping server1.lan
ping: server1.lan: Try again
它失败了,然后我尝试 ping google 的 DNS (8.8.8.8) 并且效果很好。
我尝试解析kubernetes默认域,效果很好
bash-5.0# nslookup kubernetes.default
Server: 10.96.0.10
Address: 10.96.0.10#53
Name: kubernetes.default.svc.cluster.local
Address: 10.96.0.1
/etc/resolve.conf 文件从 pod 内部看起来很好
bash-5.0# cat /etc/resolv.conf
nameserver 10.96.0.10
search default.svc.cluster.local svc.cluster.local cluster.local
options ndots:5
然后我开始跟踪 coredns 日志,我开始看到一些有趣的输出...
2019-11-13T03:01:23.014Z [ERROR] plugin/errors: 2 server1.lan. AAAA: read udp 192.168.156.140:37521->192.168.1.1:53: i/o timeout
2019-11-13T03:01:24.515Z [ERROR] plugin/errors: 2 server1.lan. A: read udp 192.168.156.140:41964->192.168.1.1:53: i/o timeout
2019-11-13T03:01:24.515Z [ERROR] plugin/errors: 2 server1.lan. AAAA: read udp 192.168.156.140:33455->192.168.1.1:53: i/o timeout
2019-11-13T03:01:25.015Z [ERROR] plugin/errors: 2 server1.lan. AAAA: read udp 192.168.156.140:48864->192.168.1.1:53: i/o timeout
2019-11-13T03:01:25.015Z [ERROR] plugin/errors: 2 server1.lan. A: read udp 192.168.156.140:35328->192.168.1.1:53: i/o timeout
似乎 kubernetes 正在尝试从集群网络内部与 192.168.1.1 通信并且失败。我猜 CoreDNS 使用主机上 resolv.conf 中的任何内容,所以这就是它的样子。
nameserver 192.168.1.1
我可以从网络上的其他任何地方解析 server1.lan,除了这些 pod。我的路由器 IP 是 192.168.1.1,这就是对 DNS 查询的响应。
对此的任何帮助将不胜感激,这似乎是 kubernetes 网络和我真正的家庭网络之间的某种 IP 路由问题,或者这就是我的理论。提前致谢。
【问题讨论】:
-
你能不能试试用
dig工具运行容器镜像,运行dig server1.lan @192.168.1.1看看是否解析域 -
由于某种原因,我无法在这些 poss 中访问我的家庭网络 ip,其中包括 192.168.1.1。
-
所以你可以ping 8.8.8.8,但不能ping 192.168.1.1?
-
这个k8s集群是怎么搭建的?
标签: docker networking kubernetes dns coredns