Kubernetes / minikube无法在同一群集中ping pod,但nslookup工作

时间:2017-12-11 18:45:53

标签: docker networking dns kubernetes minikube

minikube版本⏎ minikube版本:v0.22.3

我尝试在minikube实例中设置各种pod。我在公司代理人后面跑,这可能解释了这种行为。

我使用以下

启动minikube

minikube start --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
---

我无法ping' db'来自(ssh)' app'荚:

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服务的替代方法?

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

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

我更新了我的应用程序窗格以获得唯一的名称,然后更新了该服务的选择器。