问题描述
我们需要将 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上可以运行如下命令:
# mv kompose-darwin-amd64/usr/local/bin/kompose
# chmod +x /usr/local/bin/kompose
# kompose version
如果有下列用于启动 redis 容器 Docker compose文件:(略过)
那么可以通过如下命令,将它自动转换成 Kubernetes清单文件:
清单文件将显示在 stdout,其中是 Kubernetes服务和一个部署。想要自动创建这些对象,可以使用up命令,如下所示:
一些 Docker compose 指令不会被转化为 Kubernetes。这种情况下, compose将输出警告信息,通知你转换未成功。
一般来说不会有大问题,但是转换生成的清单文件可能无法在Kubernetes正常工作。这类的转换一般都不会太完美。然而,这些转换可以帮助你创建基本的 Kubernetes清单文件。最值得注意的是卷和网络隔离的处理一般都需要手动定制。
kompose convert、up、down。请在命令行界面内使用–help参数查看每个命令的具体帮助信息。
默认情况下,kompose会将Docker服务转化成Kubernetes部署和相关的。你也可以指定使用 DaemonSet OpenShift的专用对象,例如DeploymentConfiguration
参考文献
Kubernetes + Compose = Kompose