【问题标题】:Kubernetes / minikube can't ping pods in the same cluster, but nslookup worksKubernetes / minikube 无法 ping 同一个集群中的 pod,但 nslookup 有效
【发布时间】:2018-05-25 08:33:40
【问题描述】:

minikube 版本 ⏎ minikube 版本:v0.22.3

我正在尝试在 minikube 实例中设置各种 pod。我在公司代理后面运行,这可以解释一些这种行为。

我使用以下方式启动 minikube

minikube 启动 --docker-env HTTP_PROXY=http://corporate-proxy.com:80 --docker-env HTTPS_PROXY=https://corporate-proxy:80 --docker-env NO_PROXY=localhost,127.0.0.0/8,192.0.0.0/8

否则它根本不起作用。在 docker 上构建了一些图像后,我创建了两个服务和两个 pod:

---
apiVersion: v1
kind: Pod
metadata:
  name: app
  labels:
    name: app
spec:
  containers:
    - name: app
      image: image_app
      ports:
        - containerPort: 7777
      volumeMounts:
        - mountPath: /codeage
          name: code-volume
          readOnly: false
      imagePullPolicy: IfNotPresent
      tty: true
  volumes:
   - hostPath:
       path: /codeage
     name: code-volume
---
apiVersion: v1
kind: Pod
metadata:
  name: db
  labels:
    name: db
spec:
  containers:
    - name: db
      image: postgres
      ports:
        - containerPort: 5432
      volumeMounts:
        - mountPath: /var/lib/postgresql
          name: db-data
      imagePullPolicy: IfNotPresent
      tty: true
  volumes:
   - hostPath:
       path: /db-data
     name: db-data
---
apiVersion: v1
kind: Service
metadata:
  name: db
spec:
  type: NodePort
  ports:
  - name: 'db-port'
    port: 5432
    targetPort: 5432
  selector:
    name: db
---
apiVersion: v1
kind: Service
metadata:
  name: app
  labels:
    name: app
spec:
  type: NodePort
  ports:
   - name: apport
     port: 7777
     targetPort: 7777
  selector:
     name: app
---

我无法从“app”pod 内(ssh)ping 'db':

sh-4.2# ping db               
PING db.default.svc.cluster.local (10.0.0.116) 56(84) bytes of data.
From chicago11-rtr-3-v411.us.corporate.com (10.60.172.X) icmp_seq=1 Destination Host Unreachable
^C

如您所见,nslookup 工作并提供了正确的 clusterIP 10.0.0.116 和主机名 'db.default.svn.cluster.local'

我可以 ping 节点本身。我无法 ping kube-dns...

有人有什么想法吗?

是否有替代使用内置 dns 服务的方法?

【问题讨论】:

    标签: docker networking dns kubernetes minikube


    【解决方案1】:

    我们无法ping服务IP地址,您可以使用服务IP telnet到服务中定义的端口5432

    【讨论】:

    • 为什么你不能通过name.namespace或ip地址ping服务?
    • 服务 ip 充当代理,根据端口号将流量路由到 pod。这就是为什么我们无法 ping 服务 IP。服务 IP 未分配给任何网络接口。
    【解决方案2】:

    @sfgroups 的答案是正确的! ping 是错误的工具。 Telnet 或实际使用 psql 有效。实际的问题是我的服务没有指向任何东西。

    我更新了我的应用程序 pod 以具有唯一名称,然后更新了服务的选择器。

    【讨论】:

      猜你喜欢
      • 2017-05-15
      • 2019-02-08
      • 2017-12-28
      • 1970-01-01
      • 2019-04-24
      • 2020-10-29
      • 2018-04-20
      • 2019-02-16
      • 2015-07-19
      相关资源
      最近更新 更多