首页 > 解决方案 > 如何在 Kubernetes 中的同一 POD 中的容器之间进行通信?

问题描述

对于一个 POD,已创建三个图像。这里的问题是同一个 pod 中的容器之间没有通信。我的应用程序应该如何与这三个容器连接?

我的吊舱有以下容器。

[dev-application dev-app-nginx dev-app-redis]

在这里,我只能看到 rails 正在运行,但 redis 和 nginx 没有运行。因为 Redis 和 nix 在同一个 pod 中作为不同的容器运行。

kubectl exec -ti test-deployment-5f59864c8b-mv4kk sh
kubectl exec [POD] [COMMAND] is DEPRECATED and will be removed in a future version. Use kubectl exec [POD] -- [COMMAND] instead.
Defaulting container name to dev-application.
Use 'kubectl describe pod/test-deployment-5f59864c8b-mv4kk -n dev-app' to see all of the containers in this pod.
# rails -v
Rails 4.2.11.3
# redis -v
sh: 2: redis: not found
# nginx -v
sh: 3: nginx: not found
# 

在我正在使用的 yam 文件下方

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  namespace: dev-app
  name: test-deployment
spec:
  replicas: 1 
  template:
    metadata:
      labels:
        app: Dev-app
    spec:
      nodeSelector:
       cloud.io/sec-zone-green: "true"
      containers:
        - name: dev-application
          image: hub.docker.net/appautomation/dev.app.1.0:latest
            command: ["/bin/sh"]
            args: ["-c", "while true; do echo test; sleep 20;done"]
          resources:
            limits:
              memory: 8Gi
              cpu: 5
            requests:
              memory: 8Gi
              cpu: 5
          ports:
            - containerPort: 3000
        - name: dev-app-nginx
          image: hub.docker.net/appautomation/dev.nginx.1.0:latest
          resources:
            limits:
              memory: 4Gi
              cpu: 4
            requests:
              memory: 4Gi
              cpu: 4
          ports:
            - containerPort: 80
                       
        - name: dev-app-redis
          image: hub.docker.net/appautomation/dev.redis.1.0:latest
          
          resources:
            limits:
              memory: 4Gi
              cpu: 4
            requests:
              memory: 4Gi
              cpu: 4
          ports:
            - containerPort: 6379
    
        

标签: kuberneteskubernetes-pod

解决方案


使用localhost与同一个 pod 中的其他容器进行通信。

例如,容器的地址是

  • 127.0.0.1:3000
  • 127.0.0.1:80
  • 127.0.0.1:6379

推荐阅读