【问题标题】:Rewriting nginx.conf when converting docker-compose to Kubernetes using Kompose?使用 Kompose 将 docker-compose 转换为 Kubernetes 时重写 nginx.conf?
【发布时间】:2020-08-06 12:51:13
【问题描述】:

我对@9​​87654322@ 很陌生,我一直在努力将我当前的 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 使容器能够通过服务名称(在本例中为myappmynginx)相互通信。有人能告诉我我需要做什么才能在 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


【解决方案1】:

Kompose 确实为我创建了服务。原来我错过的是docker-compose.overwrite文件(显然kompose只是忽略了overwrite.yml)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-05-13
    • 2021-03-30
    • 2021-08-25
    • 1970-01-01
    • 2019-02-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多