开放模块化多集群管理平台OCM

本文涉及的产品
任务调度 XXL-JOB 版免费试用,400 元额度,开发版规格
应用实时监控服务-应用监控,每月50GB免费额度
容器镜像服务 ACR,镜像仓库100个 不限时长
简介: OCM(开放集群管理)是CNCF官方的多集群开源云原生项目,主要由红帽,阿里云,微软等多个云厂商共同推动。本次分享主要介绍OCM的架构与功能、OCM近期的新特性以及OCM与KubeVela的集成。

作者:金敏(左修)


摘要:OCM(开放集群管理)是CNCF官方的多集群开源云原生项目,主要由红帽,阿里云,微软等多个云厂商共同推动。本次分享主要介绍OCM的架构与功能、OCM近期的新特性以及OCMKubeVela的集成。


1.png


分享人:金敏(左修),OCM维护者,阿里云开发工程师,Kubernetes 维护者及多个子项目管理员,2019欧洲/2019北美/2020北美/2021中国 KubeCon 讲师,Kubernetes APF 特性发起人/作者,Kubernetes Java/Spring Cloud Kubernetes维护者。

 

目录


Ÿ   概述

Ÿ   为什么从单集群到多集群

Ÿ   OCM主要架构/功能介绍

Ÿ   OCM近期特性介绍

Ÿ   OCM与KubeVela的集成


正文


一、概述

 

Open Cluster Management简称OCM,是开放模块化的多集群管理,所谓的集群是指Kubernetes集群。OCMCNCF云原生sandbox项目之一,最开始从红帽的Advanced Cluster Management的商业化产品中沉淀出来的平台,随后有阿里云、支付宝、Microsoft Azure、腾讯的加入,目前支付宝内部PaaS平台已经有OCM落地的产品,在阿里云专有云中,OCM也会成为阿里云CNStack非常亮眼的一部分,下面从一个使用者的场景角度阐述为什么要从单机群到多集群、OCM主要架构和功能介绍以及OCM近期的动态。

 

二、为什么从单集群到多集群

 

在云原生相关技术实践过程中,随着实践规模的慢慢扩大,单个Kubernetes集群规模已无法支撑,需要过渡到多集群的方案上。在一年前,OCM还是非常新的项目,所以活跃度比较低,随着近期越来越多的伙伴加入,也基于OCM开发一系列的特性,KubeVelaOCM也已经有一些集成(如多集群的应用下发)。


KubeVela核心组件都是和OCM共用的,OCM可以在多集群KubeVela的基础上,执行面向生产更稳定的任务(如证书的滚动、自动拓补发现)。那么单集群有哪些瓶颈呢?

 

1、单集群瓶颈

 

a.  跨机房/地域Etcd运维问题


首先是跨机房跨地域Etcd运维的问题,在轻量规模的K8s运维里,一个Kubernetes集群可以看作是Etcd上面无状态的应用,大部分情况K8s的运维的问题,是取决于Etcd的运维问题;


Etcd有地域化配置的一些硬性要求,包括两个机房之间的延迟,如果地域比较远,将面临Etcd要拆分进行部署,如跨机房跨地域,因为Etcd要拆分进行部署,所以对应的k8s集群也需要进行重新规划,另外在生产运维过程中也随着K8s的规模增长而遇到Etcd请求压力的瓶颈。

 

b.  Kubenretes“可用性半径控制问题


其次单机群的一个瓶颈是可用性半径控制问题,在K8s里面虽然有Namespace的概念,在设计上希望能够通过Namespace描述这样的租户隔离性,比如应用1应该部署在Namespace1,应用2部署在Namespace2,但事实上K8s原生的隔离性还未达到期望,此外即使达到了理想的隔离状态,但还需要预防一些不能预知的灾难(如k8s升级/运维/宕机事件),为了能够最简单方式隔绝这些问题,就需要进行可用性半径控制,也就是经常提到的爆炸半径控制(比如在成都有个机房,上海有个机房,分别部署一套K8s,在地域化推荐的服务中也可以通过每个地域一套集群使得各自可用性不会出现冲突和相互牵连)

 

