kubernetes - 如何在 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
解决方案
使用localhost与同一个 pod 中的其他容器进行通信。
例如,容器的地址是
- 127.0.0.1:3000
- 127.0.0.1:80
- 127.0.0.1:6379
推荐阅读
- reactjs - 如何在表单提交按钮内调用自定义钩子?
- python - 如何在使用 reddit PRAW 时查看所有线程以获得评论数量?
- xcode - 为什么插页式广告有时会显示为全黑?
- python - 如何创建从用户单击向数据库添加点的工具?
- ruby-on-rails - Pundit::NotAuthorizedError / 权威授权问题
- mongodb - 聚合嵌套 objectid
- angular - Angular 8 - 如何将一个模型数据推送到另一个模型
- android - 有没有办法检查是否应用了 NoiseSuppressor?
- regex - 如何在 sed 命令中匹配正则表达式 1 到 3 次?
- mongodb - 嵌套文档数组上的 MongoDB 条件查询