kubernetes无法ping其他服务

nha*_*nha 12 kubernetes

DNS解析看起来不错,但是我无法ping通我的服务。可能是什么原因?

从集群中的另一个窗格:

$ ping backend
PING backend.default.svc.cluster.local (10.233.14.157) 56(84) bytes of data.


^C
--- backend.default.svc.cluster.local ping statistics ---
36 packets transmitted, 0 received, 100% packet loss, time 35816ms
Run Code Online (Sandbox Code Playgroud)

编辑:

服务定义:

apiVersion: v1
kind: Service
metadata:
  labels:
    app: backend
  name: backend
spec:
  ports:
  - name: api
    protocol: TCP
    port: 10000
  selector:
    app: backend
Run Code Online (Sandbox Code Playgroud)

部署:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: backend
  labels:
    app: backend
spec:
  replicas: 1
  selector:
    matchLabels:
      run: backend
  replicas: 1
  template:
    metadata:
      labels:
        run: backend
    spec:
      containers:
      - name: backend
        image: nha/backend:latest
        imagePullPolicy: Always
        ports:
        - name: api
          containerPort: 10000
Run Code Online (Sandbox Code Playgroud)

我可以curl从同一容器中进行服务:

kubectl exec -it backend-7f67c8cbd8-mf894 -- /bin/bash
root@backend-7f67c8cbd8-mf894:/# curl localhost:10000/my-endpoint
{"ok": "true"}
Run Code Online (Sandbox Code Playgroud)

看起来端口10000上的端点没有被暴露:

 kubectl get ep
NAME         ENDPOINTS                                                       AGE
backend      <none>                                                          2h
Run Code Online (Sandbox Code Playgroud)

Ign*_*lán 12

Ping无法使用服务的群集IP(例如10.233.14.157),因为它是虚拟IP。您应该能够ping特定的Pod,但是没有服务。

  • 难道您不应该*通过服务* ping/访问 pod 吗?这不就是服务的重点吗?我不再需要获取各个容器的 IP 地址了? (4认同)
  • 这适用于TCP或UDP流量,但不适用于运行ping时使用的ICMP。如果要测试与服务的连接,请使用netcat生成TCP或UDP通信。 (2认同)

sur*_*ren 9

您无法 ping 服务。你可以卷曲它。