docker - Kubernetes/minikube 无法 ping 通同一集群中的 pod,但 nslookup 可以工作

标签 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
---

我无法从“app”pod 内(ssh)对“db”执行 ping 操作:

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 服务之外,还有其他选择吗?

最佳答案

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

关于docker - Kubernetes/minikube 无法 ping 通同一集群中的 pod,但 nslookup 可以工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47759375/

相关文章:

google-cloud-platform - FAILED_NOT_VISIBLE 负载平衡中由 Google 管理的 SSL 证书

linux - Docker linux - 无法使用 docker exec (ASP.NET Core) cd 进入某些目录

mysql - 如何从 Vagrant box 连接到 docker 容器中的 MySQL 数据库?

macos - docker 设备 macOS 上没有剩余空间

java - Docker id 未选择文件

networking - 为什么 `to.` 是有效域名?

python - Scapy 和 tcpreplay : bypass temporary file for performance

java - 为什么我使用 JMX 时会收到错误 "connection refused"

java - Java 中的常规字符串到 IDNA

dns - 将多个域名指向同一个地方