基于 Clusternet 与 OCM 打造新一代开放的多集群管理平台
背景
随着 5G、物联网设备的爆炸性增长以及智能终端不断增强的计算能力,带来了前所未有的数据量,传统的中心集中式计算捉襟见肘。“新基建”战略的实施,工业互联网、车联网/自动驾驶、智慧交通、云游戏及 VR/AR 等标杆应用引领产业融合,企业上云常态化,催生出分布式云,混合云,边缘云等概念。Gartner 预计到2025年,超过 50% 的组织将在其选择的地点使用分布式云选项,从而实现业务模型转型。企业生成的 75% 的数据将在传统数据中心或云之外的,更接近最终用户的边缘创建和处理。
云计算行业正在迎来了新一轮的增长,国内外厂商和开源社区率先行动,分别发布并开源了 Open Cluster Management (OCM) 项目和 Clusternet 项目,统一管理多云多集群下的 Kubernetes 应用,将云原生下沉实现云边端一体化。基于 OCM 与 Clusternet 打造新一代开放的多集群管理系统,管理从中心到边缘,从机房到终端的“集群网络”。
Clusternet
Clusternet ( Cluster Internet ) 是腾讯开源的多集群和应用管理软件,无论集群是运行在公有云、私有云、混合云还是边缘云上,Clusternet 都可以让您像在本地运行一样管理/访问它们,用 K8s 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
参考资料
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
>【腾讯云原生】云说新品、云研新术、云游新活、云赏资讯,扫码关注同名公众号,及时获取更多干货!!
![](https://img2020.cnblogs.com/other/2041406/202108/2041406-20210813125505764-1422188413.png)
基于 Clusternet 与 OCM 打造新一代开放的多集群管理平台的更多相关文章
- 基于zookeeper+mesos+marathon的docker集群管理平台
参考文档: mesos:http://mesos.apache.org/ mesosphere社区版:https://github.com/mesosphere/open-docs mesospher ...
- 基于Python+Django的Kubernetes集群管理平台
➠更多技术干货请戳:听云博客 时至今日,接触kubernetes也有一段时间了,而我们的大部分业务也已经稳定地运行在不同规模的kubernetes集群上,不得不说,无论是从应用部署.迭代,还是从资源调 ...
- Clusternet - 新一代开源多集群管理与应用治理项目
作者 徐迪,腾讯云容器技术专家. 汝英哲,腾讯云高级产品经理. 摘要 在过去的数年里,云计算领域经历了多次巨大的变革,当前越来越多的组织将应用部署在本地和云上的多个基础设施平台上,这些平台可能是两个公 ...
- 腾讯发布 K8s 多集群管理开源项目 Clusternet
11月4日,在腾讯数字生态大会上,腾讯宣布了云原生领域一项重磅开源进展-- K8s 多集群管理项目 Clusternet 正式开源. Clusternet 由腾讯联合多点生活.QQ音乐.富途证券.微众 ...
- 基于puppet分布式集群管理公有云多租户的架构浅谈
基于puppet分布式集群管理公有云多租户的架构浅谈 一.架构介绍 在此架构中,每个租户的业务集群部署一台puppet-master作为自己所在业务集群的puppet的主服务器,在每个业务集群所拥 ...
- Ignite集群管理——基于静态IP的节点发现
Ignite作为分布式内存,集群管理必不可少,Ignite支持基于组播,静态IP,Zookeeper,JDBC等方式发现节点,本文主要介绍基于静态IP的节点发现. 两个最重要的TCP通信设置类: 1. ...
- Spark运行模式_基于YARN的Resource Manager的Custer模式(集群)
使用如下命令执行应用程序: 和"基于YARN的Resource Manager的Client模式(集群)"运行模式,区别如下: 在Resource Manager端提交应用程序,会 ...
- 基于CentOS与VmwareStation10搭建Oracle11G RAC 64集群环境:3.安装Oracle RAC-3.6.集群管理命令
3.6. 集群管理命令 3.6.1. RAC的启动与关闭 oracle rac默认会开机自启动,如需维护时可使用以下命令: 关闭: crsctl stop cluster 停止本节点集群服务 crsc ...
- 基于kubernetes构建Docker集群管理详解-转
http://blog.liuts.com/post/247/ 一.前言 Kubernetes 是Google开源的容器集群管理系统,基于Docker构建一个容器的调度服务,提供资源调度 ...
随机推荐
- POJ 2826 An Easy Problem? 判断线段相交
POJ 2826 An Easy Problem?! -- 思路来自kuangbin博客 下面三种情况比较特殊,特别是第三种 G++怎么交都是WA,同样的代码C++A了 #include <io ...
- sed 大括号 sed {} 的作用详解
今天看别人写的脚本的时候,看到了sed -r {} 我看网上对于这个的记录比较少,所以就写了这篇随笔. 先看一下效果 cat test.txt image: qqq/www/eee:TAG ...
- 为什么要鼓励小型企业使用CRM系统
如果你是一家小公司的管理者,我相信你必须对工作流程.客户.市场销售.市场营销推广等业务流程进行总体规划和管理方法,这往往会使你的心有馀而力不足,引起 繁忙.心有馀而力不足.交流受到阻碍.管理方法和这样 ...
- 修改MySQL时区
说明: 1.Windows版本暂无发现问题 2.CentOS-Docker版本需要修改时区 通过sql命令临时修改 mysql> set global time_zone = '+8:00'; ...
- Spring:Spring注解大全
@Controller 标识一个该类是Spring MVC controller处理器,用来创建处理http请求的对象. @Controller public class TestController ...
- 可执行jar包在windows server2008下的自启动
最近要部署项目的服务端在windows server2008下面,所以把项目打包成可执行的jar包,然后希望它能开机自启动,毕竟每次都在cmd下输入java -jar xxx.jar才能启动太繁琐了. ...
- mybatis框架学习第一天
三层架构: 表现层:用于展示数据 业务层:处理业务需求 持久层:和数据库交互的 3.持久层技术解决方案: JDBC技术: Connecction PreparedStatement ResultSet ...
- MySQL 那些常见的错误设计规范
依托于互联网的发达,我们可以随时随地利用一些等车或坐地铁的碎片时间学习以及了解资讯.同时发达的互联网也方便人们能够快速分享自己的知识,与相同爱好和需求的朋友们一起共同讨论. 但是过于方便的分享也让知识 ...
- ARTS第十周
之前忘了发布 1.Algorithm:每周至少做一个 leetcode 的算法题2.Review:阅读并点评至少一篇英文技术文章3.Tip:学习至少一个技术技巧4.Share:分享一篇有观点和思考的 ...
- 【笔记】Python编程 从入门到实践 第二版(基础部分)
1 字符串相关函数 .title() # 将字符串每个单词的首字母大写 .upper() #不改变字符串变量的值 .lower() #不改变字符串变量的值 f"{var} ,字符串" ...