我有 1 个 Pod、5 个部署和 1 个服务。该服务在端口 80 上使用 TCP 协议,目标端口为 5001。集群 IP 为 10.108.127.91。我的部署的输出端口是 5000、5001、5002、5003 和 5004。我试图通过进入任何部署的 shell 并使用 curl 来检查是否可以与服务进行通信,但每次我尝试这样做时,我收到“连接被拒绝”错误。我哪里出错了?
apiVersion: v1
kind: Service
metadata:
name: app-service
namespace: mert-task-ns
spec:
selector:
app: app
ports:
- protocol: TCP
port: 80
targetPort: 5001
apiVersion: apps/v1
kind: Deployment
metadata:
name: app-deployment-4
namespace: mert-task-ns
labels:
app: app
spec:
replicas: 1
selector:
matchLabels:
app:app
template:
metadata:
labels:
app: app
spec:
containers:
- name: app-container
image: secret:)
ports:
- containerPort: 5004
我尝试通过进入其中一个部署的 shell 并使用curl 命令与服务进行通信。考虑到该服务在端口 80 上运行并且目标端口设置为 5001,我预计curl 命令能够成功与该服务建立连接。但是,我一直收到“连接被拒绝”错误消息,而不是成功连接。我的目标是确定我在此设置中可能在哪里犯了错误。
apiVersion: v1
kind: Service
metadata:
name: app-service
namespace: mert-task-ns
spec:
selector:
app: app
ports:
- protocol: TCP
port: 8000
targetPort: 5000
- protocol: TCP
port: 8001
targetPort: 5001
- protocol: TCP
port: 8002
targetPort: 5002
- protocol: TCP
port: 8003
targetPort: 5003
- protocol: TCP
port: 8004
targetPort: 5004
apiVersion: apps/v1
kind: Deployment
metadata:
name: app-deployment-4
namespace: mert-task-ns
labels:
app: app
spec:
replicas: 1
selector:
matchLabels:
app:app
template:
metadata:
labels:
app: app
spec:
containers:
- name: app-container
image: secret:)
ports:
- containerPort: 5000
- containerPort: 5001
- containerPort: 5002
- containerPort: 5003
- containerPort: 5004
你可以直接通过名称来卷曲你的Pod
curl http://{pod-name}:{containerPort}/
,但是由于部署创建的Pod名称是随机的,所以你应该通过服务访问
curl http://{service-name}:{service-port}/
curl http://app-service:8000/
curl http://app-service:8001/
curl http://app-service:8002/
curl http://app-service:8003/
curl http://app-service:8004/
注意到服务的
targetPort
必须与 containerPort
匹配,具有 1 对 1 的关系。