Docker 在kubernetes中调试DNS解析
我已经使用下面的命令在Ubuntu 16.04上初始化了kubernetes v1.13.1集群:Docker 在kubernetes中调试DNS解析,docker,ubuntu,kubernetes,dns,coredns,Docker,Ubuntu,Kubernetes,Dns,Coredns,我已经使用下面的命令在Ubuntu 16.04上初始化了kubernetes v1.13.1集群: sudo kubeadm init --token-ttl=0 --apiserver-advertise-address=192.168.88.142 并使用以下方法安装weave: kubectl apply -f "https://cloud.weave.works/k8s/net?k8s-version=$(kubectl version | base64 | tr -d '\n')"
sudo kubeadm init --token-ttl=0 --apiserver-advertise-address=192.168.88.142
并使用以下方法安装weave
:
kubectl apply -f "https://cloud.weave.works/k8s/net?k8s-version=$(kubectl version | base64 | tr -d '\n')"
我有10个树莓pi作为工作节点并连接到集群。他们都在很好地运行部署。有一些节点正在运行pod,它们试图连接到iot hubvisdwk azure devices.net
并发布一些数据。在10个节点中,只有少数节点能够连接,其他节点无法连接到物联网集线器。我做了一个ping测试,发现他们在ping谷歌的公共IP地址时无法ping谷歌
这让我觉得coredns
pod有问题。我遵循这一点,做了以下测试
Pod在/etc/resolv.conf
nameserver 10.96.0.10
search visdwk.svc.cluster.local svc.cluster.local cluster.local
options ndots:5
这对我来说很正常。所有coredns吊舱都运行良好
coredns-86c58d9df4-42xqc 1/1 Running 8 1d11h
coredns-86c58d9df4-p6d98 1/1 Running 7 1d6h
我还从busybox容器中执行了nslookup kubernetes.default
,并得到了正确的响应。以下是coredns-86c58d9df4-42xqc的日志
.:53
2019-02-08T08:40:10.038Z [INFO] CoreDNS-1.2.6
2019-02-08T08:40:10.039Z [INFO] linux/amd64, go1.11.2, 756749c
CoreDNS-1.2.6
linux/amd64, go1.11.2, 756749c
[INFO] plugin/reload: Running configuration MD5 =
f65c4821c8a9b7b5eb30fa4fbc167769
t
上面的日志看起来也很正常
我也不能说由于weave的任何错误,pod无法解决物联网集线器,因为如果weave抛出错误,那么我相信pod将永远不会启动,并且将始终处于失败状态,但实际上pod仍处于运行状态。如果我错了,请在这里纠正我
DNS服务似乎也处于运行状态:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kube-dns ClusterIP 10.96.0.10 <none> 53/UDP,53/TCP 1d6h
Pod正在运行一个MOSQUITO容器,该容器试图连接到visdwk.azure devices.net
,并抛出错误
Connecting bridge iothub-bridge (visdwk.azure-devices.net:8883)
Error creating bridge: Try again.
您的一个DNS播客似乎没有提供DNS服务 有证据表明,“只有少数节点能够连接,其他节点无法连接到物联网集线器” 这是循环中节点失败时负载平衡的典型症状 尝试:
visdwk.azure-devices.net.visdwknamespace.svc.cluster.local。udp 82 false 512“NXDOMAIN qr、aa、rd、ra 175 0.000651078s其中visdwk.azure devices.net
若要确认,请重新添加pod并删除另一个。重新测试,它们应该都无法连接。您可以从受影响的节点共享CoreDNS configmap吗?@mk_sta我可以通过运行
kubectl edit cm CoreDNS-n kube system
共享Master的CoreDNS配置映射,但我不确定是否可以在受影响的节点上运行相同的命令。您可以请告诉我如何获取configmap。谢谢。在尝试解析故障工作节点上的IP地址时,您是否可以查看coreDNS日志?另外,请检查/etc/resolv.conf文件中的所有节点是否具有相同的内容。最后,检查故障节点上是否可以ping DNS地址(10.69.0.10)@whites11.如果我试图解析故障工作节点上的IP地址并监视coreDNS的日志,我什么也看不到。日志显示的内容与我在问题中包含的内容相同。2.是的,我可以确认所有节点在/etc/resolv.conf
中的内容相同。3.我无法从故障I中ping10.96.0.10
ng节点以及工作节点。看起来这就是问题所在。?是的,对我来说这是一个覆盖网络问题。谢谢。那么我应该为失败的pod做些什么。?我无法将它们永久从集群中删除。验证pod的配置。测试是否成功?我正在测试它并将更新。我只是想知道,这可以吗这可能是因为网络连接较低,因为我在ping某些节点时获得了很高的响应时间(~1150ms)。可能不是,错误消息显示已接收DNS数据包,并发送了一个不存在的域,NXDOMAIN
响应。测试是否成功?
Connecting bridge iothub-bridge (visdwk.azure-devices.net:8883)
Error creating bridge: Try again.