docker - Kubernetes:容器无法 ping www.google.com
问题描述
我的kubernetes
集群在 4Raspberry-pi
台设备上运行,其中 1 台充当master
,其他 3 台作为worker
ie w1
、w2
、w3
. 我已经开始了一个守护程序集部署,所以每个工作人员都在运行一个包含 2 个容器的 pod。
w2
正在运行 2 个容器的 pod。如果我进入任何容器并从容器exec
ping ,我会得到响应。www.google.com
但如果我在上面做同样的事情w1
,w3
它会说temporary failure in name resolution
。kube-system 中的所有 pod 都在运行。我正在使用weave
网络。以下是 kube-system 的所有 pod
NAME READY STATUS RESTARTS AGE
etcd-master-pi 1/1 Running 1 23h
kube-apiserver-master-pi 1/1 Running 1 23h
kube-controller-manager-master-pi 1/1 Running 1 23h
kube-dns-7b6ff86f69-97vtl 3/3 Running 3 23h
kube-proxy-2tmgw 1/1 Running 0 14m
kube-proxy-9xfx9 1/1 Running 2 22h
kube-proxy-nfgwg 1/1 Running 1 23h
kube-proxy-xbdxl 1/1 Running 3 23h
kube-scheduler-master-pi 1/1 Running 1 23h
weave-net-7sh5n 2/2 Running 1 14m
weave-net-c7x8p 2/2 Running 3 23h
weave-net-mz4c4 2/2 Running 6 22h
weave-net-qtgmw 2/2 Running 10 23h
如果我使用普通的 docker container 命令而不是从 kubernetes 部署启动容器,那么我看不到这个问题。我认为这是因为kube-dns
. 我该如何调试这个问题。?
解决方案
您可以先检查 dns 是否正常工作
从 pod 内部对 kubernetes.default 运行 nslookup,检查它是否正常工作。
[root@metrics-master-2 /]# nslookup kubernetes.default
Server: 10.96.0.10
Address: 10.96.0.10#53
Name: kubernetes.default.svc.cluster.local
Address: 10.96.0.1
检查 pod 内的本地 dns 配置:
[root@metrics-master-2 /]# cat /etc/resolv.conf
nameserver 10.96.0.10
search default.svc.cluster.local svc.cluster.local cluster.local ec2.internal
options ndots:5
最后,在运行 ping 命令时检查 kube-dns 容器日志,它会为您提供名称无法解析的可能原因。
kubectl logs kube-dns-86f4d74b45-7c4ng -c kubedns -n kube-system
希望这可以帮助。
推荐阅读
- python - 如何在 python (in Mu) 中导入已安装的库?
- algorithm - 用 k 1s 获得所有二进制组合的高效算法
- r - 根据值列表有效地检查多个变量的值
- python - 有没有办法使用用户输入来调用函数?
- swift - 未使用正确的值观察到已发布的 var
- excel - 如何使用 VBA 自动调整列宽?
- r - ggplot:geom_text 不在 geom_col 上方打印
- owl - 如何比较OWL中的属性?
- excel - Excel使用求和函数并删除求和数
- mysql - 使用 sidecar 方法将我的 kubernetes 引擎应用程序连接到谷歌云 sql 实例时遇到问题