大家好 非常高兴你们有机会参加这次PCD的研调交流也非常感谢您 外方罗曼山的一些人动待会给我们这个机会我们今天带来这个分享的主要是Class A片在中国移动 排斤码平台上如何进行多继续的一个管理今天这个研调主题主要分为两大块一个是我来讲一下我们在整个技术里的一个应用背景以及一个实验成效我们后面会请我们的研发公司刘磊给大家做一个具体针对这个技术是怎么来实现的做一个详细的讲解发现了有点小问题首先说一下这个大的背景主要是我们现在在提这个算力网络那算力网络是非常大的一个概念首先它的这个提了一个非常好的一个愿意就是像使电影一样即开即用像网络无所无所网络无所无的算力不足不在智能无所无及的一个大的愿意当然这个对我们这个搞技术大家都知道这个愿意非常的美好但实验的一定是非常难的尤其是算力网络它在这个地域上跨度是非常大的在我们中文移动内部呢应该是大概是现在建设了14个大的资源池几十万的就是浮气愿意实现这么大规模的这个调度它的这个难度是非常高首先在这个浮气的数量型号 种类上都依购的差异非常大那这些不同的东西怎么做同一个调度这是一个大的挑战那第二个就是在这个算力的这个形态上有的是一种明面端这种多种多种这个这个位置上的这种形态差异还有呢就在这种X86AM架架上的差异还有呢就在于这种东西部地域上的这种差异所以我们呢是寄希望于用KBIS作为一个统一的标准来把这个底下不管是在地域上的还是分布上的还是形态上的差异所以一个偏异那么这样我们在上层调度的时候只针对可以只针对KBIS作为一个调度首先呢如果能达成这个那对我们这个调度能够实现一定的这个非常大的帮助那如果要想实现这个事那对我们的这个KBIS的自动化程度提升了非常高的要求那么我们传统过去的业务可能是按天或者是按几天这么一个时间去交付这么一个集群但是在这个算力网络这个使用场景地下那这样一个时间交付频率是肯定是达不到我们的要求的所以它对这个自动化程度有非常高的要求对于这个频率的电话有非常高的要求所以我们最后综合考虑下来可能觉得还是得用KBIS自动化这么一个机制但是KBIS自动化其实有很多的这个实现方式强调不了然后讲一下我们在这个KBIS上从最开始去提出这个理念也研究了很多的这个技术思路包括是用这个物理主机上去搭建KBIS也就是我们传统可能见到的这种通过用脚柄的方式在一堆物理主机上搭建KBIS这可能也是最常见的一个方式但是这个方式呢主要还是在于是对底层的依赖性比较强我们在AM上在X6上它所用的二级质所用的这网络插件等等这一系列的东西都是不一样的那面对不同的依购的话你还是需要不断的去准备这样的法径其实整个的复杂度还是非常高所以我们后来要探索那有没有可能KBIS的这种机制在KBIS提供的炮子里面再去管理一场KBIS那这个思考提出以后呢我们也选择不同的选择去实验比较像KBISKBIS的相对比较轻巧在别人计算当中有不少的用用那通过它来实现拉起一个小型化的KBIS这个是可以的但是KBIS毕竟它还不是一个KBIS在生产用用上还有很多地方不太一样所以后来我们又探索那有没有更接近与这个KBIS原生的KBIS那后来是用这个KBIS的问在这个拉起了不同的炮子当中当是一个小的讯画去载里面用不同的用这个网络插件把网络打通然后用KBIS的问通过配置的方式把他们去打通成一个机群但是这个成本后来发现也是非常的高主要还是在于是要管理的参数太多了而且我们这个不同的环境当中不同的网络当中它需要配置东西往往很难提取到一个共通的一个模板所以我们来说这个思路已经是接近于非常接近于原生的KBIS但操作版本还要表达那后来又看到有个KAN那这KAN它几乎就是利用了我们现在的这个KBIS的二金纸这些方式去拉起一个标准的KBIS但是它的这个有一个小的问题主要还是它是把这个KBIS塞在一个炮子当中那我们在生产用的时候一个炮子你不管把那个对个型号炮得再大依然不能满足这个稳定性和生产的一些共同特性但是作为测试或者掩饮来使用这个一点之后所以我们还是要继续去往下走那后面呢又研究了一些这个像这个COS等等这样的一些方案那最终呢我们是把这个模板锁定在这个KAN当然这个整个过程其实也比较长最开始我们是从20年左右开始做P3S然后20年左右开始做这个KAN的这一块那么到20年的时候已经基本上确定了就转到这个COS IT那所以通过这个几年大概两年左右的时间经过这几种的不同技术方案那最后呢我们还是选定还是要以这个COS IT为作为一个标准的一个通过口来打爆我们这个机讯搜化那最终呢我们是实现的是这个结合原生虚拟化技术在物理主机上先把虚拟机拉起来当然它这个拉起来主要是一个炮子然后用COS IT来实现做一个机群那在这个具体的使用上呢也有了一个比较好的效果主要是在这个自然利用率这一块上像我们现在单台服务器基本上内存能够达到80%多的生率那么CTO呢基本上也能达到40%到60%左右那么这个项目对于单台服务器这个性能的压榨来说已经是比较好而且在这个单台服务器的这个承担能力上那么我们之前做过一个实验最多是9台服务器能承担到200多个虚拟化的这个接点那这200多个虚拟化接点呢几乎能构建出100多套或者是8910套这样的P8S机群那这个规模使用上来说已经比较合适了而且在这个构建的这个速度上大概是70-80秒到几分钟左右吧最快的时候70-80秒就能拉起一套非常完整的生产机的P8S机群那么这个速率相对有我们之前在几天的时间准备一个服务器机群有了巨大的提升而且这样的话已经基本上能够满足我们原来在算力网络提到的机开机用这样一个设想那么如果说我们想机开机用水龙头拧了但是两天以后才能出水这肯定是大家所不能接受的但是有了这套机水以后能让我们在这个短时间内拉起一套生产机的一个机群所以我们认为这个效率上还是有一个非常大的提升而且现在在我们这个眼睛的过程当中首先是面向的这个开发调试反应包括刚才前面阿里云的同事也提到这个ASM他在用的时候还是需要不同的环境那这些不同的环境也是需要有这个比较快的速度来拉起相对来说会提升一些效率所以我们首先用的这个开发环境后面的途径也引力到了在生产环境地区的运行支撑在这个管式这个开发环境还是这个生产运行环境整体的这个开发效率机型的运行效率都有了一个非常大的一个提升那最主要一点是这个KBS这个管理效率带来的这种提升通过KLSIP我们可以批量规模化的管理KBS机群原来不管是通过脚本还是通过其他手段只能是相对数量有限的进行KBS管理那这样的通过KLSIP我们可以把整个机群的生命周期完全拉到我们统一管理下它的交付效率得到了大幅提升也就是说每一个机群的交付成本得到了非常高的一个降低那得益于这个KBS交付成本的降低那我们可以做更多的事情尤其是移类应用作为一个机群进行一个调度因为我们在算力的时候广上当中其实很多时候可能是类似于Soilite这种方式也就是业务它更关注它的业务去怎么应用抵得自愿交给我们来提供但是对我们来说在动作细算或者调度的广上当中我们不仅仅是要把这个环境给它准备好还要把应用仪一样给它拉起来把流量切换过去但是这一整套的东西其实最主要的还是得实现一个其实难度非常大所以我们想着就把这个一整套的东西都塞到一个机群里面去机群我可以做自动化应用我也可以通过PTOPs做一个自动化那这两者的强奖结合起来应该来说还是相对比较简单所以我们现在也在这方面做一些探索那么前面的主要就是讲一下我们对于classic的一些思考以及它在我们具体的时间当中的一些应用价值那么下边的时间主要交给我们主要的研发方式让他们为给大家来讲解一下我们具体的像技术是怎么来实现的好的请过来这个是刘磊然后我会走的是负责我们classic台湾的我先来介绍一下这个大概classic台湾的一个背景它是由classic台湾社区classic台湾社区classic台湾社区发起了创建的一个用于关闭TMS机群的创建还有扩展或者维护的这个过程标准化的接口它通过提供一个提供很多个这种个人的分隔的CRD定义然后并且有很好的分层设计来支持在Q1机群的创建还有整个生命都系维护过程中可以去自动化的配置深层以及用于它的良好的分层设计可以推接到很多不同的机场商而且在Q1机群的创建还维护的每个关键节点可以有不同的扩展方式左边那个铜的是是Cluster API的一个它的一个包含最主要的那些个CRD类型定义其中玩色的部分是Cluster API核心组件只要包含Cluster虽然也还有虽然Department的这些类型其中Cluster对象的就是定义一个定义一个用于关闭TMS机群的最上层的一个对象它主要的工作是创建和管理用于访问机群的库坑位以及保证TMS机群精确的删除过程然后下面的Machine和Machine deployment其中Machine对象是管理一个创建节点的主机具体每一个Machine还会去对应找一个具体的Infra Provider提供的Infra Machine上比如这个Infra Machine是一个RU的ECS或者是CIL云上的一个ISP纳提供的迅机或者罗金属服务器Machine deployment相当于主机副本管理器Machine deployment的关系就类似于CorrectX核心API里边POD和Department的关系然后Machine是一个不可变更的对每一个创建节点的更新或者是配置的变化只能通过计划更新的方式去进行Machine deployment里面可以指定一个副本数量如果我要一个三届点的工作级点这样的CorrectX机群我就创建给Machine deployment里面有一个Replicas这个属性可以指定三那到时候我们的控制器就会自动的去维护你这个QI的级点保证有三个级点的工作级点然后另一大类就是刚刚说的Class API两行的分层设定它提供的可拨展的部分比如第一个部分Control point provider在Control point里程它的主要职责就是用于管理控制面级点的信息以及收集和管理控制面的状态信息比如ETCD 机群状态信息或者是CorrectX2 状态信息然后不只App provider它主要的职责就是把控制面级点或者是工作级点加入到机群里那么它它提供加入机群的这个机制也就是使用Clolinit或者Innation而Clolinit这个可能用我OpenStand熟悉它是比如在你启动一个讯息机的时候里边讯息机里边有一个D号进程可要叫Clolinit它会去读一个你程序生成的配置文件那在这个讯息机第一次启动的时候它可以执行一些命令那在在这个Fast API的场景下就是我们的一个不是在Provider它会生成包括Clolinit或者是Clolinit周围这些命令的一个超大的脚本然后在这脚本里面会包括它是设置的定制它的选项比如在Provider里边可以去指定Clolinit所有组建的启动参数或者是特性门扣这里是刚提到的Closet API那么多种CRD定义之间的一个关系这个我们去创建一个用于为五一个CRD集群的这些CRD项就要包括大概有这么几个这个蓝色部分就是刚说的新图间包括的Closet背下还有我们身体方面的背下在Closet背下里边它需要配置的像很少主要它就是配置两个紧一个是InferProvider里引导一个具体的纪录式提供的供应商商这里是指的一个Quart Leaves因为刚刚宝贝东也提到了我们最主要使用原生水智化的方式去提升自然溶溶率这个InferProvider当然也可以是从云厂商比如你要堆移到阿里云对它爬维云对 到维云厂商都可以去用对应的Provider去给你提供提供防止它们于接口的一些对象然后在这个具体的InferProviderCloset的背下上还会去这个对象的控制系还会去解决具体的云环境上你要创建零件外置机群所需要的基础环境的问题比如你可能在阿里云商要创建零件外置机群的话还需要去创建自己的网络而打通一些策略之类的或者申请这样配合那在Q2这种情况下当然它就比较简单它不需要去配置什么太多的属性然后中间的这个粉色的部分QVDM Control Plane这是另一个这是我们刚刚说到的另一层另一层Ctrl Plane这一层这一层呢这一层的实现目前就有一个是比较通用的就是QVDM Control Plane这个也是QVDM Control Plane它也是QVDM Control Plane它也是直接引用这个那么它的工作就是允许你去自定义QVDM Init或者QVDM 招引博程中所有的参数那么这个它的配置相和我们自己的手动去使用QVDM 创建机群配置相 基本保持一致的然后在QVDM Control Plane这个控制器里边它另一个最主要的职责还是去维护是去维护控制面节点保证自制面节点复活数要符合预期比如一个控制面节点还是三个还是五个它要去保证那个满军的要求满军要求的方式它也是去创建满军队下就刚刚说的用来管理特把子节点或者是特把子节点机器的一种性对象它要去保证那种队下的数量是满军队要求的然后它创建这个节点会有一个模碼就是你在这里边去配置一个满军弹幕这模式它们的也是我们看到的也是绿色的它的API Group属于InfoCenter.class.info那么这个也是有不同的info和iDoll是提供的如果你使用不是可播的是使用VIRN adder 云或者是阿里云的话就使用的是不同的info和info的设计它叫阿里ECS 设计或者叫Adder 云上的模碼设计然后通过在Publidium Control Panel对象里面指定一个类似于这里指定一个API VersionKind Name和Name Space因为这几个手机相当于KMS里面一个对象的座标包括100%的GVK还有Name、Name Space都指定之后几个具体的对象就被准确的定位到了Control Panel 在那里Machine Template 下面有一个InfoCenter Red然后在这个执行的InfoMachine Template里面是可以配置具体的TBS节点主机的规格由CPU的核心数内容大小或者是磁盘的容量以及要它需要加载的它需要插到某些虚拟的网络接口上都可以在这里配置用于管理控制面节点就主要是使用VM Control Panel这样的对象还可以管理很多组的这种工作节点去加入到一个EO的TBS继续力但是EO的TBS继续主要是用于Class对象定义的我们去添加新的工作节点的话是通过创建CPU对象的或者是完成的CPU对象去反过来以EO的Class对象所以在一开始创建最一开始创建TBS继续的时候可以是没有工作节点这个模型对方的对象也是去它去维护工作节点配置方式也是去引用一个Informer无线分配然后你在这里面可以动态的设定我要这个我要无线工作节点还要使用工作节点都可以在这里去设定它会自己去拉起一模型或者是伤掉一模型使用的InformerProviderProviderProvider然后那边是一个Informer无线分配的一个例子InformerProvider如果是个我们要自己对接自己的需要实现的部分Class API在中国移动PaaS平台的应用场景主要就是提升PaaS机群生理东西管理的标准化程度以及交付PaaS机群的自动化程度我们基于Class API标准化是不是接口封装了一个KDS土印能力这KDS土印能力就相当于阿里云上的AKSSAK服务然后在这个KDS土印能力上我们去封装更多的其他的延伸的PaaS服务比如算理科发平台就是我们最近刚刚完成的一个内部使用的一个小来科发平台的待会儿我的例子都会展示就是算理科发平台上的内容然后基于KDS的内容还可以给我们还可以为我们的提供自动化测试自动化构建的这个环境因为它的特点就是快速创建快速的销毁短时间使用然后提供这种CNCD环境的事都是基于我们刚刚提到的原生讯以化技术就是Toolwork或者是Retink它们都是类似的技术在Retink里还可以使用Cult Provider这种超轻量级的VMF另外一方面我们还会去把我们自己的COE API对接到看看我们自己的Provider去对接到Task API的标准性能区接口罩这样的话我们就会通过我们统一的KDS能力接口去创建生产可用级别的这种罗丁手机群就是基于我们自己COE的这种罗丁手机群这样很用心会更高一些也可以创建这种可以看完环境或者是CS体环境可用的原生讯以化技术的技术这是我们刚刚的算理科发平台的一些截图用来创建在创建一个QS机群的时候一些配置手项比如在上面可以选择不同的QS版本方案那不同的QS版本方案由于我们使用COE API做了统一的抽象可以有非常非常多种不同的组合比如使用不同的QS版本使用不同的操作系统进下还有支持不同的CPU架构以及下面我们还可以看到有可以选择到不同的数据中心这些都是UQAS API标准化接受带来的好处吧然后在在中间我们可以看到其实使用QAS API因为它在生成那个机讯节点加过机讯的配置项的那个部分会有非常多的合选项我们可以自由地让用户自己去这些关键的参数比如帕德网的CIDR或者Sales网的CIDR其实这只是一小部分其实实际上是QAS所有的组件的所有的参数都可以注意那我们PaaS平台上如果有不同的需求的话它就可以去完全自助的方式去完成QAS机讯定制化而不需要PaaS平台为议位的人做任何的操作然后我们这个算QAS平台交付机讯之后使用的方式也方简单我会直接允许用户去下载最高权限的Cooping文件支点PaaS over然后它就是和像本地使用QAS机讯一样的方式去使用我们给它再进行用的这个机讯这是本地访问机讯的一个效果当然在这里有小差距就是在我们内部网络里面强调一个机讯都把它的PaaS over露出来这是需要很多很多的网络策略也不是说允许你直接就把一个生产机讯的PaaS over就暴露到最大部分的网络这里我们做到就可以使用只使用一个TCP短口就可以为所有的机讯用户提供一PaaS over的访问这主要使用TLS协议SNI带SNI proxy的这个这个这个方式就是在TLS议里PaaS over有一个SNI这样的资本可以做多录附用这里就可以使用Full Max的拍皮带预期完成然后最后分享一下我们在构建这个统一KAS能力的时候是有问题在使用KAS API的时候那KAS API是它是一个比较年轻的项目它很多地方设计的还不够周到比如说这个我们在创建好一个KAS机讯之后起码还要在里面安装至少一个SNI插件那它才可以正常的工作这个过程是不在KAS API的标准流程里的但是KAS API它提供的一个扩展的办法叫KAS Resolve Set它可以在控制面就区之后自动化的Apply一些MiniFest进去它设计这个KAS Resolve Set的设计本你可能也是为了完成SNI插件的安装但是它由于连呼性不落虽然插件里没办法执行很多自定义的配置所以就我们没办法使用这个机制之后我们使用的是KAS API里面还设计了继续关键生命东西节点可以给你一些Hook比如说到了控制面就续的时候可以给你一个通知你自己去实现自己的逻辑我们就在控制面就续之后由我们自己的控制器去完成SNI插件的安装并且SNI插件里面我们也是和刚刚一样是自定义参数的像这里自定义参数用户在创建的时候就已经把还有安装的插件的种类比如SNI CSI或者ServiceNAS全都选上打上钩全都不通知插件不通知插件这是很多种参数它都会直接填好然后一次性提交之后到了控制面就续之后就自动化的帮它按照它设定的参数完成渲染然后再按照它的机群里然后这个用于管理动海参数支持动海参数的插件插件模板部署这个小工具是我们自己大概做了一个渲染的运行开源的地址在下面然后它支持两种一种是在模板里可以使用机群自动创提换的Stark是因为酷调什么的叫EV SubsetEV Substream那个開U酷它可以做机组犯的为生机换而外我们自己还做了一个进一步的动海参数就是你的这个配置模板里面比如说你想针对你模板里面某一个具体的GDK或者NameName和Name Space固定的这样的一个CRV项目你要做某一个自断的提换都是可以用自身Pass的方式精确地吃进到那个自断上然后用户在按照的时候可以随意地提前然后因为有了这个机制我还提供了一个组建市场就是在用户创建机群之后我后期又需要添加一些不一样的工具比如说我要添加日处理相关的工具还要添加监控相关的工具就可以去组建市场里面去一件安装而这个过程其实和刚刚说的自动安装CNI插件过程是一样的这我都很想 谢谢大家你好我强调一个问题就是刚才提到那个那个就是我没说的KES我说那个CNACNA的一块就是说这一方是吗支持的基于CNA或者这种数据路径包括那个远方另外一个问题是在可观的行动方面是否支持公平调来过去这种事实性的标准谢谢非常感谢皮尔这个这个是因为基于BPF的特性的话我们其实是在我们内部已经支持的CNA网络插件这个一边的特性是由CNA网络插件带来的我们刚刚说到了这个可选的CNA其实我们有很多种就是在我找遍那个图了就是用途选择在创建地区的时候可以选很多种网络插件其实用CNA这个类别里面就有很多选项这不是有Panel它有它可以选Series不可以选可播VNM很多很多种我们提供好就是不如配置网络又不都是可以自定义的然后你刚刚说到了在可观设计里面如果要提供Intelimatrix的话对那个BPF我觉得里面还有一个系列就是我们就是这种DSR就是直接路由返回的原层路由模式不是那种风荡协议我做为它来这个应该是取决于CNA插件的配置使用成功的模式应该是取决于CNA插件的配置这个是像我们举动的那边的话像OPC在有的跌上的网络是否会支持我们自己内部是有的肯定是支持的掌声感谢一些蛮漂亮的提问还再来一个吗好我们再来一个好老师好然后听了你的分享我也大概了解Cluster API是谷歌和火帽车的对比然后它也比较年轻我想请问就是说两个问题第一个问题是说在不同的云平台云场上提供的请不说是里面它会不会有兼任性的问题然后第二个问题我说完就是说它有没有一些高级的比如说它是管理机器的管理机器的它有没有一些比如自动库缩容吗或者自动库缩容你的那种高级对吗我先问一下接触性的问题接触性的问题是要由Inforcer Provider去解决掉的就是说在这里绿色的部分Inforcer Provider你自己要去按照Cluster API的标准去用它的开发然后你自己云上的一些特性都得封上了这里面所以接触性的问题应该由Inforcer Provider去解决然后是它的出载性比如说我想刚刚说的接点自动库缩容就可以放在Inforcer Provider里面Inforcer Provider里面首先是如果手动库缩容的话就直接设置了Inforcer Provider然后目前Cluster API好像是没有提供应该是有一个自动库缩容的机制但是在实验它在实验阶段它是可以根据一些指标自动的方式去库缩这种成绩关稿如果它不能把这个要求的话可以自己去写控的器体自己去根据自己的指监控指标比如自己CMU还上监控导迅速机的使用率达到某个预值可以去用自己的固执性去改变我们新地方的要去改要去改自动的这个要不改自动以改变的话后面解决自动自动的拉起还有自动加入继续的工作都是自动化的OK 那我们找个感谢的时间留了