使用DNS名称的Pod到Pod通信

时间:2020-07-24 19:44:44

标签: networking kubernetes kubernetes-pod

在我的Kubernetes集群上,我只有几个豆荚可以互相交流。它们分别部署 我创建了一个名为my-service的无头服务,该服务针对所有吊舱。

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

每个吊舱都暴露了两个端口: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

nslookup on my-service.default.svc.cluster.local做完后,我的确可以看到我所有的吊舱。

我还为每个Pod分别分配了主机名和subdomain: my-service。现在,每个Pod都有一个单独的DNS A记录,例如:<hostname>.my-service.default.svc.cluster.local。到现在为止还挺好。但是,当我尝试使用域(和端口)<hostname>.my-service.default.svc.cluster.local:111(从另一个容器)访问pod时,出现“连接被拒绝”的情况。我该如何工作?我想念什么吗?

1 个答案:

答案 0 :(得分:0)

此问题的最可能原因是您尝试获得服务的方式。如果您检查响应端口111的端口,它将起作用。

例如,在不监听的端口上建立http连接将使连接被拒绝。

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