新晋 CNCF 沙箱项目 OpenClusterManagement 带来了它的最新特性-阿里云开发者社区

开发者社区> 中间件小哥> 正文

新晋 CNCF 沙箱项目 OpenClusterManagement 带来了它的最新特性

简介: OpenClusterManagement(OCM)项目在 11 月 9 日的 CNCF 委员会会议中正式批准为 CNCF 的沙箱项目,并且也吸引了微软 AKS 研发同学的加盟。同时 OCM 社区也即将在 KubeCon 2021 中国的主题演讲里展开介绍 KubeVela 社区和 OCM 社区正在共建的集成特性。
+关注继续查看

作者 | 左修


OpenClusterManagement(OCM)项目在 11 月 9 日的 CNCF 委员会会议中正式批准为 CNCF 的沙箱项目,并且也吸引了微软 AKS 研发同学的加盟。同时 OCM 社区也即将在 KubeCon 2021 中国的主题演讲里展开介绍 KubeVela 社区和 OCM 社区正在共建的集成特性。


分布式云正在成为云计算行业的趋势。从用户的角度认识所谓分布式云就是可以根据基础实施拓扑形式和功能需求选择合适的社区项目方案和集群管理模式获取流畅的用户体验,同时从云厂商的角度就需要在技术服务上主动适配开放的技术标准并且在一致性通过的前提下兼容其他厂商的技术方案。所以评价分布式云混合云技术方案的开放性的重要指标之一就是项目的厂商中立性和开放性,然而实践上中立性的目标是比较理想化的因为每个厂商都需要跟随本身的商业利益,所以回到混合云技术方案上我们需要重点建设的指标是在开放性,反过来绑定终端用户恰好是与分布式云的初衷背道而驰的。


下面要展开介绍 OCM 项目是个开源开放的 Kubernetes 多集群管理平台项目,目前由阿里云,红帽以及微软等公司跨厂商联合推动。在宏观架构设计上 OpenClusterManagement 主要采用了自治管理架构,同时功能组件高度模块化可剪裁。这样而来终端用户可以根据实际的场景灵活安装拆卸自己所需要的部分模块,举个例子如果用户需要采用某个厂商的功能那么只需要在 OCM 上通过订阅插件快速安装厂商的服务,同时如果用户不再需要某模块了就可以干净地拆卸掉。换言之,一个最小的 OCM 安装模式下,OCM 只会提供精炼的集群元数据以证书管理等基础功能。


01 新的子项目 Cluster-Gateway


1、Endpoint-less 的多集群 API 网关框架 / Cluster-Gateway


Cluster-Gateway 由阿里云主要贡献的 OCM 新晋子项目,也即将引用在阿里云在云栖大会亮相的 ACK 敏捷版项目中。


OCM 在自管理模式下不会再要求被托管集群提供任何形式的 API 访问入口及证书,但是实践上我们往往仍然迫切需要一个从中枢集群动态正向访问各个集群的工作链路,同时这个链路需要考虑分布式云 VPC 网络隔离的问题,甚至被托管集群有的情况下不具备开放网络出口的条件。


在 OCM 里 Cluster-Proxy 这个神奇的特性可以帮助你在中枢集群和被托管集群之间没有任何正向网络连通性的情况下使得 API 请求能从中枢集群正确抵达被托管集群,甚至 Exec,Logs 等复杂请求也可以正常工作。这得益与 Kubernetes 社区在 Apiserver-Netwrok-Proxy(ANP)项目上积累的经验:https://github.com/kubernetes-sigs/apiserver-network-proxy


通过上述 OCM 的插件开发框架(Addon-Framework),Cluster-Proxy 可以帮你托管维护滚动 ANP 的 Server 端和 Agent 端的 TLS 证书并同步两者之间的配置。

在网络连通性稳定工作之后,再借助于下面 Kubernetes 社区的 Aggregated Apiserver 开发框架 Apiserver-Runtime,我们联合 KubeVela 社区为 OCM 开发了 Cluster-Gateway 项目以提供一个自定义资源及”/proxy”子资源,它就像 Kubernetes 原生的”pods/proxy”, ”services/proxy”一样工作:https://github.com/kubernetes-sigs/apiserver-runtime


