Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/kubernetes/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何从根本上导致(本地)kubernetes实例(sky DNS正常)中的DNS查找失败_Dns_Kubernetes - Fatal编程技术网

如何从根本上导致(本地)kubernetes实例(sky DNS正常)中的DNS查找失败

如何从根本上导致(本地)kubernetes实例(sky DNS正常)中的DNS查找失败,dns,kubernetes,Dns,Kubernetes,看起来,ubuntu上kubernetes的本地up cluster在依赖群集DNS时无法解析DNS查询 设置 我正在运行一个ubuntu box,在本地up集群中设置了DNS的环境变量: # env | grep KUBE KUBE_ENABLE_CLUSTER_DNS=true KUBE_DNS_SERVER_IP=172.17.0.1 运行信息 天空似乎很高兴: I0615 00:04:13.563037 1服务器。转到:198]Skydns指标已启用/指标:10055 I0615

看起来,ubuntu上kubernetes的本地up cluster在依赖群集DNS时无法解析DNS查询

设置

我正在运行一个ubuntu box,在本地up集群中设置了DNS的环境变量:

# env  | grep KUBE
KUBE_ENABLE_CLUSTER_DNS=true
KUBE_DNS_SERVER_IP=172.17.0.1
运行信息

天空似乎很高兴:

I0615 00:04:13.563037 1服务器。转到:198]Skydns指标已启用/指标:10055 I0615 00:04:13.563051 1 dns.go:147]正在启动端点控制器 I0615 00:04:13.563054 1 dns.go:150]正在启动serviceController I0615 00:04:13.563125 1日志。转到:41]skydns:准备好在cluster.local上进行查询。对于tcp://0.0.0.0:10053 [rcache 0] I0615 00:04:13.563141 1日志。转到:41]skydns:准备好在cluster.local上进行查询。对于udp://0.0.0.0:10053 [rcache 0] I0615 00:04:13.589840 1 dns.go:264]新服务:kubernetes I0615 00:04:13.589971 1 dns.go:462]添加了SRV记录&{Host:kubernetes.default.svc.cluster.local.端口:443优先级:10权重:10文本:邮件:false Ttl:30 TargetStrip:0组:键:} I0615 00:04:14.063246 1 dns.go:171]已从apiserver初始化服务和终结点 I0615 00:04:14.063267 1服务器。转到:129]设置Healthz处理程序/准备就绪 I0615 00:04:14.063274 1服务器。转到:134]设置缓存处理程序/缓存 I0615 00:04:14.063288 1服务器。转到:120]状态HTTP端口8081

库贝似乎很高兴:

I0615 00:03:53.448369 5706 proxier.go:864]为默认设置端点/kubernetes:https到[172.31.44.133:6443] I0615 00:03:53.545124 5706控制器_utils.go:1001]已为服务配置控制器同步缓存 I0615 00:03:53.545146 5706 config.go:210]调用handler.OnServiceSynced I0615 00:03:53.545208 5706 proxier.go:979]在从主服务器接收到服务和端点之前,不同步iptables I0615 00:03:53.545125 5706控制器_utils.go:1001]为端点配置控制器同步缓存 I0615 00:03:53.545224 5706 config.go:110]调用处理程序。onendpoints同步 I0615 00:03:53.545274 5706 proxier.go:309]添加新服务端口默认值/kubernetes:https在10.0.0.1:443/TCP I0615 00:03:53.545329 5706代理程序。转到:991]同步iptables规则 I0615 00:03:53.993514 5706代理程序。转到:991]同步iptables规则 I0615 00:03:54.008738 5706有界\u频率\u运行程序。转到:221]同步运行程序:运行,下一个可能在0秒后,周期在30秒后 I0615 00:04:24.008904 5706 proxier.go:991]同步iptables规则 I0615 00:04:24.023057 5706有界\u频率\u运行程序。转到:221]同步运行程序:运行,下一个可能在0秒后,周期在30秒后

结果

但是,我似乎无法解决集群内的任何问题,docker exec或kube exec的结果相同:

➜  kubernetes git:(master) kc exec --namespace=kube-system kube-dns-2673147055-4j6wm -- nslookup kubernetes.default.svc.cluster.local
Defaulting container name to kubedns.
Use 'kubectl describe pod/kube-dns-2673147055-4j6wm' to see all of the 
containers in this pod.
nslookup: can't resolve '(null)': Name does not resolve
nslookup: can't resolve 'kubernetes.default.svc.cluster.local': Name does not resolve
问题:

进一步调试使用本地up cluster创建的系统的最简单方法是什么?DNS吊舱正在运行,但kubernetes.default.svc.cluster.local未解析?请注意,该集群的所有其他方面似乎都工作正常

系统信息:Linux ip-172-31-44-133 4.4.0-1018-aws 27 Ubuntu SMP Fri May 19 17:20:58 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux

正在放置在我的容器中的resolv.conf示例

/etc/cfssl # cat /etc/resolv.conf
nameserver 172.17.0.1
search default.svc.cluster.local svc.cluster.local cluster.local dc1.lan
options ndots:5  

我不能对你的帖子发表评论,所以我将尝试回答这个问题

首先,一些阿尔卑斯山的图片。DNS实际上可能在集群中正常工作

要验证这一点,请阅读与kube apiserver通信的POD日志,例如traefik、heapster、calico。如果没有观察到任何错误,那么您可能没有问题

如果你想更加确定,可以部署一个非阿尔卑斯吊舱并尝试nslookup

如果它真的是一个DNS问题,我将按此顺序进行调试

kubectl exec进入kube dns吊舱。运行nslookup kubernetes.default.svc.cluster.localhost。如果这样做有效,DNS实际上正在运行。如果没有,kube dns现在应该已经进入CrashLoopbackOff状态。 kubectl exec进入已部署的吊舱。运行nslookup kubernetes.default.svc.cluster.local。如果这行得通,你就可以走了。如果没有,吊舱网络就出了问题。没有细节,我无法推荐进一步的步骤。
好机会

我想我应该发布一个通常对我有效的系统性答案。我希望有更优雅的东西,但这并不理想,但我认为这是最好的开始

1确保您的DNS保姆和SkyDNS正在运行。nanny和Sky DNS都应该在docker日志中显示它们已绑定到某个端口

2创建新服务时,请确保SkyDNS正在将其写入日志并显示SRV的创建等

3查看docker容器中的/etc/resolv.conf。确保名称服务器看起来像内部docker IP地址上的某个内容,即10。。。。在fedora上的常规docker0配置中

有一些特定的环境变量需要正确导出:API\u HOST=true和KUBE\u ENABLE\u CLUSTER\u DNS=true

<
p> 您可以使用很多更深层次的工具,如route-n等,来调试容器网络,但本地up cluster通常应该“正常工作”,如果上面的步骤出现问题,在kubernetes社区值得一提的是,这可能是一个bug。

Hi Eugene:我确实尝试了不止一个映像,也尝试了dns吊舱的exec。它显然不起作用。这是否意味着步骤1中的nslookup不起作用?