查看原文
其他

基于 Clusternet 与 OCM 打造新一代开放的多集群管理平台

云原生团队 腾讯云原生 2022-03-18

背景

随着 5G、物联网设备的爆炸性增长以及智能终端不断增强的计算能力,带来了前所未有的数据量,传统的中心集中式计算捉襟见肘。“新基建”战略的实施,工业互联网、车联网/自动驾驶、智慧交通、云游戏及 VR/AR 等标杆应用引领产业融合,企业上云常态化,催生出分布式云,混合云,边缘云等概念。Gartner 预计到2025年,超过 50% 的组织将在其选择的地点使用分布式云选项,从而实现业务模型转型。企业生成的 75% 的数据将在传统数据中心或云之外的,更接近最终用户的边缘创建和处理。
云计算行业正在迎来了新一轮的增长,国内外厂商和开源社区率先行动,分别发布并开源了 Open Cluster Management (OCM)  项目和 Clusternet 项目,统一管理多云多集群下的 Kubernetes 应用,将云原生下沉实现云边端一体化。基于 OCM 与 Clusternet 打造新一代开放的多集群管理系统,管理从中心到边缘,从机房到终端的“集群网络”。

Clusternet

Clusternet ( Cluster Internet )  是腾讯开源的多集群和应用管理软件,无论集群是运行在公有云、私有云、混合云还是边缘云上,Clusternet 都可以让您像在本地运行一样管理/访问它们,用 Kubernetes API 集中部署和协调多集群的应用程序和服务。通过 Addon 插件方式,用户可以一键安装、运维及集成,轻松地管理数以百万计的 Kubernetes 集群,就像访问 Internet 一样自由便捷。


Clusternet 面向未来混合云、分布式云和边缘计算场景设计,支持海量集群的接入和管理,灵活的集群注册能力可以适应各种复杂网络条件下的集群管理需求,通过兼容云原生的 Kubernetes API 简化用户的管理和运维成本,加快用户业务的云原生转型。

Clusternet 为用户提供:

一站式管理各类 Kubernetes 集群

Clusternet 支持 Pull 模式和 Push 模式管理集群。即使集群运行在 VPC 内网中、边缘或防火墙后时,Clusternet 仍可建立网络隧道连接管理集群。

支持跨集群的服务发现及服务互访

在无专网通道的情况下,仍可提供跨集群的访问路由。

完全兼容原生 Kubernetes API

完全兼容 Kubernetes 的标准 API,比如:Deployment,StatefulSet,DaemonSet,同时也包括用户自定义的 CRD 等,用户从单集群应用升级到多集群只需做简单的配置,无需学习复杂的多集群 API。

支持部署 Helm Chart、Kubernetes 原生的应用以及自定义的 CRD

支持 Helm chart 类型应用,包括 Chart 的分发、差异化配置、状态的汇聚等,和原生 Kubernetes API 的能力一致。

丰富、灵活的配置管理

提供了多种类型的配置策略,用户可灵活的搭配这些配置来实现复杂的业务场景,比如多集群灰度发布。

Addon 能力,架构简单

采用了 Aggregated ApiServer 的方式,且不依赖额外的存储,架构简单,便于部署,大大降低了运维复杂度。

便捷接入

Clusternet 提供了完善的对接能力,支持 kubectl plugin[1] 以及 client-go[2],方便业务一键接入,具备管理多集群的能力。

OCM ( Open Cluster Management )

OCM (Open Cluster Management) 是一个社区驱动的项目,专注于 Kubernetes 应用的多集群和多云场景。OCM 旨在简化部署在混合环境下的多 Kubernetes 集群的管理工作,为 Kubernetes 生态圈不同管理工具拓展多集群管理能力。OCM 总结了多集群管理所需的基础概念,采用了 hub-agent 的架构,定义了多项多集群管理的原语和基础组件来达到多集群管理的要求:
  • 通过 ManagedCluster API 定义被管理的集群,同时 OCM 会安装名为 Klusterlet 的 agent 在每个集群里来完成集群注册,生命周期管理等功能。

  • 通过 Placement API 定义如何将配置或工作负载调度到哪些集群中。调度结果会存放在 PlacementDecision API 中。其他的配置管理和应用部署工具可以通过 PlacementDecision 决定哪些集群需要进行配置和应用部署。

  • 通过 ManifestWork API 定义分发到某个集群的配置和资源信息。

  • 通过 ManagedClusterSet API 对集群进行分组,并提供用户访问集群的界限。

  • 通过 ManagedClusterAddon API 定义管理探针如何部署到多个集群中以及其如何与 hub 端的控制面进行安全可靠的通信。

