OK 大家好 我们准时开始然后争取与准时结束这个让大家准时能吃上饭OK 好 我们这个Session的这个主要是想跟大家来探讨一个可能比较持久的一个话题就是说在这个裸金属和这个虚拟机的这个上面去部署这个K8S的话有哪些优劣点以及一些我们现在觉得一些新的方案那么我叫叶峰 然后来自SmartX对 我是杨艾琳来自IntelOK 好OK 那我们首先来简单的看一下就是说在这个裸金属和这个K8S上面这个部署K8S裸金属和这个虚拟机上面部署K8S的一些优劣那么在裸金属上面呢大家可能比较熟悉啊就说我们能够尽可能的避免掉虚拟化带来的一些性能开销那尽管现在一些虚拟化的这个整体做的已经比较好了可能开销比较少但至少说不是说没有 对吧那另一个的话呢就是说对于这个虚拟化的这个运为那多一层东西总是有多一层的这个你需要去take care的一个费用那它的一个不足点是什么呢就是你去部署和这个节点增山的时候它相对来说是比较不便利的你可能要走到这个机上面或者是通过这个远程的console之类的都相对来说不太便利那么共用集群它也不是很安全那这个原因是呢这个容器和主机它其实共享内核的那么一旦这个容器里面被攻破的话那么很有可能危急到你主机以及主机上其他的一些负载的这个安全那再有的话就是你去共享使用一个集群的话也不是很便利原因是KBS原生是缺少这种多租户的这个支持的也就是说你的这些work load跟你其他的这个组啊同事啊他的这个work load互相之间是能够看得见的甚至可以互相之间有一些影响那这个是裸金属那在虚拟机的这个部署我们现在很多的这个区部署的话都是一个就是就每一个这个KBS都是使用自己独立的这个虚拟机的这个节点对吧在这样的一个部署下呢好处就是说我们这个隔离性很强因为整个虚拟化的这个隔离性它是一个硬件支撑的这种隔离性所以它的这个隔离性比这种共享内核的这个隔离性肯定是要好的硬件的利用率会更高对因为我们这个在这个整个虚拟化的上面可以一个节点物理节点用很多的这个虚拟节点那再有的话就是集军的部署节点增山更方便那虚拟化的平台都提供很方便的这种NCR之类的这种一些访问的方式可以直接在一个这个控制平台上面去完成这样的一些操作那甚至我们这个开源的这个社区也有class API这样的一些项目来做一些这个厂商去提供class API的这个实现来做到这种自动的这个节点的增山和自动的这个集军化部署所以这会变得非常的方便但是它相对的不足也是说我们如果说想要去做到一个比较好的一个去支撑你的这个虚拟化去选择一个商业化的这样一个产品它的定价是比较高的对吧像BMWare的license这个可能动辄的都是好几万美金的这种一个节点的这样的一个价格对吧然后以及说这个主流的产品它是否是说这个功能过于的吩咐那这个东西是有好有坏的吩咐的话你可能说用起来这个功能会比较多但是它也会存在一个问题就说它的可能的一些不必要的一些开销比如说一些硬件的这个过时的一些模拟可能它带来的是一些overhead没有必要那另外的话它的这个平台的这个功能多了也就意味着更加复杂那么它运萎起来也会更加的复杂对吧那所以我们可以看到这个整个这个训理机部署也好这个裸金属部署也好都是有利有弊的所以这个也是经常会被讨论那个问题就说怎么样去部署会更加的好那么我们去考虑这个问题就是说怎么样去能够尽可能的照顾到两边的这个优势然后把它的一些弊端尽可能的去避免掉那这里面我们认为说至少需要有两方面的一个一方面的话就是说我们需要有一个更加高效的虚拟化技术那什么意思呢第一我们的这个虚拟化要提高它的这个效率去更多的使用一些高效率的一些iO模拟的这个技术比如说这个VertiO那这样的话我们整体这个去做这个虚拟机里面的iO的时候它的这个效率会更加的高对于这个hose的这个整体的这个开销会更低然后呢去更多的去支持一些硬件级的虚拟化支持从更底层去支持这样的一个虚拟化使得说你的这个效率会更高像SLVR这些技术在硬件的层面去提供这样一个支撑然后呢去减轻它的一些不必要的一些负担比如说我们是不是这种在这个键盘鼠标监视器等等不需要的那这实际上证明在我们这个一些工友云里面其实也没有这些外设对吧大家在工友云上面去跑负担也是能够跑得很好的所以这些东西其实在这个很多场景下它是不需要的那么带来了就是更低的一些内存的开销然后呢就是一些过时的一些硬件就比如说CdRome对吧我们是不是就不再需要这些东西了那么这样的一个好处是在于说我们更少的这种模拟支持能够提供给这个虚拟化上面的这个GaST的攻击面也更小那么另一方面的话我们是希望说这个在管理的这个层面有没有更加轻量的一些方案去把这些讯息管理起来使得说我整个管理的这个开销更加的低那这个的话另外的话也就是说我的这个轻量所带来的我的运为的难度会降低使得说我运为的这个开销也能够降低下来那还有很重要的一点是说我们既然说上面想要用这个讯理化S那么我们有没有可能直接在K8S上面去Build因为K8S是一个这个分布式的操作系统我们可以这样去认为所以AllK8S 4K8SOK 那在这样的一个观察和思考下面我们做了这样Vertink这样的一个开边的一个项目那么简单一句话总结呢就是我们Vertink是一个管理ColorHiveVisor的这个虚拟机的一个K8S扩展也就是说我们是长在K8S上面但是然后去提供这样虚拟机的一个编排这样一个能力但是使用的整个的虚拟化的这一层使用的ColorHiveVisor这个虚拟化OK 那接下来就由艾琳来介绍一下ColorHiveVisor相关的一些技术大家好我是英特尔工程师艾琳对Go Waterlink里面用了ColorHiveVisorKolorHiveVisor其实也是一个开源的虚拟机项目这个项目呢它的特点是什么就是因为我们知道就是在业界里面已经有很多虚拟机技术存在了那我们为什么还有ColorHiveVisor那大家我们看一下啥是个ColorHiveVisor到底所以给大家大概有一个介绍ColorHiveVisor呢我们知道听名字是个HiveVisor但40它它不是一个HiveVisor应该它是一个HiveVisor的一部分就VMM就Waterroom是一个Monitor对这个ColorHiveVisor本身呢我们已经我们知道业界已经有很多比较成熟的开源的以及这个B元的上运的很多HiveVisor但是我们为什么有一个ColorHiveVisor存在呢就是刚才就像叶芬提到的就是因为我们现在的很多业务它需要运行在一个比较高效的 轻量的或者启动对资源消耗比较小的这个东西另外就是我们知道又是类似于开源社区里面比较流行的成熟的Q秒大家知道但是因为Q秒的历史原因支持了很多的Fature它的代码它的架构比较云种那么它尤其是支持了很多比较老的架构跟设备所以在我们现代这个尤其在我们云原生这个架构平台上其实我们的服务器都是现代化的芯片现代化的服务器加上我们64的架构那如果我们再去做一个拆建一个Q秒它可能是历史的包袱比较大另外我们的花的功夫也可能需要比较多所以就是在基于这些技术呢我们在在2019年就开源了这个虚拟化项目就clutter high feather它是初中就要说集合了现有的许球再加上现有的一些成熟的技术因为我们现有的成熟技术就是我们在虚拟机这个虚拟机技术沉淀了这么多年以后其实底层的很多对设备的虚拟化memory的虚拟化CPU的虚拟化设备的支通等等都已经其实比较稳定比较规范性了所以这业界里面就做了一个东西就是我们能把这个每家所运的这个虚拟化技术每个设备每个component的东西能不能标准化模块化然后就是做一套标准的东西就一于是就有了一个项目叫Rust VIM这个项目然后又是Rust的语言本身也变得越来越流行被越来越更多的果凡应用因为基于它的这个编译型的这个性能跟安全性所以结合了这多种技术Rust based VMM这么一个项目就产生了但是这个产生的背景就是我只是提过一个很common整个library方便就是每家查查可以在上面定制自己的虚机但是我们这个业界里面我们这个开源社区里面的一些大厂他们觉得就是如果我们再在基础上再做一个比较参考的设计能把我们利用这些cool在我上做一下做成一个完整的这么一个虚拟化项目那是不是更好呢所以就来了一个clad high price所以它基本上核心技术就是Rust VMM里面的模块再加上Rust语言对刚才叶文提到就是由于clad native这个环境这个云元身价格口里面需求的几个特点就是我要有一层虚拟或者是欠套虚拟的情况下我要性能很多不损失那这种情况下就是clad high price设计的理念就是我怎么做到小怎么做到快速的启动怎么做到这个单机的部署密度所以就是它需要考虑的安全性效率资源的消耗对 这是一个特点然后clad high price是个open source项目基本上的初期的代码的贡献是来自Intel ARM以及就是我们的Alibaba螞蟻金服还有我们BuyDance等公司但是因为我们这个开源项目在后来的这个2020年差不多就捐献给了Linux基金会所以它的运作模式是肩潮的四个open就是open sourceopen communityopen developmentopen governance所以就是整个这个是按照一个完全开源的模式来运作的所以到目前为止就是我们又今年又新加了一些社区的member比如说腾讯安排对然后现在最到目前为止比较大的用户就是字节跟这个头条字节还有腾讯还有微软我们前段时间召开了一个clad high price社区的这个webnet的活动然后里面就分享了字节的内部是怎么使用clad high price的我们最后运完了以后就是把它录下可以放到那个b站里面大家可以去那个b站上看一下然后clad high price本身刚才说了定位就是个vm这层它的底层是依赖于kvm的所以它的整个的功能架构啥就是这模型就是底层硬件然后中间有house的这个kono然后上面有guess的中间呢它做的一层这就是clad high price所做的大部分的跟q秒基本啥的这个位置跟角色差不多但是我们做了很多这个模块性的设计比如说最基本的功能CPU的管理Memory管理TOP结构的这个暴露给在虚机里面然后最重要的一块就是因为我们要支持很多的设备在不影响性能的情况下我们怎么做到就是我们也应用了现在比较流行的这个虚拟化半虚拟化的技术比如wattlfswattlblock这个这些所有的技术基本都继承了这个clad high price里面对然后我们现在clad high price社区里面做的东西就是在保证这些基本基本功能基本使用插件的条件下就怎么去让他做的这个更安全所以就整个在clad high price社区里面有很多安全的这个CACD的测试的规范以及有很多性能的matrix数据大家如果对clad high price这个轻量化虚拟机比较感兴趣可以到clad high price点org这个这个官方嘛在那上可以看他的一些数据对然后大家有个困惑就说提到clad high price我刚才提到有了QM有了这么多东西我们还有为什么要需要clad high price所以我们这个看这个我们最左边我们知道clad high pricehigh price本身是有两种模式一种就是type 1 type 2type 1就是我们spire mental的就是硬件上直积起来叙积支持我们的guest对然后最右边的就是一个我们现在就是type 2就是我们要依赖于kono也就是我们最最流行的就是KVM所以这个clad high price下面就是他的模型就是VMM你会看到最右边的是这个有四个QM5 crackcross VMMclad high price它的定位就是VMM所以在这里面就是说为什么会有这个东西因为这几个QM5 crackcross VMMclad high price它本身各有各的特点各有各的优势可以运在不同的场景里面对但基本上他们有几个共同的语言就是RAS的写的对然后呢基本上在下面的理念是有点不同但是我们clad high price社区里面现在做的就是usability一些技术KBIS就是配合的集成的更好所以这是到目前为止我们社区里总共是每六个州一个release就每六个州有个release然后差不多最新的release是V36第二的发布然后在这里面就是我们这里面一天还有一个就是我们正在做另外一个开源就是Dragon Ball是由阿里巴巴做的它其实最后可以加到位置就是最右边的那个跟QM5 crackcross VMM这么一节最主要的一个场景就是把clad high price可以跟cutter container结合起来使用因为cutter container因为在基本上在业界里面基本上是我们一个就是安全轮器的一个标准的东西好这部分就讲了然后交给叶峰OKOK 好那我接下来就是继续这个Wattinger的部分那Wattinger的话整个是构建在这个就底层用的这个讯理化技术就是刚才提到这个clad high price那么我们去做这个项目一开始的这个设计目标的时候就是有这么几个点就是第一个话就是我们期望于它运行于任何的这个K8s集群市场这什么意思呢就是第一我们不是像做cutter那样去做一些CRI的一些替换主要是做这种非侵入式的扩展去做一些CRD去做一些operator controller这样的一些事情那第二点的话就是我们去坚持在这个K8s原生就是我们不去另外去发明或引入一些这个存储网络这样的一些层次而是主要去使用K8s上已有的这个存储的规范像CSI然后网络的规范CNI然后去支持那其实通过这个这个去做的好处就是说我们一些这个CNICSI的厂商可以直接接入进来然后到我们的这个为我们虚拟机来提供存储和网络对那第三点的话就是说我们去高效的支撑这个K8s就是说去支撑嵌套的K8s这个是从我们第一天去设计Vortink的这个API也好整个的这个架构也好就已经在我们这个脑子里面的所以说我们对这个K8s的这个支撑我们一会儿会看到还有一些这个CSI project去做一些更加这个简单的一些一些事情OK那整体的架构来说可能熟悉这个QoobWort的同学可能会看起来觉得有点像有点眼熟这个是因为说我们其实本质上参照了很多QoobWort这个项目的这个里面的一些设计我们整体上面的话会分为两个大的东西就是说一个是全聚的一个WorkController它是一个Department方式来部署然后选举出来一个Leader然后来全聚的管理里面我们一个K8s里面所有的这个靠海拔者的虚拟机去做这个具体的调度然后具体调度到某个节点上面我们在每个节点上面就会有这个WorkDemo来去做这个虚拟机的这个一些主要是一些处理吧那么当我们这个WorkController把这个虚拟机schedule之后然后就会在这个TargetNode上面产生一个POD我们叫VMPOD然后里面的话我们会去先起一个WorkPerroner那这是一个先运行的一个Process它在这个VM的这个进程起来之前它会退出它主要做的一件事情就是把一些网络的一些配置啊一些东西给准备好网桥啊建好等等这样的一些事情完了之后呢就会交给这个WorkDemo来跟CloudHivizer的这个API直接沟通然后去起这个虚拟机所以在这个长时间的这个运行状态下面其实我们的这个VMPOD里面是非常纯粹的就是只有一个CloudHivizer的进程以及说我们去做一些DHCP啊之类的一些Maskray的一些事情对它的整体的这个开销会很小一会儿我们会讲到这样的一个开销嗯所以的话就是在这样的一个设计和架构下面我们能够说得到一些以什么样的好处呢首先就是我们在这个底层使用了CloudHivizer之后我们可以去对比跟这个使用Cumil那你用Cumil的话一般来说都会像CoopVirt就会使用到Levert这样的一个项目来做管理对吧那这个整体来说我们如果用CloudHivizer来替代的话至少能够减少每一个虚拟机所占用的这个Overhead的这个内存有至少30兆那这是其其二的话呢我们刚才也看到说我们这个Protroner的进程在Vm进程起来之前会推出那在VmPod里面跑的进程非常纯粹所以在里面没有常驻的管理进程这样的一个好处就是我们能够减少的像Launcher这样的一些进程的内存占用至少比如说80兆所以整个加起来的话我们在这个管理层面或者说整个虚拟机Overhead这个层面ProVm的内存占用我们能够至少减少每一个内存的这个占用到100兆至少对那另外的话就是我们这个Vertink的话只提供这个相对精简的一些功能那这个第一个是这个ClubHiveS相对的它的这个设计哲学也是说我提供必要的这个精简的功能那么Vertink也是也用了这样的一个哲学然后来考虑怎么样去提供这个集讯化的这样的训练机的管理所以我们在这里的话就是比如说我们没有去做可能一些高级的一些功能比如说基于共享存储的这个高可用功能我们是没有提供的然后呢目前我们也不去支持这个刺判和网卡的这个垃圾插对ok 那这里的话就是有一个简单的一个一个演示的一个我们可以简单看一下对 ok那这里演示的就是我们这个这里的话就是已经走了一些了没关系就是我们Vertink的安装就比较简单首先就是一个压某就直接可以安装了装完了之后然后简单来说的话你就可以通过这个我们这个VM的这个就是通过这个你去build你自己的一个rootfs然后这里的话我们就会有这个我们你可以直接使用我们样力里面的这个dogfire然后来做这样的一个buildbuild完了之后然后呢对这个就是我们这个类似的这个dogfire长的样子然后你通过这个来build出来一个dogfire之后然后就可以直接通过我们这个提供了VM的这个manifest然后去去拉起快速的拉起一个虚拟机那整体的过程的话就是说你可能你的这个k8s是Kindia或者MiniCube之类的都可以就是符合我们所说的就是说你基本上任意的一个标准的k8s都可以去跑我们的这个虚拟机那当然前提是你的这个host的必须得支持这个KVM对吧OK那这里的话我这里就不多走了就是具体的话大家可以在我们这个主页上面项目的主页上面找到因为我后面的话想要更多的介绍一个这个对 就是就是我们我刚刚提到说我们在最一开始的时候就去考虑到了这个Kindia k8s的这个支持的这样的一个问题所以我们在这个提供了这个voting的这个项目之外我们还在这个上面继续去build这个class API的这个provider然后在class API的provider上面又进一步的去做了这样的一个一件事的这个部署欠套k8s的这样的一个工具啊 叫Kindest那Kindest的这个主要的目的就是说我们希望你用一条的命令可以直接在一个标准的k8s当然是支持这个KVM的这个节点的k8s上面通过一条命令能够直接去拉起一个欠套的这个k8s集群并且后续你可以对它进行一些这个扩松的操作那这个过程当然会包含说它所需要的组件比如说voting的安装我们会自动地检查然后去如果没有安装会自动地去安装那这里的话可以简单地看一下对我们创建的话就是简单的一条命令就行了 就是Kindest的k8s后面就是一个class的一个名字那么它整体的过程就会是首先会去检查你的一些CRD有没有装就比如像voting有没有装没有装的话它会自动地去安装装完了之后然后你就是上面基本上就已经结束了就是这整个过程它就开始在后面去创建的整个过程它肯定会包含说你去拉这个image拉起这个虚拟机对吧然后把这个concure plane起来去组成集群等等这样的一些标准的一些K8s组建的这个操作那么完成了之后你可以去观察这个里面的这个状态一直等到它结束了等到它整个的这个虚拟机都running起来了之后你是可以去下载我们嵌套集群的这个上面的这个cubeconfig然后再用这个cubeconfig直接去访问对这里演示的就是这样的一个过程然后最后的话你也可以通过我们这个kinesis的这个命令然后去很方便的去删除你刚刚创建的这个集群对OK好那我们简单回顾一下就是说我们认为说这个在虚拟机和这个裸金属上面部署K8s他们各自有各自这样的优势和劣势那么怎么样去兼顾他们的这个就是我们能够既获得虚拟化的这个隔离性又能够获得说像接近于这个裸金属的这样的一个性能那在这样的一个考虑下面我们提出说OK 我想用到这个更加轻量更加高效的这样的一个虚拟化技术claw hypervisor然后去做到这个更加安全更加高效第二个的话就是在我的这个虚拟机管理测我们Voting提供了一个更加轻量的这样的一个实现提供了这个一些不必要的overhead然后仅仅功能集合并且是整个是这个on K8s 4 K8s然后给这个整个的我们K8s的部署的形态提供了一种新的思路和一种新的解决方案对OK 那这个就是我今天想跟大家分享的探讨的然后看看大家有没有什么样的这个问题你好 我有两个问题然后第一个问题是你们选行了claw hypervisor那我想问一下你们在选情的时候如果是以更轻量的角度去思考为什么没有选firecracker就是AWS camera这是第一个问题第二个问题因为我是卡塔社区的嘛所以你slice没有意义是说什么是CRI没有侵入CRI那一款我想了解一下这块具体是指什么OK 好 第一个问题就是firecracker 是吧相对来说firecracker的话我们认为说它的功能有点太过于太过于偏向太过于精简太过于偏向容器化的这样的一种使用场景了对 那在这我们其实虽然说是一个精简化的这样的虚拟化但是我们本质上面还是希望去提供一个用户完全可用的这样的一个虚拟机这样的一个形态的所以在选情的时候其实还是相对来说会去选一个功能更加稍微健全一点的这样的claw hypervisor这样的一个项目但我理解底层其实有很多的裤其实是用到mm里面相同的一些裤第二个问题的话应该是第二个问题您说是ci的这个部分对吧对 就是像卡塔我理解它是这个你会把ci的这一层给round timeci round time会给换掉对吧就不会使用container D之类的会使用container D但是你最后落下来的话你不会使用到像dalker之类的会吗对啊那就是我们的故事是说我们整体的底下跑的东西还是典型的container就是不是virtualization based的这种round time而是典型的像dalker也好像round C也好这种基本的容器的运行师下面的故事container都没有问题对的 但是你们实际上是把一个虚拟机就是虚拟机的虚拟的话的一个接口尽可能的像ci这部分去靠然后去承载container这样的一个walkload对吧对对 但我们如果说大家general speaking的话就说你这个东西底下大家的round time都还是典型的这样的一个ci对吧我这里其实换一点是说我们的底下的ci还是要典型的这种ci不去做这样的一个虚拟化的这样一层的替换对而且实际上替换之后我们这个也跑不了就好OK 没问题我刚刚其实因为进来的比较晚我其实有些地方可能漏掉就是他那个我是不是可以理解为你们那个我说另一个提供了那个node是吧它也是通过kbis管理的对 没错然后里面可以再起新的kbis是吧就是在这个node它提供node上带起可以在里面带起round time这样的容器是吧对 没错然后这样的话那你们就是你们这个node里面在起的那个新的机群有些比如说coplate然后可能是有些单机组结需要做一些兼容性的修改吗兼容性凝职 哪方面就比如说它的一些因为它直接在裸金属上跑可能没什么问题是吧然后它放在你们那个我不太清楚你们会不会有些什么能力卸质然后它就不能带你们能不能跑需要做一些什么带马上的改造什么的OK 没有简单回答是没有因为我们这个上面其实是一个完整的虚拟机就是你可以认为跟普通的Liver Cumule或者跟VMR虚拟机其实是一样的它里面的capability可以包括你里面装的OS这个都是各种发芯版Gialinix都可以装然后里面跑的架构也都是底下KBM直接上来的你如果底下是ARM上面就是ARM底下是X86你上面就是X86对不需要做那个变化OK然后第二个问题是我刚刚听到你们是好像没有支持那个设备的那个直通是吧然后你看现在它那个比如说AN场景的话比如说是RDMAGPU一般情况下它都是需要去做这种我想在AN场景下支持这种应用的话都是需要做这种直通的然后如果这样的话你们就不说我想用你这个节点对吧去支持MI的那个任务的话我怎么去做这种设备的管理呢你们就快点这么考虑的OK我刚才应该没有提到不支持直通我们是不支持设备的热拔插对但是直通的话包括SRLV我们现在都是支持的GPU的直通GPU的直通我们目前是有这个PR但是我们一直偏临在那里因为我们现在还没有拿到比较多的设备去测试完整的测试这部分的弹码但是PCIE的直通以及说SRLV的这个设备直通我们目前都是支持的那你们就是如果它设备直通的话我理解它肯定是需要一些就比如说我这个Node需要哪些GPU是吧需要哪些RDMA可能会有一些调度上的这种你们这边是也有一些方案的上面建议或者是你们这边有什么一定有在做吗这个调度的话我们目前主要依赖于K8S的调度器所以理论上来说你调度GPU的话我们肯定是整卡调度就是你没有办法把一个GPU直接分片然后你可以整卡向K8S去声明然后K8S调度到具体有这个卡的这个节点上面我们的虚拟机就可以直通进去去使用整卡OK OK 感谢那位同学吧因为他举手举了好多次我们先那边不好意思你好就是有两个问题吧首先那个第一问题就是刚刚我看咱图里面聊了还是跟刚刚看的同学问题类似吧我看是在Gaz里边做的网卡CNI的一些事情对吧相当于就是现在咱CRI也不需要了CNI其实也就CRI已经做掉了就不需要运行时了然后CNI也是在Gaz里边做了其实道理上也不需要这个管控层的不管刚刚您说这个刀壳或者可能是地因为除了这两个就是镜像那就是我第二个问题了就是在镜像管理是怎么做的是在素日机上拉好这个镜像还是在Gaz里边就是拉起这个VMM之后在VMM里边去准备这种shoot device我觉得可能有一个技术上的误解就是我们这个其实不是说就我们的Gaz的K8S跟底下的K8S是没有任何关系的所以CRI也好Cublate也好就你所有K8S需要的这些东西在上面都是需要的所以的话你说只需要镜像这个应该因为比如说一个非这个虚拟化的容器比如renc容器可能是有运行时来准备好一个NATS然后只有容器用的NATS起容器对吧在NATS里边做事那咱现在可能不走这个列录了可能是在NATS里边如果NATS该有谁来做呢是由运行时来provisionNATS还是说在Gaz里边做这个事呢就是他需要的话那为什么在Gaz里边还需要再做一遍准备网桥的事呢你说在Gaz里面不需要做网桥之类的事情只是说我们在这个host里面起的这个为VM起的这个pod里面我们需要去做一个网桥使得说我这个虚拟机的这个网络能够bridge到我的host上面的这个具体的网桥然后这个网桥的另一端可能连的是CNI上来的一个懂了懂了懂了明白明白那这个问题明白相对还是由运行时来准备这个CNI的事那这个经向呢刚刚那个经向那一块就是经向数据是由运行时来做的吗还是由这个Gaz里边自己拉的Gaz里面自己拉的Gaz里面自己拉的对对对那它会有共享的事情吗比如我两个泡的用了同一个镜像他们会有不太会除非说我们如果说你k8s的一些镜像就大家共享的我们可能会invade你的这个os image里面去提高它整个的这个起来的速度或者说不用外面拉去但是你上面cload的镜像这个东西很难去预测对吧它还是从这个镜像上面去拉的就比如说我起了个CentOSCentOS没有内置到Gaz的Base的Image里边假设它没有Base的话那么我起了两个泡的就算同一个几点的话这两个泡的他们仍然会拉两遍CentOS的镜像是吗两遍CentOS起第一个泡的拉了一遍CentOS在Gaz里面起第二个泡的又拉了一遍就在Gaz里面对对对OK明白了这次稍微加个问题刚刚那个同学问就是设备的事那设备是通过什么方式通进去的是走VFO吗还是怎么您说那个设备直通吗对对对对对好嘞感谢感谢我也是有两个问题主要就是第一个我理解你们现在这个方案相当于是在一个泡的当中起了一个hypervisor的环境去让我们这样一个QVM的虚机那对于这个QVM虚机的镜像的话我们初始是需要有一个convert的准备要把比如说一个OV就是QVM那个QCon的那个镜像要把它转换成一个dark image之类的然后才能让在你这个环境当中吗好问题这个的话我们会我们直接用到了这个Convert的一个项目叫做我忘了名字叫什么了就是类似于我们会你提供QCon2或者说OVA啊或者什么之类都可以我们会迫下来然后用这个QM image的这个命令去把它convert成一个raw因为raw的格式法文是最快的嘛然后我们再去使用所以你不需要做预先的一些什么东西基本上QCon2吧什么之类的常见的虚拟化的格式都可以然后你说House的主机上需要有Virtual的支持吗QVM的支持吗那这是比如说我是一个cluster那每个note上都需要有同样的这个支持然后你这个镜像也需要每个note上都要提前部署好还是说可以做到一些自动化的这种你可以有些节点没有QVM没有问题因为我们其实去调度的时候会看你的这个QVM的一个设备号会有一个plugging去提供这样如果你有QVM的能力会有一个e这样一个数值然后schedule过去是可以schedule到有QVM能力的这个节点但你想要支持更多序以及肯定是说每个节点都要QVM会比较好那第二个问题你是说这个镜像的存在问题对吧当我们这个这其实是跟普通的镜像拉取是一样的你不需要预先全部都准备好只是说调度到那个节点它如果没有这个镜像那么K8S或者说底下这个导渴它自动会去铺这个image然后起来就可以了那最后一个问题就是那个跟网络有关的因为现在相当于是把一个虚机以泡的的形式启动起来那它现在拿到的IP地址大概是泡的IP还是它可以拿到一个external的这种hoster主义上的public IP或者说比如说有一些特殊的镜像我们是需要起多块网卡的可能连多个网络像在你这个环境的话会不会有一些有特殊配置的地方这个取决于我们是有能力拿到你就可以把泡的IP直接转移到VM的IP里面的那这个具体是它获得什么样的IP其实取决于你我们里面CRD里面有两个东西第一个是网络的这个你具体是什么网络是泡的网络还是Mautus的网络然后以及你的binding方式你是NAT就是网络地址转换的方式去连接还是说直接bridge的方式如果你采用bridge的方式它是直接会把IP给到VM的IP给到VM然后其他的泡的可以通过这个泡的就是这个VM所在的这个泡的IP直接访问到VM里面的服务啊 进程啊这类的都可以那你如果用网络地址转换就是另外一个故事了对 我们有不同的连接方式那你至于说多网卡也是就是说k8s里面有这个Mautus CNI它是可以提供给泡的多个网络的那么这个东西到VM里面其实也是每一个Mautus网都可以在VM里面提前一个网卡然后你就可以在VM里面access到不同的网络就你的意思我在配泡的启动的时候我把Mautus的信息都配置好之后然后我虚机里面就可以看到这几块网卡虚拟网卡你不用配泡的你直接配VM的CRD里面就可以对好 谢谢没事OK 好那时间的关系就是我们可能这个session就到此结束了好 谢谢大家