c.  原生Kubernetes租户级别隔离性不足


最后是K8s内部原生租户级别的隔离性不足,在多集群之外,还有一个并行的工作小组叫做多租户,多集群和多租户要解决的问题是同质的,而多集群解决隔离性是采取一种更温和的方式:充分尊重单个集群K8s,不修改源代码,在控制平面进行对应K8s集群的管理,可以灵活的接管或者踢出一个集群。所谓的多租户形态的集群管理,目标是能全透明的将各个集群的信息映射/收集回中枢控制面中再进行统一的管理。

 

2、多集群用户场景


a. 集群级别的弹性扩容


目前多集群应用的场景也有很多,首先是集群级别的弹性扩容,如阿里云上双11的弹性大促和扩容;类似场景还有机房级别的弹性迁移,如在多机房迁移或者运营商的切换等情况下,需要进行集群级别的迁移,这种情况下需要多集群的控制平面,去管理和衔接其中的复杂性。

 

b. 沙箱测试演练环境的扩容


其次,具备沙箱测试演练环境的扩容,在实际工作中需要各类环境,如集成测试、普通CI测试等等,将这样的环境进行隔离可以通过多集群扩展的方式。随着工具链(类似K8s集群级别的弹性扩容)在一步一步的发展成熟,把测试环境通过多集群进行管理,也是水到渠成的事情。

 

c. 广地域基础设施运维


再者,广地域基础设施运维场景,由于地域和地域之间存在物理级别的网络延迟,所以在选择进行基础设施规划的时候,就没有太多选择的空间。一般根据是否建设专线等等物理条件直接决定多集群规划拓扑。

 

d. 多云多服务商环境灵活性


多集群让用户在选择多云多服务商环境更加具有灵活性。

 

e. 跨团队/组织集群间协作


最后,跨团队跨组织集群间协作问题,单个的K8s集群总会遇到问题进行追责,在可观测性建设不完整的情况下,可以将某个集群分配给某个团队进行管理。

 

3、评价软性指标

 

评价OCM指标有哪些呢?

 

•   首先最重要的是基础设施依赖性和耦合性,在多集群的场景里,有个多集群的中枢的大脑,去任意非常灵活的管理不同的集群,而在接管集群之前不会预设太多的依赖;


•   其次,OCM的可扩展性希望做到像搭积木一样,可以灵活的将所需的资源加进来,不需要的资源踢出去,具有热插拔性和可剪裁性,而开放性方面不会在功能上对厂商预设限制;


•   最后,厂商的中立性,不会夹带任何的厂商级别的互斥,可以实现多个厂商云之间灵活切换。

 

三、OCM主要架构/功能介绍

 

1、主要架构

 

2.png

OCM的架构图

 

首先,在K8s架构中,K8s有一个控制节点叫kube-master(包括SchedulerApiserverController manager等组件),将节点注册到master里,在这个过程中,Node是通过List Watch是从远端控制面里把对应的元数据信息(如PodNode)拉取下来,所以这是一个经典的Pull的架构模型。在原生的K8s里面有Kubemaster,还有Kubelet,在OCM里面对标是:Hub Cluster 对标KubemasterKlusterlet对标Kubelet,将K8s集群当原子的黑箱看成Klusterlet,在运维OCM多集群管控面的集群时,其实就是在像运维某个Node一样运维单个Kubernetes群,该架构是天然模仿Kubernetes的架构也就是基于Pull模型。

 

2、主要概念

 

在了解HubKlusterlet这两个核心的概念后,目前OCM支持的核心功能是什么呢?

 

a. ManagedCluster/逻辑托管集群


首先是ManagedCluster即逻辑托管集群,无论是集群在接管流程上的灵活性,还是对基础设施的耦合性、依赖性均是面向ManagedCluster模型进行操作的,然后被托管集群注册到OCM中枢上,在中枢里就可以操作ManagedCluster模型以及查看对应的集群级别的的元数据;

 

b. ManifestWork/资源下发