通过利用 OCM 的 API 原语,简化了开源多集群管理项目的部署和运维,拓展许多 Kubernetes 的单集群管理工具的多集群管理能力。例如:
  • 简化 submariner 等多集群网络解决方案的管理。利用 OCM 的插件管理功能将 submariner 的部署和配置集中到统一的管理平台上。

  • 为应用部署工具(KubeVela, ArgoCD 等)提供丰富的多集群负责调度策略和可靠的资源分发引擎。

  • 拓展现有的 Kubernetes 单集群安全策略治理工具(Open Policy Agent,Falco 等)使其具有多集群安全策略治理的能力。


OCM 还通过内置的两个管理插件分别用来进行应用部署和安全策略管理。其中应用部署插件采用了订阅者模式,可以通过定义订阅通道(Channel)从不同的源获取应用部署的资源信息。

Clusternet 与 OCM 结合迸发更强大能力

通过上文介绍可以看出,Clusternet 有着强大的集群接入和管理能力,支持各种复杂场景下的海量集群注册和管理,满足对未来混合云、分布式云和边缘计算的平台管理需求。同时,OCM 有着成熟的多集群应用管理能力,通过多项多集群管理的原语和基础组件,实现各种 Kubernetes 项目和应用的多集群发布和管理。二者结合实现优势互补,强强联合,提供更为强大的多集群和应用治理能力。
如何将 OCM 与 Clusternet 的能力相结合,来自 Redhat 的社区开发者 (github: skeeey[3]) 实现了 clusternet-addon[4],基于 OCM 的 Addon-Framework[5],展示了 OCM 可以借助于 Clusternet 提供的强大集群管理能力,实现通过 RBAC 对子集群进行访问、通过 Push 模式分发应用到多个子集群中等。OCM 社区将与 Clusternet 社区紧密合作,将与 Clusternet 项目的集成作为一个子项目持续推进。

感兴趣的同学可以查看 clusternet-addon[6] 了解更多信息,或持续关注 OCM 和 Clusternet 项目社区获取最新的动态。

参与社区

OCM 与 Clusternet 项目是 Red Hat 红帽软件,Tencent 腾讯云与合作伙伴开源的重要项目,二者的结合展现了下一代开放的多集群管理平台的强大能力和无与伦比的扩展性,为未来各种新技术、新业态和新服务提供了坚实的平台基础和无限的可能性。

Clusternet 项目已发布 v0.3.0 版本,支持多集群和应用管理的多种特性,随着 Clusternet 的不断迭代,未来将为用户提供更加完备和强大的能力。

OCM 项目和 kubernetes 生态系统紧密结合,实现了 kubernetes sig-multicluster 的多个设计方案,包括 KEP-2149 Cluster ID [7]
和 KEP-1645 Multi-Cluster Services API 中关于 clusterset 的概念[8] 。也在和其他开发者在社区共同推动 Work API [9]) 的开发。
OCM 与 Clusternet 项目仍在快速的开发迭代,欢迎行业公司和社区开发者们共同参与,交流学习,共建未来更加开放,充满无限可能的云世界。

链接

- OCM 项目地址: https://github.com/open-cluster-management-io
- OCM 官网地址: https://open-cluster-management.io
- Clusternet 项目地址: https://github.com/clusternet/clusternet

参考资料

[1]

kubectl plugin: 【https://github.com/clusternet/kubectl-clusternet】

[2]

client-go: 【https://github.com/clusternet/clusternet/blob/main/examples/clientgo/READEME.md】

[3]

skeeey: 【https://github.com/skeeey】

[4]

clusternet-addon: 【https://github.com/skeeey/clusternet-addon】

[5]

Addon-Framework: 【https://github.com/open-cluster-management/addon-framework】

[6]

clusternet-addon: 【https://github.com/skeeey/clusternet-addon】

[7]

KEP-2149 Cluster ID: 【https://github.com/kubernetes/enhancements/tree/master/keps/sig-multicluster/2149-clusterid】

[8]

clusterset 的概念: 【https://github.com/kubernetes/enhancements/tree/master/keps/sig-multicluster/1645-multi-cluster-services-api】

[9]

Work API: 【https://github.com/kubernetes-sigs/work-api】





  往期精选推荐  

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存