簡體   English   中英

使用 DNS 名稱的 Pod 到 Pod 通信

[英]Pod to Pod communication using DNS names

在我的 Kubernetes 集群上,我有幾個可以相互通信的 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

當我nslookup on my-service.default.svc.cluster.local確實可以看到我所有的 pod。

我還為每個 pod 分配了單獨的主機名和subdomain: my-service 現在每個 Pod 都有一個單獨的 DNS 記錄,例如: <hostname>.my-service.default.svc.cluster.local 到目前為止,一切都很好。 但是,當我嘗試使用域(和端口) <hostname>.my-service.default.svc.cluster.local:111訪問 pod(從另一個容器)時,我得到了“連接被拒絕”。 我怎樣才能使這項工作? 我錯過了什么嗎?

問題的最可能原因是您嘗試訪問服務的方式。 如果您檢查響應端口 111 的內容,它將起作用。

例如,在不監聽它的端口上建立 http 連接將導致連接被拒絕。

嘗試根據您的服務 ping 或 telnet。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM