Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/29.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 kubedns-如果我进行NSQ查找,sidecar和masq会崩溃_Dns - Fatal编程技术网

kubernetes kubedns-如果我进行NSQ查找,sidecar和masq会崩溃

kubernetes kubedns-如果我进行NSQ查找,sidecar和masq会崩溃,dns,Dns,我面临一个奇怪的问题 这是我的库伯内特的详细资料 Kubernetes version: 1.6.4 OS: Ubuntu 17.04 我使用以下链接中的YAML文件安装kube dns 第一步 然后,我尝试使用 kubectl run -i --tty busybox --image=busybox – sh 现在,当我做库伯内特斯的时候,它就起作用了。 现在,当我试图查看我的侧车的docker日志时,我看到了以下内容 ERROR: logging before flag.Parse:

我面临一个奇怪的问题 这是我的库伯内特的详细资料

Kubernetes version:  1.6.4
OS: Ubuntu 17.04
我使用以下链接中的YAML文件安装kube dns

第一步

然后,我尝试使用

kubectl run -i --tty busybox --image=busybox – sh
现在,当我做库伯内特斯的时候,它就起作用了。 现在,当我试图查看我的侧车的docker日志时,我看到了以下内容

ERROR: logging before flag.Parse: I0721 17:15:25.067730       1 main.go:48] Version v1.14.3-4-gee838f6
ERROR: logging before flag.Parse: I0721 17:15:25.067981       1 server.go:45] Starting server (options {DnsMasqPort:53 DnsMasqAddr:127.0.0.1 DnsMasqPollIntervalMs:5000 Probes:[{Label:kubedns Server:127.0.0.1:10053 Name:kubernetes.default.svc.cluster.local. Interval:5s Type:1} {Label:dnsmasq Server:127.0.0.1:53 Name:kubernetes.default.svc.cluster.local. Interval:5s Type:1}] PrometheusAddr:0.0.0.0 PrometheusPort:10054 PrometheusPath:/metrics PrometheusNamespace:kubedns})
ERROR: logging before flag.Parse: I0721 17:15:25.068191       1 dnsprobe.go:75] Starting dnsProbe {Label:kubedns Server:127.0.0.1:10053 Name:kubernetes.default.svc.cluster.local. Interval:5s Type:1}
ERROR: logging before flag.Parse: I0721 17:15:25.068398       1 dnsprobe.go:75] Starting dnsProbe {Label:dnsmasq Server:127.0.0.1:53 Name:kubernetes.default.svc.cluster.local. Interval:5s Type:1}
ERROR: logging before flag.Parse:
步骤2 如果我对一个我知道在kubedns中不存在的名称(比如nslookup ABCD)进行nslookup(作为记录),那么我会在我的dnsmesg容器中看到以下日志

I0718 17:26:33.738368       1 nanny.go:108] dnsmasq[13]: Maximum number of concurrent DNS queries reached (max: 150)
同时我在侧车里看到了后面的人

