0

我有一个 Kubernetes 集群,我在其上部署了 pod 和服务。其中一个 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 的服务。

当我在 pod 内运行 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

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

4

2 回答 2

1

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

于 2020-02-27T17:43:11.133 回答
1

如果 pod 试图访问位于不同命名空间中的服务,那么您需要指定服务的命名空间。

cassandra.namespacename

有关更多调试帮助,请参阅此内容。

于 2020-02-27T17:35:44.027 回答