【问题标题】:pod dns is not resolved in k8spod dns 在 k8s 中没有解析
【发布时间】:2018-04-23 13:01:54
【问题描述】:

我有 2 个名为 A 和 B 的服务

我有服务 A 的 pod a1、a2、a3。

我有服务 B 的 pod b1、b2、b3。

服务 A -> 类型 = ClusterIP

服务 B -> 类型= LoadBalancer

如果我尝试从 a1 -> b1 执行 nslookup,则会出现以下错误。

  >kubectl exec a1 -- nslookup b1

  nslookup: can't resolve '(null)': Name does not resolve
  nslookup: can't resolve 'cassandra-0': Name does not resolve
  command terminated with exit code 1

请帮我找出问题以及为什么其他 pod 无法访问它

已更新实际信息::

                                    root-user> kubectl get  services --all-namespaces -o wide
        NAMESPACE     NAME                   TYPE           CLUSTER-IP       EXTERNAL-IP                                                               PORT(S)                      AGE       SELECTOR
        default       kubernetes             ClusterIP      100.24.1.0       <none>                                                                    443/TCP                      26d       <none>
        default       registration-service   ClusterIP      None             <none>                                                                    8080/TCP                     18d       app=registration-service
        default       app-framework          ClusterIP      None             <none>                                                                    24366/TCP                    25d       app=app-framework
        default       stt                    LoadBalancer   100.56.9.26      a548cdb75447611e897960efe53682ba-1445165219.us-east-2.elb.amazonaws.com   8443:31327/TCP               3d        app=stt
        kube-system   kube-dns               ClusterIP      100.46.0.10      <none>                                                                    53/UDP,53/TCP                26d       k8s-app=kube-dns
        kube-system   kubernetes-dashboard   ClusterIP      100.96.205.42    <none>                                                                    443/TCP                      26d       k8s-app=kubernetes-dashboard

【问题讨论】:

  • 服务 A 和 B 是否在同一个命名空间中?
  • 另外,由于您显然是在尝试查找 pod DNS(您应该真正连接到服务提供的 VIP 的位置),您是否考虑了正确的语法?有关详细信息,请参阅kubernetes.io/docs/concepts/services-networking/dns-pod-service/…。顺便说一句,一个具体的例子而不是你在此处提供的抽象例子更容易帮助你。
  • 是的,这两个服务都在同一个命名空间“默认”中。

标签: dns kubernetes load-balancing kubernetes-pod


【解决方案1】:

它的工作原理如docs 中所述。这里举个简单的例子:

# in one terminal: 
$ kubectl run -i -t --rm there --restart=Never --image=quay.io/mhausenblas/jump:0.2 -- sh

# in another terminal
$ kubectl describe pod there | grep IP
IP:           172.17.0.7
$ kubectl run -i -t --rm here --restart=Never --image=quay.io/mhausenblas/jump:0.2 -- sh
~ $ nslookup 172-17-0-7.default.pod
nslookup: can't resolve '(null)': Name does not resolve

Name:      172-17-0-7.default.pod
Address 1: 172.17.0.7

【讨论】:

  • 我们不能从 app-framework 的 pod 中的 stt 访问 pod 吗?
  • 是的,你可以,但这不是你问的。在您的示例中,您询问了如何查找 pod (b1) 而不是服务的 DNS。请明确您要做什么。
  • 我的意思是我想从 a1 访问 b1,其中 a1、b1 是 stt-6b65f8c98c-lqn67 之类的 pod 名称(在示例中我使用简单的名称来理解)。
  • 我在上面解释了如何访问 Pod。 DNS 条目不是通过 pod 名称,而是通过 pod IP,如文档中所述以及我在上面显示的那样。我真的不知道我还能说什么?
猜你喜欢
  • 2020-11-16
  • 2020-03-08
  • 1970-01-01
  • 2018-12-30
  • 2019-02-06
  • 2023-03-06
  • 2022-01-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多