这样一来 Cluster-Proxy 提供了四层的网络链路,Cluster-Gateway 提供了七层的网络多集群路由,于是整体的 API Push 链路就可以完整工作了。详细信息可以参考下图:

image.gif1.png

该特性本身借助于 OCM 的插件框架简化了 ANP 的部署及证书滚动等繁冗的事情,这些细碎平凡的工作恰恰是构建多集群平台最先需要解决的通用问题,也是多集群平台能简易敏捷工作的基础。一句话来说,我们可以把最枯燥的事情交给 OCM,然后再由你来定义 OCM 的功能上限。


>> 更多关于 OCM 最新插件 cluster-proxy 的文档可以参考:https://open-cluster-management.io/getting-started/integration/cluster-proxy/

02


2、更多新特性


OpenClusterManagement 社区还有许多正在积极建设的特性模块等待你去体验发现,篇幅原因这里不能详细展开,可以参考的包括:


  • ManifestWork 资源下发的“订阅式”回流特性


  • 多集群策略配置下发的 Kustomize 集成


  • 多集群 Workload 弹性能力


  • 参与社区了解更多



02 OCM 能力回顾


  • 首页仓库:

https://github.com/open-cluster-management-io/OCM

  • 主题站点:

https://open-cluster-management.io/

  • 中文主题站点:

https://open-cluster-management.io/zh/


OpenClusterManagement 项目由 2020 年末开始走向公众,至今半年多来经过在蚂蚁金服大规模运维实践的打磨下逐渐走向稳定成熟。后续在吸引了阿里云,微软等厂商的登陆合作之后正式号召社区用户的使用和合作,并于最近正式被 CNCF 采纳为沙箱开源项目。以下为 OpenClusterManagement 项目的主要架构组成:

01

1、集群生命周期核心控制器 / Registration

https://github.com/open-cluster-management-io/registration


这是 OCM 里的最核心组件,用于控制管理集群的注册流程和元数据及其生命周期。显而易见集群的元数据本身是更上层能力的必需基础,其提供的集群元数据模型也是之上工作的各个模块的公共“协议”。值得一提的是 OCM 的集群元数据是极其简练的,甚至不包含任何被托管集群的证书密钥,这是得益于 Pull 模式天然排除证书管理的安全性和复杂性。此外 OCM 里的集群注册托管流程是基于“双向握手”认证的,并且在注册完成后在中枢 Hub 集群内会自动生成管理一个与被托管集群同名的命名空间作为工作空间。

02

2、持续稳定的资源下发能力 / Work

https://github.com/open-cluster-management-io/work


在各个集群对应的命名空间中我们可以通过 ManifestWork API 将期望的资源打包下发给被托管集群,值得注意的是在被托管集群中会持久化一份备份的资源 AppliedManifestWork API 以保证在出现网络分区或者中枢离线的情况下被托管集群依然可以持续的维持期望的状态。通过 Kubernetes 社区多集群工作小组的决议 Work API 即将会被推为社区标准。

03

3、动态集群拓扑路由能力 / Placement

https://github.com/open-cluster-management-io/placement


完全解耦模块化的多集群路由策略模块。在使用时通过对集群分组或者进一步筛选指定集群的标签之后,Placement 控制器就会动态计算出路由策略的计算结果即一份被匹配的集群列表。这份列表会根据集群的可用性以及其他卫星属性动态变化。用户可以基于 Placement 控制器自由开发属于自己的多集群高级特性例如多集群 Workload 下发等等。此外在 OCM 里集群的标签也分为普通的静态标签/Label,以及由被托管集群采集上报的动态标签/ClusterClaim,这些都可以作为多集群路由策略的信息输入。

04

4、开放模块插件管理框架 / Addon-Framework

https://github.com/open-cluster-management-io/addon-framework


OCM 的插件框架提供了一系列好用的工具来辅助你开发属于自己的多集群功能特性,这样一以来你就不再需要重复处理繁杂的组件部署,中枢与被托管控制器的联动以及证书滚动等等劳动了,我们可以更专注在构建自己需要的定制功能特性本身。

05

5、更多可选模块功能


除了以上稳定工作的核心组件,OCM 还提供了多集群配置策略的下发,基于 Helm 的多集群的生命周期管理以及和 KubeVela 的集成等等进阶模块等你体验。


