【问题标题】:Can't resolve dns from inside k8s pod无法从 k8s pod 内部解析 dns
【发布时间】:2020-11-16 13:11:12
【问题描述】:

在 dnsutils pod exec ping stackoverflow.com

/ # ping stackoverflow.com
ping: bad address 'stackoverflow.com'

/etc/resolve.conf 文件从 pod 内部看起来很好

/ # cat /etc/resolv.conf 
nameserver 10.96.0.10
search weika.svc.cluster.local svc.cluster.local cluster.local
options ndots:5

10.96.0.10是kube-dns服务ip:

[root@test3 k8s]# kubectl -n kube-system get service
NAME                        TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)                     AGE
kube-dns                    ClusterIP   10.96.0.10      <none>        53/UDP,53/TCP,9153/TCP      75d

core dns

[root@test3 k8s]# kubectl -n kube-system get  pod -o wide | grep core
coredns-6557d7f7d6-5nkv7                             1/1     Running   0          10d   10.244.0.14    test3.weikayuninternal.com   <none>           <none>
coredns-6557d7f7d6-gtrgc                             1/1     Running   0          10d   10.244.0.13    test3.weikayuninternal.com   <none>           <none>

当我将名称服务器 ip 更改为 coredns ip 时。解析dns就OK了。

/ # cat /etc/resolv.conf 
nameserver 10.244.0.14
#nameserver 10.96.0.10
search weika.svc.cluster.local svc.cluster.local cluster.local
options ndots:5
/ # ping stackoverflow.com
PING stackoverflow.com (151.101.65.69): 56 data bytes
64 bytes from 151.101.65.69: seq=0 ttl=49 time=100.497 ms
64 bytes from 151.101.65.69: seq=1 ttl=49 time=101.014 ms
64 bytes from 151.101.65.69: seq=2 ttl=49 time=100.462 ms
64 bytes from 151.101.65.69: seq=3 ttl=49 time=101.465 ms
64 bytes from 151.101.65.69: seq=4 ttl=49 time=100.318 ms
^C
--- stackoverflow.com ping statistics ---
5 packets transmitted, 5 packets received, 0% packet loss
round-trip min/avg/max = 100.318/100.751/101.465 ms
/ # 

为什么会这样?

【问题讨论】:

  • 您有任何应用的网络策略吗?你能检查一下 kube-dns 服务的端点(kubectl get endpoints kube-dns --namespace=kube-system -o wide)吗?
  • 能否分享或查看日志" kubectl logs -f pod/corednspodname -n kube-system"

标签: kubernetes dns kube-dns


【解决方案1】:

您没有提到 Kubernetes 是如何安装的。您应该使用以下命令重新启动 coredns pod。

kubectl -n kube-system rollout restart deployment coredns

【讨论】:

    猜你喜欢
    • 2020-03-08
    • 2022-01-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-11
    • 1970-01-01
    相关资源
    最近更新 更多