openshift集群中如何解析*.svc地址

openshift集群中如何解析*.svc地址,openshift,Openshift,当我在openshift中创建应用程序时,它会在*.svc地址中公开一个服务 oc project Using project "coco" on server "https://master.lab.example.com:8443" oc get svc -o wide NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGE SELECTOR ruby-ex 172.30.18.144 <none>

当我在openshift中创建应用程序时,它会在*.svc地址中公开一个服务

oc project
Using project "coco" on server "https://master.lab.example.com:8443"
oc get svc -o wide
NAME      CLUSTER-IP      EXTERNAL-IP   PORT(S)    AGE       SELECTOR
ruby-ex   172.30.18.144   <none>        8080/TCP   9h        app=ruby-ex,deploymentconfig=ruby-ex
因此,它的工作如预期,但我找不到谁解决这个域名。仍然来自同一节点

 dig +short ruby-ex.coco.svc
不输出任何内容。因此,我想知道如何找到正确的ip

编辑1:按照格雷厄姆的答案,我的理解进度

文件/etc/resolv.conf包含以下内容:

search  lab.example.com cluster.local
nameserver 10.0.2.15
我可以看到10.0.2.15属于节点,dnsmask侦听端口53

netstat -tulnp | grep 10.0.2.15
tcp        0      0 10.0.2.15:53            0.0.0.0:*               LISTEN      1274/dnsmasq
udp        0      0 10.0.2.15:53            0.0.0.0:*                           1274/dnsmasq
进入dnsmask的形态

cat /etc/dnsmasq.d/node-dnsmasq.conf
server=/in-addr.arpa/127.0.0.1
server=/cluster.local/127.0.0.1

显示进程openshift正在侦听127.0.0.1:53

当我使用此服务器挖掘时,连接超时

dig +short  @127.0.0.1 ruby-ex.coco.svc
;; connection timed out; no servers could be reached
但是对于集群中的已知域,它会正确地回答

dig +short  @127.0.0.1 node1.lab.example.com
172.25.250.11
我只是无法在cluster.local和*.svc地址之间建立链接,也无法解释为什么curl解析地址而不是dig

编辑2


由于对/etc/resolv.conf理解不好,我最终找到了答案。 使用resolv.conf中的search指令,尝试ruby-ex.coco.svc,然后尝试ruby-ex.coco.svc.cluster.local,依此类推,尝试每个域。事实上

dig +short @127.0.0.1 ruby-ex.coco.svc.cluster.local
172.30.18.144

正常工作,感谢您的帮助。

OpenShift内部有一个DNS,用于处理请求。查看
/etc/resolv.conf
,它将有如下内容:

nameserver 172.31.39.82
search myproject.svc.cluster.local svc.cluster.local cluster.local ap-southeast-2.compute.internal
options ndots:5

创建时,服务名称对应的主机名会添加到内部DNS。

谢谢Graham,我能更好地理解(我编辑了我的问题),但我无法在cluster.local和*.svc地址之间建立链接,我也无法解释为什么curl解析地址而不是digI,我最终找到了答案,由于我对/etc/resolv.conf的理解不好。使用resolv.conf curl中的search指令,尝试ruby-ex.coco.svc,然后尝试ruby-ex.coco.svc.cluster.local。我再次编辑我的答案。谢谢你的帮助。
dig +short @127.0.0.1 ruby-ex.coco.svc.cluster.local
172.30.18.144
nameserver 172.31.39.82
search myproject.svc.cluster.local svc.cluster.local cluster.local ap-southeast-2.compute.internal
options ndots:5