pod和服务dns解析

时间:2020-02-27 17:31:54

标签: kubernetes kubernetes-networking

我有一个Kubernetes集群,在上面部署了Pod和服务。其中一个Pod应该通过提供其清单的服务名称连接到服务。

所有服务和pod均部署在默认名称空间中。

查看广告连播的日志时出现以下错误:

cassandra cluster ['cassandra'] not reachable: [Errno -8] Unrecognized service

Caused by: java.net.UnknownHostException: cassandra: Name does not resolve
        at java.net.Inet4AddressImpl.lookupAllHostAddr(Native Method)
        at java.net.InetAddress$2.lookupAllHostAddr(InetAddress.java:928)
        at java.net.InetAddress.getAddressesFromNameService(InetAddress.java:1323)
        at java.net.InetAddress.getAllByName0(InetAddress.java:1276)
        at java.net.InetAddress.getAllByName(InetAddress.java:1192)
        at java.net.InetAddress.getAllByName(InetAddress.java:1126)
        at com.datastax.driver.core.Cluster$Builder.addContactPoint(Cluster.java:884)

我部署了一项名为cassandra的服务。

当我在容器中运行nslookup时,输出如下:

kubectl exec -it pod/kairosdb -- nslookup cassandra
nslookup: can't resolve '(null)': Name does not resolve

Name:      cassandra
Address 1: <ip> cassandra.default.svc.cluster.local

正在寻求有关如何解决此问题的帮助。

2 个答案:

答案 0 :(得分:1)

如果pod尝试访问位于不同名称空间中的服务,则需要指定服务的名称空间。

cassandra.namespacename

有关更多调试帮助,请参见this

答案 1 :(得分:1)

对于本地查找,请使用标准服务名称。在这种情况下, cassandra.deployed-namespace-name.svc.cluster.local