提问者:小点点

使用DNS名称进行Pod到Pod通信


在我的库伯内特斯集群上,我有几个应该相互通信的pod。它们是单独部署的。我创建了一个名为my-service的无头服务,它针对所有pod。

apiVersion: v1
kind: Service
metadata:
  name: my-service
  namespace: default
spec:
  clusterIP: None
  ports:
  - name: test1
    port: 111
    protocol: TCP
    targetPort: 111
  - name: test2
    port: 222
    protocol: TCP
    targetPort: 222
  publishNotReadyAddresses: true
  selector:
    app: "my-app"
  type: ClusterIP

每个pod有两个端口111和222

apiVersion: v1
kind: Pod
metadata:
  labels:
    app: "my-app"
  name: my-service-6c44bdf68c-q6jdq
  namespace: default
spec:
  containers:
  - image: my-image
    name: my-app
    ports:
    - containerPort: 111
      name: test1
      protocol: TCP
    - containerPort: 222
      name: test1
      protocol: TCP

当我在my-service. default.svc.club.local上执行nslookup时,我确实可以看到我所有的pod。

我还为每个pod分配了单独的主机名和子域:my-service。Pod现在每个都有一个单独的DNS一个记录,如:


共1个答案

匿名用户

出现此问题的最可能原因是您尝试访问服务的方式。如果您检查响应端口111的内容,它将正常工作。

例如,在不监听的端口上建立超文本传输协议连接将给出拒绝连接。

尝试根据您的服务ping或telnet。