在提倡数字化转型的时代背景下,企业业务快速发展,跨区域的多云集群成为数据中心建设的基础架构,多区域容灾与多活、大规模多集群管理、跨云弹性与迁移等需求场景随之出现,如何统一管理多云多集群下的 Kubernetes 应用,将云原生下沉实现云边端一体化,成为了国内外技术厂商和云原生社区努力实现的目标。
为了让开发者、用户在多集群和混合环境下也能像在单个 Kubernetes 集群平台上一样,使用自己熟悉的开源项目和产品轻松开发功能,开源商业巨头红帽公司联合蚂蚁、阿里云共同发起并开源了 Open Cluster Management(OCM,开放集群管理)项目。
OCM 是一个由开源社区驱动的混合云多集群管理平台,开发者可以通过 OCM 简单开放的 API 来实现集群的注册,工作负载分发,以及动态的资源配置路由等功能。
OCM 架构图
OCM 总结了多集群管理所需的基础概念,采用了 hub-agent 的架构,定义了多项多集群管理的原语和基础组件来达到多集群管理的要求:
通过利用 OCM 的 API 原语,简化了开源多集群管理项目的部署和运维,拓展许多 Kubernetes 的单集群管理工具的多集群管理能力。例如:
OCM 还通过内置的两个管理插件分别用来进行应用部署和安全策略管理。其中应用部署插件采用了订阅者模式,可以通过定义订阅通道(Channel)从不同的源获取应用部署的资源信息。
在最近更新的 0.5.0 版本中,OCM 还发布了命令行工具 clusteradm 的第一个版本。clusteradm 受 kubeadm 的启发,主要目的是简化 OCM 组件的安装和集群注册。用户可以通过运行“clusteradm init”命令在中心集群上部署 OCM 管理组件,并使用“clusteradm join”命令在被管理集群部署 OCM 本地组件,并将集群注册到中心集群。clusteradm 也在不断发展,后续还会加入更多的 OCM 管理和监控子命令。