当多个集群注册到OCM中枢上,就可以面向多个ManagedCluster进行下发资源,在下发资源的过程中,需要拟定义一个ManifestWork的资源,在Work API中定义需要下发内容,例如要下发Deployment应用与对应的Service,将其打包到API里并与ManagedCluster建立对应关系,就可以在对应集群上发布标记的资源。目前ManifestWork已经是社区中公共的标准;

 

c. Placement/多集群路由


第三个功能是Placement,即多集群路由或者称为多集群的匹配或调度,如何将下发的资源与对应的集群进行关联,将需要定义的资源关联到一个路由策略上,这个路由策略决定了将这组资源复制或者粘贴到哪些集群上面;

 

d. Add-On/插件


Add-On插件是为了提高多集群的可扩展性,类似K8sControl Runtime,是面向开发者自定义Operator Controller的一个框架。

 

3、集群纳管

 

3.png

 

如上图是被纳管的集群接入到OCM中枢的场景,首先需要规划出中枢集群,在中枢集群里执行命令Clusteradm join操作,生成渲染后的指令,将其复制在被纳管集群里执行,这样被纳管的集群就注册成功了。OCM注册流程是不互信的,需要双向握手,类似于TCP握手,不仅需要被纳管的集群向中枢集群发起接管的请求,还需要中枢集群去批准这个请求。

 

四、OCM近期特性介绍

 

1、插件框架/Addon-Framework

 

插件框架具备以下特性:


a. 自由扩展;

b. 自由拆卸;

c. 持续运维和升级;

 

4.png

 

2、Knnoectivity多集群隧道/Cluster-Proxy

 

Knnoectivity是K8s原生的技术,用来解决控制面网络与节点网络不在同一平面问题,利用网络隧道技术可以跨越任何网络拓扑,解决了在多集群中枢网络平面向被托管集群网络平面推送请求时需要的证书、网络IP等问题。

 

5.png

 

3、多集群资源状态回流

 

下图是多集群资源状态回流的yaml文件。


6.png

 

4、可扩展的基于评分的多集群调度

 

可扩展的基于评分多集群调度是基于打分机制将不同的应用部署到不同的集群中,适应于多集群细粒度调度、主备容灾等场景。


7.png

 

五、OCM与KubeVela的集成

 

8.png

 

KubeVela是应用下发的一个控制面,OCM组件中Cluster Gateway,是通过K8s原生机制拓展出来的,K8s里有Port ProxyNode Proxy等组件,在多集群中引申出Cluster Proxy这样的资源。

 

9.png

 

如上图,用户在中枢集群里面,需要访问被纳管的集群,Cluster Gateway会将中枢集群与被纳管集群的进行网络打通,通过Cluster GatewayKnnoectivity隧道做原生的集成,屏蔽掉中枢集群与纳管集群网络的复杂性,解决了多集群网络连通性问题。

 

10.png


如上图,在KubeVela1.2版本中提供了安装OCM的快捷入口,OCM是基于Pull指令的架构,可以通过安装插件实现类似流量推送的功能。

