【发布时间】:2020-08-06 12:51:13
【问题描述】:
我对@987654322@ 很陌生,我一直在努力将我当前的 docker-compose 环境迁移到 Kubernetes...
我使用 kompose 将我的 docker-compose.yml 转换为 Kubernetes 清单。
到目前为止,我可以单独访问每个 pod,但似乎我在让这些 pod 相互通信方面遇到了一些问题。我的 Nginx pod 无法访问我的应用程序 pod
我的docker-compose.yml 如下所示
version: '3.3'
services:
myapp:
image: my-app
build: ./docker/
restart: unless-stopped
container_name: app
stdin_open: true
volumes:
- mnt:/mnt
env_file:
- .env
mynginx:
image: nginx:latest
build: ./docker/
container_name: nginx
ports:
- 80:80
stdin_open: true
restart: unless-stopped
user: root
我的Nginx.conf 如下所示
server{
listen 80;
index index.html index.htm;
root /mnt/volumes/statics/;
location /myapp {
proxy_pass http://myapp/index;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
我了解docker-compose 使容器能够通过服务名称(在本例中为myapp 和mynginx)相互通信。有人能告诉我我需要做什么才能在 Kubernetes 中实现同样的目标吗?
【问题讨论】:
-
你想在这里用 Nginx 做什么?您想将其用作 LoadBalancer/Reverse 代理吗?
-
您需要 Kubernetes 服务对象。在其他 Kompose 示例中,我看到了自动生成的示例。与其依赖 Kompose,不如查看 kubernetes.io 上的文档并尝试写出与此相对应的 YAML 文件以更好地理解这些概念;您应该需要两个部署、两个服务和一个 ConfigMap(取决于
volumes:的用途)。 -
@vjdhama 是的,我想将其用作反向代理。
-
@DavidMaze 感谢您的回复。是的,Kompose 确实为我创建了服务。原来我错过的是 docker-compose.overwrite 文件(显然 kompose 只是忽略了 overwrite.yml)。但是,我再次陷入了如何在 docker-compose 中转换“build: ./docker”的问题。有人对此有任何见解吗?
-
Kubernetes 不会为您构建映像(以及 Docker Compose 所做的其他事情)。您需要一个 Docker 镜像注册表,并且您需要将您的镜像
docker-compose push发送给它,然后 Kubernetes 才能运行它们。
标签: docker nginx kubernetes docker-compose kompose