[英]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.