Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/203.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
Docker 在kubernetes中调试DNS解析_Docker_Ubuntu_Kubernetes_Dns_Coredns - Fatal编程技术网

Docker 在kubernetes中调试DNS解析

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')"

我已经使用下面的命令在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')"
我有10个树莓pi作为工作节点并连接到集群。他们都在很好地运行部署。有一些节点正在运行pod,它们试图连接到iot hub
visdwk 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服务

有证据表明,“只有少数节点能够连接,其他节点无法连接到物联网集线器”

这是循环中节点失败时负载平衡的典型症状

尝试:

  • 删除发出以下消息的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中ping
    10.96.0.10
    ng节点以及工作节点。看起来这就是问题所在。?是的,对我来说这是一个覆盖网络问题。谢谢。那么我应该为失败的pod做些什么。?我无法将它们永久从集群中删除。验证pod的配置。测试是否成功?我正在测试它并将更新。我只是想知道,这可以吗这可能是因为网络连接较低,因为我在ping某些节点时获得了很高的响应时间(~1150ms)。可能不是,错误消息显示已接收DNS数据包,并发送了一个不存在的域,
    NXDOMAIN
    响应。测试是否成功?
    Connecting bridge iothub-bridge (visdwk.azure-devices.net:8883)
    Error creating bridge: Try again.