很荣幸能够在Kubicom China 2021做分享先自我介绍一下我们是来自英特尔软件和高级技术部的工程师我是余琳目前主要是在做边缘计算相关的工作我是陈少强我也是在做边缘计算相关的工作我们这次分享的题目是扩展OpenYacht以支持视频分析业务的端道端部署这次分享的一题主要包括首先是视频流分析业务的PAPLAN集集容器的构成然后介绍一下OpenYacht的特性接着是视频流分析业务在OpenYacht边缘继续中的应用场景在此技术上我们介绍一下扩展OpenYacht的几个途径包括节点池层面的Inverse Control节点池层面的动态复杂均衡器以及是端道端的部署视频分析应用目前已经非常普及了比如车牌识别刷链解锁刷链支付还有小区非法入侵检测报警等等而且各种应用目前仍然处于快速的迭代和增长阶段以上提到的这些视频分析应用都是在这张图里的这个PAPLAN的基础上进行开发扩展的这个PAPLAN的主要功能包括首先是视频流的介入视频节码预处理然后使用不同的AI模型对视频进行分析并且把推理的结果应用到具体的业务场景里必要的话它还会在推理之后把推理结果以及关键的视频流进行编码上传到云端这类视频分析业务是天然适合部署在边缘测的因为首先视频流是在大量的设备端产生的如果要把这样海量的数据上传到云端会占用非常高的传输带宽第二各类应用为了保证用户体验会要求对视频进行实时处理如果走公网的话实验就没法保证了第三大量的数据通过公网传输数据的安全性也可能受到威胁这张图展示的是视频分析容器的构成视频分析容器运行在边缘节点机上机器有可能是边缘异地机弧器还有可能是虚机边缘几点有可能包含的计算设备包括GPU,CPU,VPU以及FPGA这些设备将会被视频分析业务用于计算或者是AI加速节点机上运行的操作系统需要支持KBS的容器接口一般是Linux同时包含了必要的内核驱动例如英特尔显卡的I915内核驱动紫色框中就是视频分析容器的软件站最底层的是必要的操作系统依赖库紧接着是基础的各种计算设备的用户空间的运行时例如英特尔的Level Zero Rampal在上层是易购计算框架包括OpenCL以及英特尔的IPI等等为了支持AI推理各种AI框架被继承起来包括英特尔的OpenLeno业界广泛使用的TensorFlow和Petouch等为了支持视频流的分析各种媒体框架如G Streamer, FFM Pack, OpenCV可以针对各个AI框架做扩展方便快速搭建刚才讲到的视频分析排斑最上面这层是视频分析业务的UseCase对岸要提供Restful接口以方便云烟圈以及边缘原生的系统中部署黄色部分是用户可以配置的部分包括要使用的计算设备用到的AI模型前处理,后处理,以及目标的UseCase等等这一页我们对OpenYacht的项目进行一个简单的介绍首先它是CNCF的杀箱项目它提出的初中设备了让原生的Kubernetes更好的适应边缘的场景为了达到这个目的OpenYacht主要进行了以下扩展首先,它增加了边缘自制功能这主要是通过Yacht Hub主键来实现的在云边断网的情况下它也能够保证边缘测正常的运行第二,它增加了边缘子集群的管理功能它把边缘节点根据不同的属性比如地域划分为不同的NodePort也就是子集群并支持基于NodePort的同一部署、同一管理第三,它增加了云边互通的功能这主要是通过Yacht Tunnel主键来实现的另外,它还集成了AdgeX Fundry以此来实现设备管理的功能对于OpenYacht未来的发展趋势我们觉得可以由以下几个方面第一是基础设施的增强主要包括功能的增强以及异用性的增强目前我们的工作主要集中在这个方面第二是提升运行时的可观察性并且提供异用的UI第三是安全性的增强比如证书的管理存储等等还有容器的安全性比如使用沙箱容器、机密容器等另外容器进向本身的安全性也是可以关注的一个方向这张图展示了如何将视频分析UseCase部署并运行在OpenYacht的基础环境当中左边是OpenYacht的一个提点池右边是云云端包含OpenYacht的Master提点也包含了用户的其他相关业务处理解决左边的视频流经过Ingress2接入进来经过LoadBalance的路由后把用户请求分发给合适的视频分析POD去做处理每个POD都是前面提到视频分析拍不烂对应不同的UseCase输出的结构化数据会在座本地处理本地输出比如会反映到监控大屏幕上或者通过POD Service上云可以看到视频流也许是非常大量的在一个地点或者不同地点也许会部署几十几百个摄像头这种规模化的部署就需要一个方便使用的统一的而且对资源利用率保持最优的边缘解决方案具体讲规模化部署视频分析业务提出了这样几个需求第一在节点池内针对用户的请求把请求分发到合适的后端UseCase第二每个UseCase也许会有多个POD部署在多个节点上我们需要把用户请求引导到一个最好的POD上比如保证最优的利用率或者能得到最优的享用速度第三用户在部署UseCase的时候需要一个简单的容易部署的API能够解决端端端部署并且也能够抑郁维护生和升级我们在这次分享里提到的三个Open Yacht的扩展组件Ingrance 附载均衡器和端端端部署主要就是解决规模化视频分析业务部署的这些需求的我们认为如果Open Yacht要是支持规模化的视频分析服务需要增加三个重点的feature一个是节点持级别的Ingrance服务任务是接入UseCase按照UseCase分败用户的Request第二个是动态的附载均衡器也是节点持Level的功能是根据当前的计算资源使用情况把用户的Request分败给合适的POD保证总体资源的利用最优失败附载均衡器还能够提供统计数据提供整体继续的可观色性第三个是为了方便用户部署UseCase还升级的需要一个端到端的部署的operator用户利用这个operator只需要提供必要的信息比如容器的img咱们好期望的升级方式就可以完成UseCase的部署前面提到Ingrance服务是用来接入业务请求的并且按照不同的UseCase把这些请求分发到相应的后端后端可以是Kubernetes原生的service也可以是我们扩展的附载均衡器在节点持层面部署Ingrance服务需要解决两个问题一个是Ingrance Controller的实现另一个是把Ingrance Controller部署到OpenYard的节点持当中去Ingrance Controller本身的实现我们重用了成熟的Ingrance Endings上游组件Ingrance Controller运行在节点持中不同的节点持的Ingrance是通过Ingrance Class来做区分的这样用户在添加Ingrance规则的时候使用的就是K8S标准的Ingrance APIIngrance Controller的部署是通过一个operator来实现的这个operator是运行在云端的master节点上的利用这个operator运萎人员可以通过CRD定义的规则在当个或多个或者全部的节点持中部署升级删除Ingrance Controller每个Ingrance Controller都应行于节点持里的指定节点上还可以指定External IP地址便于用户来方便的反问这个Ingrance节点持层面的Ingrance Controller目前还处于开发阶段计划会进入到Openya的0.6的版本中去Dynamic Load Balance也就是动态附载均衡器这里我们简称它为DLB它主要解决的是规模化部署实施VA业务时如何最优化的使用计算资源的问题DLB的核心功能是允许用户针对Usecase来配置附载均衡的策略例如计算设备的选择比如是使用CPU还是使用GPU然后期望的算法是什么是挤压式的还是均衡式的以及期望的信能比如FPS是多少DLB的实现也是遵循Kubernetes Operator的扩展方式它还包含Controller和CRD此外还需要数据层面的Proxy来配合完成针对具体请求的分发路由Controller它负责理解用户定义的CR也就是负载均衡的规则另外它还负责从Metrix Server那里获得单前节点持的Metrix信息并且把负载均衡规则以及Metrix信息都告诉Proxy再从Ingress接收到具体的业务请求后Proxy要根据从单前系统中收集到的节点和Pod的Metrix信息并依据用户在CR中指定的策略来把业务请求分发到最合适的Pod中去和Ingress服务一样DLB也是在节点持级别部署的所以它同样也需要一个operator来处理针对它的部署删除升级等操作DLB的实现目前还处于Proposal的讨论阶段目前Proxy这部分我们在考虑附用上游组件Invoy或者是LinkDMetrix Server这部分会引入已经被广泛使用的开源系统监控解决方案普罗米修斯在Ingress和DLB的基础上端到端部署解决的是用户快速部署和运为UseCase的问题同样是提供一个节点持层面的operator包含Controller和CRDCRD作为APN需要用户指定UseCase的名字版本,版本升级策略比如是蓝绿升级还是硅度升级业务容设惊像DLB的附载军和规则等等Controller在接受到CR变化之后需要部署一页5%好的添加DLB CR增加Egress规则这样就完成了端到端的串铃如果是升级需求则需要根据用户的升级策略来替换POD或者是分流POD端到端部署类似于Canative的森林概念但是因为要适配OpenR的需要针对节点持做实力化也需要额外提供针对节点持的部署工具这一点和Ingress和DLB是一样的目前端到端部署的operator正属于实验预言解决总之通过Ingress动态附载均衡器DLB和端端端部署这些组件规模化实流分析服务可以通过OpenR的在边缘得到有力的支持以上就是我们这次分享的全部内容谢谢