03 如何参与社区


随时欢迎参与我们的社区双周会,在这里关注会议及日程:https://github.com/open-cluster-management-io/community/projects


我们的会议时间会动态调整因为横跨涉及中国欧洲美国东西部的协调,或者可以直接在我们的 slack 频道寻找伙伴:https://kubernetes.slack.com/archives/C01GE7YSUUF


点击下方链接,快速浏览我们最新的 OpenClusterManagement 中文站点。

https://open-cluster-management.io/zh/

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
艾伟也谈项目管理,ERP项目实施要未雨绸缪不要亡羊补牢
  在ERP项目中,要做到在项目实施的未雨绸缪,不会出现亡羊补牢的情况就需要项目管理和实施人员在项目推进过程中队下面的阶段进行预测,把握好发展的趋势,掌握项目的主动权。下面就提出一些建议,供大家讨论。希望对大家有用。
757 0
RyuBook1.0案例二:Traffic Monitor项目源码分析
RyuBook1.0案例二:Traffic Monitor项目源码分析
1322 0
2010年信息系统项目管理师上午试题应试策略
   2010 年信息系统项目管理师上午试题应试策略 一.咬文嚼字; 二.注意分类,分清阶段; 三.注意题干是选择正确的,还是错误的; 四.牢记各个过程的工具和技术是什么; 五.牢记各个过程的输入和输出; 六.多看历届的试题; 七.严格把握定义,注重理解定义; 八.记住管理过程的流程以及先后顺序; 九.抓题眼; 十.注意区分各个属性以及包括的定义。
594 0
.NET项目web自动化测试实战——Selenium 2.0
PS:这次用公司的项目来练手,希望公司不会起诉我,因为我绝对是抱着学习的态度,没有任何恶意。仅供交流学习。 该项目是基于SharePoint平台所开发的门户网站,为了切身感受一下Selenium 2.0我决定自己动手写一个自动化测试用例,而不是通过录制的方式,以加深我对一些web操作的理解。
683 0
JavaWeb项目的中文乱码的原因以及Servlet中处理GET请求和POST请求编码过滤器
一、乱码原因 ①传输方和接收方采用的编码不一致。传输方对参数采用的是UTF-8编码而接收方却用GBK进行解析,当然是乱码。 ②Tomcat服务器默认采用的ISO8859-1编码得到参数值。虽然①中采用了同样的编码方式,但经过tomcat一处理,也会出现乱码(GET方式)   二、解决办法 方法一 每次传输都手动设置编码(GET方式传输数据) 传输方 String name =
1282 0
Java Groovlets和普通的Web项目集成
由于Groovy动态语言的方便性,如果想在普通的web项目中集成有两个选择 使用基于groovy的Grails框架,非常的方便,适用于新建的项目 使用groovy本身集成,适用已有项目的维护(毕竟按照grails的约定升级一个项目对于大的项目还是有很多的工作量的) 下文把实际涉及的一个项目维护使用groovy的过程总结一下: Web.
722 0
【MyEcplise】导入项目后,会定时弹出一下错误MyEcplise tern was unable to complete your request in time.This couble happen if your project contains several large javaScr
Myecplise弹出错误如下:   错误代码: MyEcplise tern was unable to complete your request in time.This couble happen if your project contains several large javaScript libraies.
985 0
idea新建maven项目时,mvn archetype:generate 速度缓慢
原文 idea新建maven项目时,mvn archetype:generate 速度缓慢 1 现象: 用IDEA新建maven项目,填写完各种参数,创建时,控制台卡在“[INFO] Generating project in Batch mode”处: 同时,右下方状态栏处,显示创建过程仍在进行: 2 原因 IDEA根据maven archetype的本质,其实是执行mvn archetype:generate命令,该命令执行时,需要指定一个archetype-catalog.xml文件。
987 0
+关注
中间件小哥
阿里中间件(Aliware)官方账号
1062
文章
51
问答
来源圈子
更多
阿里云中间件主要有包含这么几个: 分布式关系型数据库DRDS_水平拆分 做数据库扩展性的 、消息队列MQ 是做消息的中间件、企业级分布式应用服务EDAS 做分布式服务的、还有一些其他的中间件,比如配置服务、缓存等等。
+ 订阅
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载