那首先我来简单介绍一下我叫鲍月然后现在就职于华为云原生团队然后目前也是在库拜尔居社区负责signode的相关的工作目前也是signode的techneter负责边缘计算的一些设计和开发的工作温富财老师是孔接数制的架构师然后目前也是从事云原生然后虚拟化 容器化等相关工作在云原生 还有存储 网络等方面都有非常丰富的经验那今天也是由我来先为大家介绍一下我们这个一集的背景以及库拜尔居的技术架构之后由温富财老师向大家介绍一下如何把库拜尔居的边缘节点运行在我们的安卓的设备上首先我们了解一下背景然后大家也知道随着物联网的发展以及我们边缘算力的一些发展那目前就是云原生的技术正在从云数据中心向边缘延伸那我们其实之前很多边缘计算的项目包括库拜尔居在基于Ninix为操作系统为基础的一些场景上已经得到了很多成功的案例但是我们在移动的边缘场景上有很多的设备比如说我们的基顶盒我们的智能汽车它其实都是基于安卓的操作系统的那这些设备和场景也极需要我们云原生技术的应用所以在这个背景上我们就是考虑把我们的库拜尔居的边缘节点部署在我们的安卓的设备上来让云原生的负载可以在安卓设备上去得到应用来扩展我们的云原生的边界那这边就是我们库拜尔居的一个整体的架构图那我们库拜尔居是面向边缘计算场景专为边云鞋桶设计的一个云原生边缘计算框架那我们也可以看到其实这个图里面是分成了云边端三侧也就是说通过我们库拜尔居的这个架构其实是打通了云边端三侧的一个通路的那我们可以首先看一下云上那在云上因为库拜尔居是基于原生的K8S的架构去构建的所以其实我们对K8S的控制面是没有做过多的就没有做任何的侵入式的修改所以用户可以完全使用原生的K8S的API去管理我们的边缘的资源那也就是说用户在使用库拜尔居的时候它的用户体验其实是跟K8S是完全一致的那我们在云上也是有一个组件叫Cloud CallCloud Call这个组件就是对应的在边缘有一个Edge Call这个模块这两个模块的作用呢其实我们要从K8S的一些在边缘场景的一些局限性说起因为大家也知道在K8S通常是部署在一个云原生书一个云数据中心里面的它的网络是没有任何问题的那它的边缘节点它的节点kubelet去访问访问集群访问API Server是通过Nist Watch这个机制去访问的但是Nist Watch机制有一个问题就是当我们的节点断年之后在重年上来它需要重新去renews的权量的资源那在网络没有问题的情况下这种场景是比较少见的但是在边缘场景上那我们就是我们的我们大家也知道边缘边缘场景有很多的挑战比如说我们的网络质量比较差我们的带宽也比较窄那这个时候我们的边缘节点在网络质量比较差经常断年重年的时候如果继续采用Nist Watch这套机制在节点重新连上不断的去重新renews的权量资源的时候对K8S的控制面的冲击就是会比较大同时对我们的边缘的带宽的要求也比较高所以在这个基础上我们也是重新设计了我们的云边的一个消息通路那我们这边的一个云边消息通路是支持WebSocket和Quick两种协议的这个云边消息通路做了很多消息可靠性的增强比如说我们我们我们从云上想发一条消息到边缘这个时候我们我们会等待边缘回复一个ACK的消息那这个云上如果收到了ACK的话它会去做一个记录当这条消息被标记之后这个时候如果我们的边缘节点在断年不断的断年重连之后云上会判断这条消息是已经被处理的那它就不会去重复的向边缘去发送云上的部分主要是这些那我们可以接着看一下我们的边缘的部分就是我们下面左边的这个部分我们的边缘的ACK它其实主要的一个核心的部分是一个清亮化的couplet所以它其实是支持原生的couplet的所有的能力包括我们可以通过我们的CI接口去管理我们的边缘容器然后通过CSI接口去管理我们的边缘存储所以我们这边左下角的这个部分就是我们节点应用部分的一些管理那最右边就是我们的一个端侧的部分那大家也可以看到就是我们又写了很多端侧的通信不同的那个通信协议的一些设备那我们这边有一个组件叫mapper我们这个mapper是一个可插拔的组件它是可以通过容器负载部署到边缘上的我们在mapper里面已经内置了一些对不同协议的设备的支持比如说我们的蓝牙比如说我们的modbus除此之外我们也是开放了接口支持用户去自定义的去开发他们所需要的通信协议的那这边呢就是我们整体的一个QBIG的架构那这边列出来的就是我们QBIG的一些核心理念那这边我在介绍架构的时候有些地方已经提到了比如说我们是支持开放生态的也就是说我们百分百去兼容原生的KBS的能力第二个呢就是我们支持一个可靠的边缘的next watch的一个接口就是我们有很多的operator它还是需要去在边缘使用next watch这个能力的那我们这个时候也可以去打开我们的边缘的next watch这个能力去支持operator那第三点呢也是我们刚才提到了我们是支持多种通信协议的同时我们也是支持用户去扩展它所需要的一些通信协议那第二点呢就是支持去管理我们的海量的边缘设备比如说除了刚才我们说的我们可以去支持多种通信协议的设备的介入那对于边缘场景来说还有一个挑战就是很多在边缘场景上我们的设备的内存的要求是比较高的就是我们对我们可能资源比较受限所以我们在EdgeCore这边也是做了很多清亮化的工作那我们目前最低可以支持70兆的内存在边缘区进行一个运行第三个呢就是我们支持复杂的边缘的网络环境那我们前面也介绍了我们通过我们的云边通路我们可以支持双向复用的一个云边消息通路同时我们也有一个消息的同步的机制可以保证我们的消息可以确保它下发到边缘或者上报到云上第四点呢就是我们的一个边缘自制的能力那我们前面这个地方其实架构也是有展示的我们这个EdgeCore旁边是有一个数据库的一个图标其实我们在边缘也是会把数据持久化在一个边缘的数据库上那我们比如说我们在节点断连之后这个时候我们设备重启或者关机之后再开机再开机我们的边缘的应用是能够保证快速恢复即使在我们断连的情况下好了最后一点呢就是我们的边缘一体的资源调度以及流量的协同首先我们整个架构是支持边缘节点和云节点的一个混合管理的第二个呢我们还是通过我们的一个子项目叫EdgeMesh我们也是支持边缘的消息通信以及边缘的消息通信那这边就是我们的一个核心理念这边呢我们再可以再打开介绍一下我们的一个边缘的模块因为我们今天主要是要把边缘节点部署在我们的安卓的设备上那左边就是我们边缘的这个部分的一个架构首先是我们的Edge HubEdge Hub对应的在云上有一个Cloud HubCloud Hub他们这两个 Hub的作用就是去建立这个云边的一个消息通路的一个过程然后除此之外还有一个metamattergemetamatterge的工作呢主要有两点一点是它会把消息分发到各个模块去然后另外它会把那个数据存储在我们的边缘数据库除此之外metamatterge里面还有一个小的组件叫做metaservermetaserver就是去提供一个边缘listwatch这个能力的然后右边这边还有一个DeviceTrainDeviceTrain就是用在我们端侧方面的它是会把Device的一些数据同步到云上的然后最重要的就是我们这边有一个Edge DEdge D就是我们的轻量化的couplet那我们没有用到我们没有直接把couplet拿到边缘上来用而是做了一些工作首先我们在我们的Edge D里面去把couplet给集成进来那为了使用到我们的一个边缘通路呢我们是把上型消息和下型消息这边做了一些修改然后能让云上的消息通过我们的边缘通路下发到我们的Edge call这边来然后同样我们couplet要上报给API server上报给集群的消息也会通过我们的一个fake的一个couplet connect的bridge然后也就是我们的fake的一个connect去上报到我们的云上除此之外我们对couplet也做了一些裁剪那裁剪的工作主要就是右边这个部分那大家也可以看到就是我们其实在coupletEdge里面去维护了一个我们清凉化之后版本的一个k8s一个coupletlantis的一个仓库那这边我捏出来了一些commits其实就是这些commits里面就做就是我们做了哪些裁剪的工作包括有一些上下型消息的一些修改的工作都在这边然后每一个用户或者开发者其实都可以通过这些commit去清晰的看到我们就coupletEdge做了哪些去修改同时比如说我的有一些用户对清凉化的要求特别高他还有一些功能不太需要使用那他可以在这个基础上继续做一些裁剪那有一些用户他对一些功能的要求就是比较多他可能对清凉化没有那么在乎那他可以去把一些已经裁剪掉的commit去给恢复过来那这个时候恢复完之后他就有一个自己的coupletEdge的版本那他只需要在coupletEdge的仓库的勾墨的下面把这个版本号给换成他所需要的coupletEdge的那个版本就可以去自定义去在我们的自定义里一个自己的coupletEdge那这边就是我们的一个边缘的架构那最后我们可以再看一下我们这边的一些目前的一些工作以及之后的一些规划那我们也是致力于去打造一个面向多场景多领域的一个通用的边缘计算平台那包括比如说我们中间的部分就是我们肯定还是要去加强自身的能力包括在边缘的协同调度上去边缘的协同的编排以及我们的基础框架边缘的run time上我们都要做一些能力的增强那那个除了自身能力之外呢我们在北向我们也是想要支持更多的场景更多的应用比如说我们在AI方面其实我们也目前已经有了一个我们的子项目叫Satana大家也可以因为今天时间有限所以我这边就不再展开介绍了那Satana其实已经有了很多成功的案例比如说我们现在基于CoupletEdge和Satana的一个卫星已经发布成功了好 那在IoT场景呢我们也是希望未来能够发布一些IoT的套件人际物融合的一些能力那MECA包括网络方面我们也是提供了一个子项目比如我们的EdgeMesh那最后呢就是我们的机器人方向那我们也是承认了一个我们的RoboticsSeg来做我们的机器人方向的一些边缘的应用好 那这是我们北向的一些未来的一些计划那在南向上面呢我们也是希望能够支持更多多元易购的一个硬件设备比如说我们今天要提到的安卓那我们接下来这个月要发布的版本里面会支持Windows的操作系统那我们未来也会支持包括我们去年其实也在Open Harmony的操作系统上得到了成功的实践那都是这些我们在多种操作系统上的一个应用那除此之外呢我们也会目前我们主要是做一些边缘节点的管理未来我们也是希望能够做到边缘集群的管理或者插件的管理那在算力上呢我们也是未来希望能够支持更多的算力我们现在GPU这些我们都已经支持了那未来呢我们也是希望能够支持更多的虚拟GPU等等那这些都是我们未来的一个发展的方向好 那我的介绍主要到这那接下来时间我们交给温富财老师由他来以RK3568为粒子来介绍一下如何把酷败矩的边缘节点跑在安卓设备上大家下午好我是孔杰叔制的温富财那么接下来我为大家具体的以RK3568这一款开发版作为例子吧然后讲解一下在安卓上如何运行酷败矩虽然说是以RK3568为粒但是实际上的话像RK的其他的开发版Amlogic的一些开发版也甚至这种Google的手机安卓手机那么其实类似的做法然后其实都可以在这些系统上可以实现的然后这里的话是一些技术的要点就是像我们大家在日常的工作中使用这种云元生的这种产品CNCF家族里的这些开源软件就是包括Core i之吧那么实际上大家比较多的基本上都是在Linux系统来做那么在安卓上如何来做的话实际上其实是类似的因为整好的话安卓的系统它也是一个Linux的一个内核是也基于Linux实现的所以说实际上是一个类似的做法跟Linux那么首先的话我们需要对安卓的内核做一些修改因为像我们普通的包括开发版 包括手机那么它标准的版本里面实际上它是不支持容器化的应用运行的那么所以我们要拿到开发版或者手机的代码然后对内核做一些首先对内核做一些修改这些修改的观点的话主要是首先是Name Space的修改比如说House NameNetwork IPCMount等等这些角度上对Name Space要进行一个使能和打开然后第二点就是控制组控制组的话就包括CPUMemory CPU Set等等这些也需要进行一些打开然后就是网络网络的话基本上就看你的需要吧像我们普通的这种容器化这边我们比较多的是用VXLAN这种虚拟的网络那么看你的需要比如说你要是需要用跑这种IPVLANMacVLAN就是利用这种素主机的House Namework的这种情况那也是可以打开相应的一些选项然后就是文件系统文件系统的话我们基本上打开Rulei FS就可以了然后这下面还有一点就是一个特别的一个调度器然后就是我们如果在使用容器的时候对容器以它的CPU的比如说用CPU在Docker运行的时候用指定一下CPU的限制或者CPU Set或者说我们用压抹文件通过Coupling Control的云端来部署运用时候指定一下容器的CPU的Limit这种情况下那么这个容器在这个安卓端运行的时候它就会用的话其实用了CFS Linux的调度器那这个的话就是我们需要打开首先需要打开CFS的调度器在我们修改它内核的时候但是的话这个CFS调度器就跟安卓的这个Wild调度器它实际上是有个冲突的那么所以的话我们要想用到对CPU做限制的话我们就需要把安卓的Wild调度器给它关掉然后打开Linux的这个CFS调度器这是内核相关的一些修改然后就是安卓网络网络的话就是有这么几点需要注意首先就是安卓的话它是一个叫paranoid是一个这种骗子网络它这个所谓的骗子网络的话它就说它只允许特别的特定的一些组去创建Socket而我们要就是容器化也拥有跑这个容器的时候的话那么我们就其实去基本上就需要所有的组这个都要能够创建这个Socket所以呢我们就需要把这一条paranoid这个骗子网络给它禁掉然后就是安卓特有的一些点吧就是它在这个IP Table还有它的这个路由表的一些实现上跟Linux实际上是不太相同的比如说它的这个我们Linux的话它有一个MIM表在路由表上但是安卓的话它是每一个网卡都有一个路由表那这一天跟Linux不同所以我们需要需要做一些注意然后还有IP Table的一些规则在这个安卓上的话它IP Table是它这个出厂的时候基本上它这个IP Table的一些秤一些弱就说做了一些比较多的一些限制然后比如说有可能就会它就会使得我们容器的流量转发会被禁止所以在这个角度上我们也需要注意和这个做一些这种对应然后就是团柱那团柱的话因为这个怎么说呢就是安卓上它实际上它比较多的会用到这种band mount用到这种overlay的文件系统但是的话我们在这个容器在这个运行的时候它的backing的文件系统它是支持这种overlay这种以及它不能够使用这种加密的文件系统这个安卓上其实有些文件系统它是加密的那么不能用加密的文件系统作为它的backing文件系统所以这些个角度上也需要注意吧然后就是我们这个有时候我们在这个容器里的安卓的Linux这个容器里面我们可能会对这个速度机上的GPU啊 摩托啊 speaker这些物理的资源做一个直通的调用这个时候的话我们需要相关方面的了解那这一页的话基本上就是对我们刚才的这个介绍稍微头形化的这个展示一下其实刚才大概的这个内容其实刚才已经说过然后基本上必须要存储我们其实要用的是这个overlay的文件系统然后的name space包括这个network的name space要打开控制组CPU site memory等等网络 网络基本上我们就是用了vcharan这种文件系统然后这里的话还稍微呈现了一些这种细节吧当然这些细节的话我们最后的话会有一个Url吧这个github有一个Url把我这个过程或实际上会在那里给大家共享那这里有一些这种接图比如说左下方这边的话基本上就是说我们有一些这个控制组要给它这个挂载上因为这个安卓的话才确诚它可能没有挂载这些这些这些控制组然后右边的话是有一些内核要打开内核选项要打开当然了可能开发版不同我们需要打开这个这个选项可能也是不完全相同的这里仅仅是一个参考然后中下部分的话我们我们比如说就刚才提到的这个路由表嘛这个路由表我们可能要做一些这种workaround的吧比如这两条四里写了两条吧对路由表的这workaround的实际上这两条你可以认为基本上是等下的意思第一点的话就是第一条做法是说在这个面表里基本的意思就是说在这个面表中要加上这个一个比如说你要用一帖式这种有纤网卡的话那么把这个一帖式的这个圈上这个网关圈上网关要加到里面去或者你调整一下这个叫什么就是这个一帖式这个路由表它的这个在整个这个规则里面的这个优先度这样大概一个意思然后就是SELinux要进调其实我们在其他的比如Sendos这种操作系统上那么使用容器的时候基本上也都是会先把SELinux进调就是因为因为什么呢因为就是说这个SELinux所复予的这个容器的这个该予这个容器的这个这个叫什么它的这个Gamalow的这个这个权限麦克权限跟这个容器运行所需要的这个这个麦克权限不同所以的话就是你要不进去的话就是就是导致这个容器的运行失败然后就是一些实现的这个细节吧刚才我们说我们也RK3568为例就是实际上就是因为以它为例级基本上是因为它的代码从这个从这个网盘上其实就可以直接直接下载我们容易得到那么首先把它的这个SDK的这个代码给它下载了那下载了之后那就像刚才我们提到的那些点比如说这个Name Space呀这个空隙组等等这些选项给它打开那特别的有一点我们要注意一下这个CPU3的这个这个空隙组那么CPU3的话在Linux上和安卓的这个实现那个核的代码那么稍微不太一样就是说在Linux上我们这个CPU3的它的这个参数名它是有一个CPU3的底这么一个迁坠而在安卓的这个实现上没有所以说这一块我们比如要把这个代码安卓的这个代码给它修改一下使得就是说在安卓上当然因为安卓本身他也需要自己的CPU3的这个参数的名字那么我们就可以在保留这个安卓的CPU3的这个参数名的同时呢加上一个Linux小学的这样一个参数名也就是加带这个CPU3的底这样前队的这样一个这样一个名字然后的话就是我们也可以然后就说就基本上就说这个代码都这么修改然后修改它的可能ConfigDev Configure然后然后再加上比如说这个Linux这个当时在运行的时候比如需要一些User、Sbin等等这样一些目录在安卓的根目录下但是安卓的根目录下这个你要是在启动之后肯定不能修改所以我们在做经验的时候就要把这些目录给它创建出来等等吧做完这些修改之后你就可以就是编译这个经验然后刷机刷机了之后你可以在系统启动之后你可以用这个Check Config这样一个下要脚本去检查一下就是我现在就是我的安卓系统它的内核那么是不是都能够支持了容求化的运行那基本上这个检查的结果可能会分用必须部分和Option可选部分可选部分可能就像刚才我们介绍的样子可以给你的需要去选择的打开然后就是这个叫存储相关的那么我们在这个3568上用的时候我们基本上就是用一个MicroSD卡然后扩展了一下它的存储然后就是把SD卡的各式化然后创建了一个F2FS的文件系统然后作为这个Docker的Root文件系统Gamelot然后就是网络就是网络的话其实刚才在前面那张头大概已经表明了这个意思吧就这两条其实它是等价的然后其实这里还有一个IpTablesDelete这个Tether Control Forward的这个这个第一号如果其实就是一个它是一个drop的目录就是这一条规则的话就导致容器的这个Traffic没有被转发那么需要这样给它相当于回避一下吧这种对这就是安卓的话就是它的实现上有一些就是一些严格的这种规则的设定吧这上面可能没写就说实际上实际上还有一条就是说安卓的话系统它作为一个比较多的是作为这种移动的设备吧它这个有这种省电节电的这种需要然后那么它用EBPF作为实现了一个IpTables的一个chain或者一些规则吧然后就会对这个从容器里做一些系统调用这个IpTables的这些系统调用相关的一些系统调用做了一些系统调用的话做一些净值那么相应的我们也可能也需要把那些就是它有一些黑名单把那些把那些相关的这个规则给它取掉吧这种然后就是我们其实用的话就是也是倒扣官方的一些发行版吧这个它的release都不见了就是正好那就是一个一个静态的一个一个版本那么这里我们用了3568是一个264的一个一个版的嘛那么如果你用的是这个M32的话这个你可以下的现在MHF的HF的这个一个版本那么它正好就说是一个是一个Static的一个一个Banarray那么在我们做了刚才的那些修改之后这个东西呢正好就直接在安卓上可以使用那么它这个我们注意到就是够生态圈够远的好多这个Banarray release的时候都是这种Static的一个Banarray那正好就是感觉某种意义上讲给容器这种自包含就是它不依赖这个其他的一些酷啊这种有一点有点类似啊这种然后就是要对这个etcresolve的康复做一个修改加上一些name server吧因为这怎么怎么说呢就是安卓自身虽然它不用这个etcresolve的康复但是但是当时它作为实际上是一个 Linux应用嘛然后它是需要这个resolve的康复的说到这里的话正好就是说我们注意到其实在安卓上一个App叫Tomax这个Tomax实际上它里面的话也也也也有一个到刻的一个一个Banarray大家其实可以试用一下当然内内的那个Tomax里面对到刻的使用的话实际上也是需要这个我们对内核这些定制和修改的然后就是怎么说呢就是我们用安卓的这种nthrc的机制然后实现这个Docker的这个一个自启动这张图的话实际上是就是可以运行一下这个Docker的Hello World呀起一个endings的容器啊来表面就是刚才我们做的修改啊已经生效了就是使得我们这个安卓的设备从不支持容器到支持容器然后就是关于code edge那么刚才我们介绍的话Docker实际上怎么说呢我们是为这个code edge的运行做准备那虽然前面说的是Docker吧但是就是说比如code edge刚才报约他也讲到嘛就是说除了用Docker的运行时的话那么也可以直接用Kenten D或者其他的一些这种容器运行时所以说也就是说其他的容器运行时的话其实前面的修改基本上也都是类似的不要的那我们的话在前面的这个基础上我们使用code edge就打通了这个云和安卓设备作为这个边的这样一个云边的设备词的通信当然这个其实也是用的这个刚才报约提到的这个AdMesh它实际上冀于一个IPFS的一个P2V的一个一个机能吧那么实验的时候我们用的是一个1.10的有库外的版本然后我们就是在一个Armloos的server上编出一个静态的AdCore然后AdMesh是用了一个1.9的版本当然这个版本其实跟社区现在release的是有一点差距的然后稍微注意一下就是说我们在AdMesh在运行的时候我们要注意选择一下或者你的压谋做一些HarmChart的多一些修改就是因为我们变运的设备往往是Spike有点低比如CPU所以我们在HarmChart里面要修改一下它的CPU的request类似这样一些角度对 其实就是说我们在Armloos的server上编译了一些用dol file来编译出一个一个Static的AdCore然后把它AdCore烤出来然后就放到Android的设备上就可以用当然这是说的是Armloos的一个server当然实际上我们假设你手上没有Armloos的server那么你也可以就是在X6上然后用Qemail然后搞出一个比如说Armloos或者Arm32的一个容器然后在那里面去做这个编译应该类似的也是可以的然后就是我们注意到就是当然这只是一个提醒吧就是说Sintos做运行的server的时候它好像AdMesh相关的一些iPadOS规则没有正确的建立然后我们就改成汪图这里的话其实刚才好像是不是也讲过就是说这个资料上虽然没有写就是说这个iPadOS刚才说这个Android上iPadOS它有一个在带宽控制也就是其实为了节电然后在这个带宽控制上有一些黑名男的机制然后就导致因为这个AdMesh的话它实际上是一个Demonstrate它这个在Android的设备上它是hostnet walker运行的它要修改hostnet walker的iPadOS然后这个的话会被带宽控制的一些黑名单所禁止所以说这个角度上你也需要去用一些应对OK 这张图的话其实就是对我们刚才说到这个意思的话就是做了一个图形化接了一些图报上当也是然后就说首先你看到这个G Android的这个东西实际上就是我们说的RK3568然后它的云端库比港中看着Note可以看到然后底下的话就是我们看到这个AdMesh的AdMesh做Demonstrate在这个Android上也在运行然后在云端的一个service里面N一个容器里面可以访问可以curl通这个Android策所运行的那个service这是用了AdMesh的PdV东西OK 那就是最后做一个总结和展望那就是刚才说的我们刚才说的这个细节的话实际上在这个GTHAB上这有一个Url在那上面对这个过程一个详细的一个总结和呈现然后有一些扩展的方向就是当然刚才这个报业人内前面也提到就是Risk5上这些开发版是不是应该也是类似的是不是可以一样实现然后龙星的一些开发版等等然后就是除了这个Android我们说其实在OpenHarm里在社区里也有同学在尝试然后就是怎么说呢其实就是我们刚才讲的这个这些东西虽然时间有限但是你看其实这个修改这还是比较多的那么有没有说这个就是更轻量的一种比如说在这个Android上面去运行这种Sandbox这种容器化的这个应用有没有其他就是更比如说更轻量对内核要求更低的一些方案我们注意到说可能作为第三波的比如第一波是续机 然后容器然后第三波的所谓有这种说法吧可能是WebAssembly这种那么是不是可以这个在安卓登设备上能够更加轻易的就是说不需要我们做底层这么多的修改的然后也一样可以这个容器化的这个应用给它跑起来当然虽然这个WebAssembly还在一个这个发展期吧OK 谢谢 我的介绍大概就这些看大家有什么问题也可以交流一下我们Kube Edge在那您要不您这边问一个吧因为时间有限那我们这边这个问题结束之后大家可以去Kube Edge的展台去交流我就是想理解一下这个Kube Edge和标准的Kubeletis他们之间的关系我看理解是不是说你其实有两个KBS云上一个边缘一个然后中间通过两个HUB进行同步交流不是 不是 不是我们其实就只有一个KBS就只有一个KBS然后我们是在那一个KBS上面构建的那我们Cloud Core是部署在那个云上的那个KBS的那个集群里面边缘它其实就相当于我们的Kubelet这两个 Core可以单独跑吗比如说我只要那个Edge Core不要Cloud Core可以吗单独跑是可以的但是你云边的协同的能力就没有了那你比如说你要在云上面去部署一个部署一个应用往下你就没有办法去做到了那你这个云是指的你一定要供诱云吗我本地自己可以吗可以的所以它只是个概念上一个云并不是说我一定非得要在在供诱云上去做什么对 可以的你甚至可以是你的边缘云都可以好 理解那我们是在那个一楼也是有我们的Kube Edge的展台的因为今天时间有限之后明天Kube Edge的展台也是一直有人的大家如果有兴趣的话也可以在展台进行进一步的交流谢谢大家