dns sidecar errorERROR: logging before flag.Parse: I0720 02:09:37.975054       1 main.go:48] Version v1.14.3-4-gee838f6
ERROR: logging before flag.Parse: I0720 02:09:37.975140       1 server.go:45] Starting server (options {DnsMasqPort:53 DnsMasqAddr:127.0.0.1 DnsMasqPollIntervalMs:5000 Probes:[{Label:kubedns Server:127.0.0.1:10053 Name:kubernetes.default.svc.cluster.local. Interval:5s Type:1} {Label:dnsmasq Server:127.0.0.1:53 Name:kubernetes.default.svc.cluster.local. Interval:5s Type:1}] PrometheusAddr:0.0.0.0 PrometheusPort:10054 PrometheusPath:/metrics PrometheusNamespace:kubedns})
ERROR: logging before flag.Parse: I0720 02:09:37.975160       1 dnsprobe.go:75] Starting dnsProbe {Label:kubedns Server:127.0.0.1:10053 Name:kubernetes.default.svc.cluster.local. Interval:5s Type:1}
ERROR: logging before flag.Parse: I0720 02:09:37.975200       1 dnsprobe.go:75] Starting dnsProbe {Label:dnsmasq Server:127.0.0.1:53 Name:kubernetes.default.svc.cluster.local. Interval:5s Type:1}
ERROR: logging before flag.Parse: W0720 02:12:50.090595       1 server.go:64] Error getting metrics from dnsmasq: read udp 127.0.0.1:36473->127.0.0.1:53: i/o timeout
ERROR: logging before flag.Parse: W0720 02:13:03.607740       1 server.go:64] Error getting metrics from dnsmasq: read udp 127.0.0.1:56334->127.0.0.1:53: i/o timeout
ERROR: logging before flag.Parse: W0720 02:13:10.609651       1 server.go:64] Error getting metrics from dnsmasq: read udp 127.0.0.1:39976->127.0.0.1:53: i/o timeout
ERROR: logging before flag.Parse: W0720 02:13:23.644035       1 server.go:64] Error getting metrics from dnsmasq: read udp 127.0.0.1:57226->127.0.0.1:53: i/o timeout
步骤3 5分钟或10分钟后,我的sidecar和dnsmasq都崩溃了,新的容器又重新创建了,这真是一个麻烦

有关我的K8s群集的其他一些详细信息 我正在使用VMWare workstation 12 Pro在一个节点上运行群集,我已经启用了RBAC,并且正在使用客户端证书进行身份验证

求救信号。有人能给我指出正确的方向吗?我花了很多时间想弄明白这一点。
提前感谢

我在Ubuntu 18.04上遇到了同样的问题,在
/etc/resolve.conf
systemd resolved
的基础上,第三个系统开始发挥作用。但这并不妨碍
kube-dns
——正如前面所述,
kube-dns
只是选择
/etc/resolve.conf
的内容,在我的例子中:

nameserver 127.0.0.53
事实证明,这仅仅是一个已知的Ubuntu systemd解决的bug(见答案)。长话短说,只有一个解决办法(实际上,我也不相信这一点,并尝试使用编辑
/etc/systemd/resolved.conf
和重新启动服务,但这对我来说并不奏效)。只需(重新)移动原始的
/etc/resolv.conf
,并将其替换为指向
/run/systemd/resolv/resolv.conf
的链接:

sudo mv /etc/resolv.conf /etc/resolv.conf_orig
sudo ln -s /run/systemd/resolve/resolv.conf /etc/resolv.conf
现在,您的
/etc/resolve.conf
应该有正确的名称服务器,在我使用VirtualBox的情况下是
名称服务器10.0.2.3
(这可能与您的设置不同!)。现在,重新应用
kube dns
后,它会为每次nslookup选择正确的名称服务器,一切正常:

kubectl exec -it busybox-68654f944b-7rdzs -- nslookup kubernetes
如果您感兴趣,这里有一个解决该问题的Ansible实现:


更新2018年8月29日:当前的
busybox
映像存在DNS查找问题(请参阅)。尝试运行版本
1.28.4
时,请明确使用:

kubectl run busybox --image=busybox:1.28.4 --command -- sleep 3600 

这应该可以避免你几天的搜索

我忘了提到我正在运行Ubuntu 16.04,而AFAIK没有运行systemd

这解释了为什么我找不到/run/systemd/resolve(resolv.conf)文件夹将我的/etc/resolv.conf符号链接到

显然,16.10版中引入了systemd解决方案


我确实切换到使用busybox的1.28.4版,但这也没有任何帮助。

大家参考我讨论过的github链接,问题得到了解决。我在我的集群上应用了相同的解决方案,DNS现在正在工作。您在更改后卸载了systemd resolve吗?不,我没有在更改后卸载systemd resolve-我想,Ubuntu在其较新版本中依赖于该子系统-所以这可能不是一个好主意。当然!但是,即使在创建了如上所述的符号链接之后。resolv.conf指向/run/resolvconf/resolv.conf,nslookup命令显示随机行为。有时工作,有时不工作。我有什么遗漏吗?