相关实践学习
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。     相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
存储 缓存 Java
Infinispan篇(一):一个被遗忘了的分布式集群缓存系统
Infinispan 是一个开源内存数据网格,提供灵活的部署选项和强大的数据存储、管理和处理功能。
2386 0
|
消息中间件 缓存 监控
系统稳定性建设实践总结
2020年,注定是个不平凡的一年。疫情的蔓延打乱了大家既定的原有的计划,同时也催生了一些在线业务办理能力的应用诉求,作为技术同学,需要在短时间内快速支持建设系统能力并保障其运行系统稳定性。恰逢年终月份,正好梳理总结下自己的系统稳定性建设经验和思考。
系统稳定性建设实践总结
|
弹性计算 运维 网络协议
揭秘云网络大会“网红”:阿里云自研高性能网关XGW
XGW是洛神云网络平台的硬件转发层核心,提供了高性能的网络转发能力,负责公网,专线和跨Region流量的汇聚和分发,满足用户大带宽、大单流、稳定性、低延时/低抖动等需求。
7379 0
揭秘云网络大会“网红”:阿里云自研高性能网关XGW
|
存储 运维 Kubernetes
【深度】阿里巴巴万级规模 K8s 集群全局高可用体系之美
台湾作家林清玄在接受记者采访的时候,如此评价自己 30 多年写作生涯:“第一个十年我才华横溢,‘贼光闪现’,令周边黯然失色;第二个十年,我终于‘宝光现形’,不再去抢风头,反而与身边的美丽相得益彰;进入第三个十年,繁华落尽见真醇,我进入了‘醇光初现’的阶段,真正体味到了境界之美”。
【深度】阿里巴巴万级规模 K8s 集群全局高可用体系之美
|
7月前
|
人工智能 安全 网络安全
三大运营商骨干网架构深度剖析:线路建设与用户体验
本文全面解析了中国三大电信运营商(中国电信、中国联通、中国移动)的网络架构及性能特点,涵盖骨干网技术、区域线路实测、应用场景优化及未来发展趋势。具体内容包括:中国电信的双网体系(163骨干网与CN2精品网)、联通的169网络与企业级A网、移动的新一代智能骨干网及其铁通网络现状。通过东亚、东南亚、欧洲等方向的实测数据,对比分析了各运营商在时延、带宽、稳定性等方面的表现,并结合企业组网、个人用户需求及安全成本提供了针对性建议。同时,文章展望了6G、量子通信和AI定义网络的技术前景,为企业和个人在网络选择中平衡性能、成本与风险提供了参考依据。
1269 23
|
弹性计算 Prometheus 监控
从自建开源 Prometheus 迁移到阿里云托管 Prometheus 服务
阿里云可观测监控 Prometheus 版提供高性能、高可用、全托管的监控服务,对接开源生态,支持 Kubernetes、ECS 等场景,解决了自建 Prometheus+Thanos 高成本、运维复杂的问题。本文讨论在各个典型场景下的迁移方案。
12343 185
|
存储 人工智能 自然语言处理
Lindorm作为AI搜索基础设施,助力Kimi智能助手升级搜索体验
月之暗面旗下的Kimi智能助手在PC网页、手机APP、小程序等全平台的月度活跃用户已超过3600万。Kimi发布一年多以来不断进化,在搜索场景推出的探索版引入了搜索意图增强、信源分析和链式思考等三大推理能力,可以帮助用户解决更复杂的搜索、调研问题。 Lindorm作为一站式数据平台,覆盖数据处理全链路,集成了离线批处理、在线分析、AI推理、融合检索(正排、倒排、全文、向量......)等多项服务,支持Kimi快速构建AI搜索基础设施,显著提升检索效果,并有效应对业务快速发展带来的数据规模膨胀和成本增长。
|
运维 Kubernetes Cloud Native
还在为多集群管理烦恼吗?OCM来啦!
在云计算领域如果还有人没听过 Kubernetes,就好像有人不知道重庆火锅必须有辣椒。Kubernetes 已经像手机上的 Android,笔记本上的 Windows 一样成为管理数据中心事实上的标准平台了。围绕着 Kubernetes,开源社区构建了丰富的技术生态,无论是 CI/CD、监控运维,还是应用框架、安全反入侵,用户都能找到适合自己的项目和产品。可是,一旦将场景扩展到多集群、混合云环境时,用户能够依赖的开源技术就屈指可数,而且往往都不够成熟、全面。
还在为多集群管理烦恼吗?OCM来啦!
|
SQL Prometheus 运维
Higress on K8s 5分钟开箱即用
Higress on K8s 5分钟开箱即用
Higress on K8s 5分钟开箱即用
|
存储 弹性计算 资源调度
K8S下一代设备管理机制:DRA
背景Kubernetes从1.8开始引入了Device Plugin机制,用于第三方设备厂商以插件化的方式将设备资源(GPU、RDMA、FPGA、InfiniBand等)接入Kubernetes集群中。用户无需修改Kubernetes代码,只需在集群中以DaemonSet方式部署设备厂商提供的插件,然后在Pod中申明使用该资源的使用量,容器在启动成功后,便可在容器中发现该设备。然而,随着Kuber
3720 2
K8S下一代设备管理机制:DRA