使用curl进行kubernetes pod通信

问题描述 投票:0回答:1

我有 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 命令能够成功与该服务建立连接。但是,我一直收到“连接被拒绝”错误消息,而不是成功连接。我的目标是确定我在此设置中可能在哪里犯了错误。

kubernetes communication
1个回答
0
投票
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 的关系。
有关 dns 的更多信息,请参阅文档 https://kubernetes.io/docs/concepts/services-networking/dns-pod-service/

© www.soinside.com 2019 - 2024. All rights reserved.