【问题标题】:pod and service dns resolutionpod 和服务 dns 解析
【发布时间】:2023-03-06 13:32:01
【问题描述】:

我有一个 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

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

【问题讨论】:

  • 这是在寻找名称cassandra。在同一个命名空间中是否有具有此名称的服务?您可以从您的一个 pod 中查找此名称吗?
  • @BurakSerdar 我更新了帖子来回答你的问题
  • 您的集群中有正在运行的 dns 吗?你能找到其他名字吗?

标签: kubernetes kubernetes-networking


【解决方案1】:

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

cassandra.namespacename

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2019-02-06
      • 2022-01-24
      • 2020-10-03
      • 1970-01-01
      • 2015-02-09
      • 1970-01-01
      • 1970-01-01
      • 2020-11-16
      • 1970-01-01
      相关资源
      最近更新 更多