【问题标题】:Building docker images in kuberentes cluster在 Kubernetes 集群中构建 docker 镜像
【发布时间】:2018-12-03 22:26:05
【问题描述】:
我们需要使用一些额外的包/定制从基础 docker 镜像构建自定义 docker 镜像。然后需要将这些自定义 docker 镜像部署到 kubernetes 中。我们正在探索各种工具来弄清楚如何在 kubernetes 集群中完成 docker build(无需直接访问 docker daemon)。像 kaniko 这样的开源工具提供了在容器中构建 docker 镜像的能力(因此在 kubernetes 集群中)。
在 kubernetes 集群中构建 docker 镜像是否是一个好习惯,其他容器将在其中运行/执行? kaniko 有什么明显的挑战吗?
是否应创建单独的专用 VM 来管理构建过程?
【问题讨论】:
标签:
docker
kubernetes
docker-image
【解决方案1】:
1.在其他容器将运行/执行的 Kubernetes 集群中构建 docker 镜像是一个好习惯吗?
kaniko 有什么明显的挑战吗?
是的,可以在 Kubernetes 容器中构建映像,但这可能有点挑战。
一些用户使用它为CI/CD with Jenkins 构建工作流。事实上,最好使用工具来简化流程。
Kubernetes也有编写容器开发包的规则,描述为here
另一种方法是使用Kaniko,此工具从容器或 Kubernetes 集群内的 Dockerfile 构建容器镜像。
在topic 上阅读这篇文章很有趣。
另一方面,在没有运行 Docker 守护程序的情况下构建镜像的尝试是成功的。您可能对Bazel 项目和story 如何使用它感兴趣。
2。是否应该创建单独的专用 VM 来管理构建过程?
关于你的第二个问题:不需要设置专门的虚拟机来运行 Docker 镜像创建工作流。
最后,在 Kubernetes 集群中拥有一个 private registry 并将其用于构建目的可能会很有趣。
【解决方案2】:
可以在 Kubernetes 节点上构建镜像。但我不会推荐它。原因是,应用程序构建过程是内存和计算密集型的,频繁的映像构建可能会导致该 kubernetes 节点调度的服务中断。
改用专用的 Jenkins 服务器,根据您的要求和交付创建管道。
你可以开始here!
希望有帮助!