「Docker Compose」- 迁移到 Kubernetes 集群

  CREATED BY JENKINSBOT

问题描述

我们需要将 Docker Compose 部署的应用迁移到 Kubernetes 集群。

该笔记将记录:如何将 Docker Compose 管理的应用迁移到 Kubernetes 集群。

解决方案

Kompose

Kubernetes + Compose = Kompose

用于将 docker-compose.yaml 转化 Kubernetes 资源文件(YAML)。

但是,它会生成很多 YAML 文件,对于我们来说过于零散,因此很少采用该工具。

14.4. Converting Your Docker Compose Files to Kubernetes Manifests

假设你通过Docker访问容器,并编写了Docker compose文件来定义多个容器的应用程序。现在如何使用 Kubernetes ,以及重用Docker compose文件?

可以使用 kompose 工具将Docker compose文件转换成 Kubernetest清单文件。

首先,从 GitHub 上下载kompose,为了方便起见加入到$PATH中。例如,在 Macos上可以运行如下命令:

# wget https: //github. com/kubernetes-incubator/k/releases/download/v1.6.0/kompose-darwin-amd64

# mv kompose-darwin-amd64/usr/local/bin/kompose

# chmod +x /usr/local/bin/kompose

# kompose version

如果有下列用于启动 redis 容器 Docker compose文件:(略过)

那么可以通过如下命令,将它自动转换成 Kubernetes清单文件:

# kompose convert –stdout

清单文件将显示在 stdout,其中是 Kubernetes服务和一个部署。想要自动创建这些对象,可以使用up命令,如下所示:

# kompose up

一些 Docker compose 指令不会被转化为 Kubernetes。这种情况下, compose将输出警告信息,通知你转换未成功。

一般来说不会有大问题,但是转换生成的清单文件可能无法在Kubernetes正常工作。这类的转换一般都不会太完美。然而,这些转换可以帮助你创建基本的 Kubernetes清单文件。最值得注意的是卷和网络隔离的处理一般都需要手动定制。

kompose convert、up、down。请在命令行界面内使用–help参数查看每个命令的具体帮助信息。
默认情况下,kompose会将Docker服务转化成Kubernetes部署和相关的。你也可以指定使用 DaemonSet OpenShift的专用对象,例如DeploymentConfiguration

参考文献

Kubernetes + Compose = Kompose