不支持将 Docker Compose 迁移到 Kubernetes 卷挂载

Juw*_*wan 5 docker kubernetes docker-compose

我正在尝试将现有的部署逻辑/切换为 kubernetes(我的服务器位于 gcp 中,到目前为止我使用 docker-compose 来运行我的服务器。)所以我决定首先使用kompose我现有的 docker- 来使用和生成服务/部署撰写文件。运行后

kompose --file docker-compose.yml convert

#I got warnings indicating  Volume mount on the host "mypath" isn't supported - ignoring path on the host
Run Code Online (Sandbox Code Playgroud)

经过一番研究后,我决定使用下面的命令来“修复”问题

kompose convert --volumes hostPath
Run Code Online (Sandbox Code Playgroud)

这个命令实现的是 -> 它将使用第一个命令生成的持久卷声明替换为下面的代码。

  volumeMounts:
        - mountPath: /path
          name: certbot-hostpath0
        - mountPath: /somepath
          name: certbot-hostpath1
        - mountPath: /someotherpath
          name: certbot-hostpath2

- hostPath:
          path: /path/certbot
        name: certbot-hostpath0
      - hostPath:
          path: /path/cert_challenge
        name: certbot-hostpath1
      - hostPath:
          path: /path/certs
        name: certbot-hostpath2 
Run Code Online (Sandbox Code Playgroud)

但由于我在本地机器上工作

kubectl apply -f <output file>
Run Code Online (Sandbox Code Playgroud)

结果是与服务器 localhost:8080 的连接被拒绝 - 您指定了正确的主机或端口吗?我不想将本地环境与 gcp 连接只是为了生成必要的文件,这是必须的吗?或者我可以将其移至startup-gcp 等

我觉得我的方向是正确的,但我需要确认我没有搞砸什么。

1)我的产品数据库中只有一个计算引擎(VM 实例)和大量数据。“我如何”/“我需要”确保我不会通过做某事丢失数据库中的任何数据?2)在startup-gcp中,在完成其他所有操作(修剪docker镜像等)后,我有一个docker run命令,它使用docker/compose 1.13.0 up -d. 我应该如何更改它以切换到 kubernetes?3)我是否应该更改任何内容, nginx.conf 因为它引用了我的 docker-compose 中的 2 个不同服务(我认为我不应该,因为 kubernetes 生成的 yaml 中也存在相同的服务)

小智 2

您应该考虑使用持久卷声明 (PVC)。如果您的集群是托管的,则在大多数情况下它可以自动为您创建 PersistentVolume。

创建与 docker compose 文件相对应的持久卷声明的一种方法是使用 Move2Kube(https://github.com/konveyor/move2kube)。您可以下载该版本并将其放置在路径中并运行:

move2kube translate -s <path to your docker compose files>
Run Code Online (Sandbox Code Playgroud)

然后它会以交互方式允许您配置 PVC。

如果您有一个目标特定集群,则可以在已将 kubernetes 集群设置为 kubectl 上下文的终端中使用以下命令获取该集群支持的特定存储类。

move2kube collect
Run Code Online (Sandbox Code Playgroud)

一旦完成收集,您将拥有一个 m2k_collect 文件夹,然后您可以将其放置在 docker compose 文件所在的文件夹中。当您运行 move2kube translate 时,它​​会自动询问您是否针对此特定集群,以及从该集群中选择存储类别的选项。

1)我的产品数据库中只有一个计算引擎(VM 实例)和大量数据。“我如何”/“我需要”确保我不会通过做某事丢失数据库中的任何数据?

配置 PVC 后,您可以使用 kubectl cp 命令将数据复制到 PVC 到挂载 PVC 的 pod 中。

2)在startup-gcp中,在完成其他所有操作(修剪docker镜像等)后,我有一个docker run命令,它使用docker/compose 1.13.0 up -d。我应该如何更改它以切换到 kubernetes?

您可以将其更改为使用舵图。Move2Kube,在交互式会话期间,也可以帮助您创建 Helm Chart。有了 helm 图表后,您所要做的就是“helm update -i

3)我是否应该更改 nginx.conf 中的任何内容,因为它引用了我的 docker-compose 中的 2 个不同服务(我认为我不应该,因为 kubernetes 生成的 yaml 中也存在相同的服务)

如果服务名称在大多数情况下都是名称,那么它应该可以工作。