互联网技术 / 互联网资讯 · 2024年1月8日

将 Kubernetes 集群封装为镜像的工具

SealeR 是一套面向分布式应用的打包、交付与运行方案。它将分布式应用以及数据库、中间件等依赖统一封装在一起,以降低复杂系统在部署和交付过程中的难度。

它生成的核心产物被称为“集群镜像”。这类镜像内置 Kubernetes 环境,能够在更高层级上统一描述和交付整个集群,从而提升分布式应用部署的一致性。生成后的集群镜像既可以推送到镜像仓库供他人复用,也可以直接使用已有的通用软件镜像。

这款工具可以把Kubernetes集群打包成一个镜像

如果说 Docker 是将操作系统 Rootfs 与应用一起构建为容器镜像,那么 SealeR 则是把 Kubernetes 视作新的抽象基础,在其之上构建“集群镜像”。这种方式使整个集群具备了类似容器镜像的构建、共享与运行能力。

借助集群镜像,使用者在实践云原生技术时会更加直接高效。例如:

  • 快速安装一个 Kubernetes 集群
  • 部署包含 Prometheus 的监控集群

这款工具可以把Kubernetes集群打包成一个镜像

除了使用现成镜像,SealeR 的一个重要特点是支持自定义集群镜像。用户可以通过类似 Dockerfile 的描述文件来定义构建过程,这个文件称为 Kubefile。

通过 SealeR 的 build 命令,可以将自定义配置打包为新的集群镜像。例如,在镜像中加入 dashboard 组件后,就能够生成一个可直接运行、也可分享给其他用户使用的集群镜像。

构建完成的集群镜像可以推送到标准镜像仓库中。由于其兼容 Docker 镜像仓库规范,因此可以存储到 Docker Hub、阿里云 ACR 或 Harbor 等平台。

常见使用场景

场景一:在已有服务器上安装

当目标环境已经具备可用服务器时,可以选择 Provider 类型为 BAREMETAL。此时通过编写 Clusterfile,即可描述目标节点与安装方式,再执行相应命令完成集群部署。

在这一模式下,Clusterfile 是整个安装过程的核心配置文件,用于定义节点信息、镜像来源及相关参数。

场景二:自动申请云服务器并完成安装

如果希望直接在云环境中创建基础设施并部署集群,可以使用云厂商 Provider,例如 ALI_CLOUD。配置 Clusterfile 后,再准备好对应的阿里云 AK/SK,即可自动申请资源并执行安装流程。

安装过程中,一些基础环境信息会被写入 Clusterfile,并保存在 /root/.sealer/[cluster-name]/Clusterfile 中,因此后续也可以基于这些信息对集群进行释放或管理。

自定义集群镜像

SealeR 还支持制作带有特定组件的自定义集群镜像。例如,可以基于现有镜像构建一个包含 dashboard 的版本。

在生成自定义镜像后,如果需要创建对应集群,只需沿用原有操作流程,并在 Clusterfile 中替换 image 字段为新镜像地址即可。

完成制作后,还可以将该集群镜像推送到镜像仓库,方便团队内部共享或提供给其他用户复用,从而提升交付效率与环境一致性。

项目地址:https://github.com/alibaba/sealer