编织的kube-dns无法查找服务

时间:2017-11-30 13:51:19

标签: kubernetes kubeadm kube-dns weave

我在Fedora机器上创建了一个带有一个vagrant节点的kubeadm(Kubernetes 1.8)集群。群集运行正常但我在测试我的dns时面临一个奇怪的问题:

$ kubectl exec busybox -- nslookup friendservice.mynamespace
Server:    10.96.0.10
Address 1: 10.96.0.10 kube-dns.kube-system.svc.cluster.local

Name:      friendservice.mynamespace
Address 1: 10.44.0.2 friendservice-
0.friendservice.mynamespace.svc.cluster.local

$ kubectl -n mynamespace exec userservice-0 -- nslookup 
friendservice.mynamespace
nslookup: can't resolve '(null)': Name does not resolve

Name:      friendservice
Address 1: 10.44.0.2 friendservice-
0.friendservice.mynamespace.svc.cluster.local
来自mynamespace命名空间中运行的服务的默认命名空间中的busybox pod的nslookup工作正常,但是当我尝试在同一个自定义命名空间(mynamespace)中执行服务的nslookup时,似乎dns首先无法解析但随后结算。我在这里缺少什么?

$ kubectl get pods --all-namespaces
kubectl get pods --all-namespaces         
NAMESPACE     NAME                                    READY     STATUS             RESTARTS   AGE
default       busybox                                 1/1       Running            2          2h
kube-system   etcd-fed-master                         1/1       Running            6          2h
kube-system   kube-apiserver-fed-master               1/1       Running            0          2h
kube-system   kube-controller-manager-fed-master      1/1       Running            0          2h
kube-system   kube-dns-545bc4bfd4-jkhrr               3/3       Running            0          2h
kube-system   kube-proxy-5vcvr                        1/1       Running            0          2h
kube-system   kube-proxy-f4765                        1/1       Running            0          2h
kube-system   kube-scheduler-fed-master               1/1       Running            1          2h
kube-system   weave-net-jw647                         2/2       Running            0          2h
kube-system   weave-net-z25rv                         2/2       Running            0          2h
mynamespace     friendservice-0                        1/1       Running            5          10m
mynamespace     userservice-0                          1/1       Running   0          26m

$ kubectl exec busybox -- cat /etc/resolv.conf 
nameserver 10.96.0.10
search default.svc.cluster.local svc.cluster.local cluster.local
options ndots:5

$ kubectl -n mynamespace exec bookentryservice-0 -- cat /etc/resolv.conf
nameserver 10.96.0.10
search mynamespace.svc.cluster.local svc.cluster.local cluster.local
options ndots:5

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

这是Alpine Linux及其musl库的问题。它已经破坏了DNS功能,并且已经采用这种方式已经有很多年了,显然他们并没有真正去解决它。

https://github.com/gliderlabs/docker-alpine/blob/master/docs/caveats.md#dns https://github.com/gliderlabs/docker-alpine/issues/8