Kubernetes(GKE)内部查询无法解析

时间:2018-12-27 10:32:44

标签: networking kubernetes

我在GKE上遇到Kubernetes的问题。我无法按名称解析服务。我运行了drone-server服务,该服务已连接到单个Pod。连接到服务的入口已成功连接,但是例如当尝试从nslookup窗格中访问busybox时,它无法解析主机名。

服务:

$ k get services -n drone
NAME           TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)   AGE
drone-server   ClusterIP   10.39.242.23    <none>        80/TCP    2d
drone-vault    ClusterIP   10.39.248.166   <none>        80/TCP    40m

Busybox nslookup:

$ kubectl exec -ti busybox -- nslookup drone-server
Server:    10.39.240.10
Address 1: 10.39.240.10 kube-dns.kube-system.svc.cluster.local

nslookup: can't resolve 'drone-server'

当我尝试查找kubernetes.default时,我是否得到了本地地址:

$ kubectl exec -ti busybox -- nslookup kubernetes.default
Server:    10.39.240.10
Address 1: 10.39.240.10 kube-dns.kube-system.svc.cluster.local

Name:      kubernetes.default
Address 1: 10.39.240.1 kubernetes.default.svc.cluster.local

解析配置:

/etc/resolv.conf似乎配置正确(名称服务器与kube-dns服务群集ip匹配)。

$ kubectl exec -ti busybox -- cat /etc/resolv.conf
nameserver 10.39.240.10
search default.svc.cluster.local svc.cluster.local cluster.local europe-west3-a.c.cluster-a8e6d9e252b63e03.internal c.cluster-a8e6d9e252b63e03.internal google.internal
options ndots:5

1 个答案:

答案 0 :(得分:1)

您的drone-server服务位于drone命名空间中,您正在尝试从默认命名空间进行nslookup。您还需要在命令中提供命名空间,如下所示:

kubectl exec -ti busybox -- nslookup drone-server.drone

这是因为您的busybox位于默认名称空间中,并且它试图在同一名称空间中查找drone-server。