使用Kubernetes工具Kompose在单个pod中启动多个容器

时间:2017-10-12 05:26:17

标签: docker kubernetes google-cloud-platform docker-compose

我一直在搜索google以寻找解决以下问题的时间超过我承认的时间。

我有一个docker-compose.yml文件,它允许我在本地计算机上启动一个包含2个容器的生态系统。哪个很棒。但我需要能够部署到Google容器引擎(GCP)。为此,我正在使用Kubernetes;仅部署到单个节点。

为了简化部署过程,我使用的是kompose,它允许我使用原始的docker-compose.yml在Google Container Engine上部署我的容器。这也很酷。问题在于,默认情况下,Kompose将在每个独立的pod中部署每个docker服务(我有2个);每个容器一个容器。但我真的希望所有容器/服务都在同一个pod中。

我知道有多种方法可以在一个pod中部署多个容器,但我不确定是否可以使用Kompose来完成此任务。

这是我的docker-compose.yml:

version: "2"
services:
  server:
    image: ${IMAGE_NAME}
    ports:
      - "3000"
    command: node server.js
    labels:
      kompose.service.type: loadbalancer
  ui:
    image: ${IMAGE_NAME}
    ports:
      - "3001"
    command: npm run ui
    labels:
      kompose.service.type: loadbalancer
    depends_on:
      - server

提前致谢。

1 个答案:

答案 0 :(得分:0)

事情是,没有任何剂量的码头工具能像这样发射它们。它们是完全分开的。例如,这意味着您可以在端口80上侦听两个容器,因为它们是独立的。如果您尝试将它们打包到同一个pod中,您将遇到端口冲突并最终导致混乱。您想要实现的场景应该在您的Dockerfile级别上实现,以便有意义(尽管在许多情况下胖的[基于管理程序的]容器可以被视为反模式),反过来使您的构图过时......

IMO你应该接受事物的方式,因为将docker-compose定义的堆栈映射到单个pod是没有意义的。