我如何与 Kubernetes 中的 sidecar 容器中的 pod 通信?

How do I talk to a pod from sidecar container in Kubernetes?

我无法从边车集装箱与 pod 通话...任何帮助将不胜感激!

这是我的部署

---
apiVersion: extensions/v1beta1
kind: Deployment

metadata:
   name: sidecar-deployment

spec:
replicas: 1

template:
    metadata:
       labels:
          app: sidecar
    spec:
      containers:
      - name: sidecar1
        image: sidecar
        args:
        - /sidecar
        - --port=32000
        - --path=/sidecar1
        ports:
        - containerPort: 32000
      - name: sidecar2
        image: sidecar
        args:
        - /sidecar
        - --port=32001
        - --path=/sidecar2
        ports:
        - containerPort: 32001

这是我对 pod 的服务

---
apiVersion: v1
kind: Service

metadata:
  name: sidecar-service

spec:
  ports:
  - name: http
    port: 80
    targetPort: 32001
    protocol: TCP

selector:
  app: sidecar
type: NodePort

部署ingress后,我可以连接到服务和sidecar2,因为sidecar2是通过服务暴露的:

# this works
curl -L http://ADDR/sidecar2

但是,我希望能够卷曲到侧面容器,但我不能。

这就是我所做的。我通过 ssh 进入 sidecar 容器。并使用 localhost:

卷曲位于同一位置的 pod
kubectl exec -it sidecar2 -- /bin/bash
# this doesn't work
curl -L http://localhost:32000/sidecar1

有人可以帮我解决这个问题吗?

谢谢!

如果您的 sidecar 镜像暴露了端口(重新检查您的 dokefile),您必须连接 curl localhost:port/sidecar

如果您在使用服务从容器内部连接时遇到问题,这可能与hairpin_mode

有关