大家上午好那个接下来呢是由我和长正来为大家带来使用EBPF进行多级区流量的一个管理呃今天呢我们这是一个双人演讲首先来做一下自我介绍呃我叫张小辉是一个自身的一个程序员呃同时我也会在开源社区做一些工作是这个Linus Foundation呃开源部道者团队的然后也是CNCF的大使呃我现在目前在这个FloMesh工作在FloMesh担任一个高级原生价构施然后也会负责一些呃会负责一些这个技术部导的工作那我过去几年的经验呢主要都是在呃微服啊容器DiOps这个方向呃接下来是我们我的这个队友长正呃大家好我叫长正是呃华为那个容器软件开发攻城师也是·戡目尔达社区的一个主要的一个呃呃呃呃给郭县 things呃下面我来介绍一下讨论今天颜你脸演讲分享的一个内容呃呃当前原原生这个呃接跟一个现状和挑战呃呃呃可以从这个方面来讲第一点的话是一个呃单继纯的一个限制一般是推荐的一个呃标准里面结点的一个规格是在5000然后泡的一个容量是15万然后不会超过30万的一个容器单结点上面的泡的数量不会超过110个然后第二点的话是一个HA的一个部署的要求那么为了避免一个单点故障同时为了一个两地三中心的一个需求同时有个人用户也会遇到一个服务的一个弹性的容量然后第三点是一个多云那个架构的个实验因为现在有学者用户的一个业务的扩张可能在不同的地域都需要进行一个集群的部署所以需要进行一个所谓化的部署另外用户的话可能还会用到一个本地IDC加一个共云的运营的部署模式从而达到一个弹性的一个扩张容另外的话也可以多云可以避免厂商的一个锁定另外现在很多的一个词就叫门之效第四点的话是一个业务的一个隔离包括的话业务隔离以及团队隔离还有是开发流程的一个隔离当前多云多集群其实是在原生里面比较有名的一个趋势根据Flexion 2023年的一个报告指出超过87%的一个企业释放者正在使用多佳云厂商提供的一个服务那么这个报告主要从数据来言可能是北美和欧洲的一些企业国内的公司也可以看到也可以说是也会看到借鉴这个局势这也表示着原生技术和一个云市场的一个组建的成熟未来将会是一个多云服务管理的一个时代下面交位小伙伴刚才常镇已经介绍了我们现在原生应用的它一个发展趋势以及多云多集群在我们整个行业在我们整个技术中的这样一个趋势我们在处理多集群的这些应用的调度以及流量调度的时候我们可能会使用一些相关的技术来提升我们这些应用的调度的一个效率我们今天我们会介绍一个使用EVPF这样的一个方案EVPF它前身是一个BPF它其实就是一个网络包的这样的一个过滤器我们大家所能想的可能就是比较熟悉的就是TCP Dump它其实就是使用了一个BPF这样的一个工具它我们可以通过设置一些参数可以把我们一些网络里面的一些数据包把它过滤出来可以过滤出我们使用的一些数据包同样我也可以通过使用BPF的技术可以把一些我们认为危险度危险程度比较高的这些网络包把它给过滤掉就避免它进入到我们的应用程序里面那这边是PVF那EVPF它其实就是一个扩展的一个BPF这样的一个技术它的一个核心就是它的一个动态可编程那它就是可以实现可以动态的一种动态的方式可以把BPF程序加载到我们的这个Linux内核里面那同时它也会提供更多的比BPF来对相比BPF来说更多的这种内核的一些接口我们可以通过这些接口去处理像处理那些除了网络包的过滤以外的更多的一些场景那这几个slide我们就介绍一下就是我们的一个今天会设计的一些范围那今天的一个gendaOK 我这边漏了几个内容那EVPF它其实它的一个核心它就实现了我们的一个内核的一个可编程那我们可以通过编程的方式去扩展我们内核它原先没有的这样的一个能力那我们假如说我们在将这个BPF的程序把它加载到内核里面那它怎么去保证我们的一些安全性因为假如说我们把内核搞崩溃了那其实它的一个风险是非常高的那EVPF它提供了一些能力去保证我们的这个技术的一个稳定性那比如说它可以去做一些DIG的检查去检查我们这个程序的它的一个可达性是否我的BPF程序里面是唯有死循环或者是我们的程序执行能不能执行到我的这个程序的末尾然后它就可以然后它就是一个更加高效的一个处理的方式使用GIT的这样一个编译的方式可以把我们的BPF的程序编译成这个机器码原生的这个机器码然后再就是一个安全性那它使用的这个EVPF就是它的一个检查器可以对我们的BPF程序进行检查然后并且通过限制我们使用内核的这些接口的方式只暴露出一些安全的这样的接口让我们去比较安全的去使用内核的这些能力然后它就可以通过一些可加载的方式去把我们的程序加载和加载的内核里面以及从我们内核里面把它卸载掉那无需我们去重启我们的这个系统那其实它就是实现了这样的一个动态可别层的这样的一个方式就是我们不需要升级内核我们就可以去我们可以和扩展这些能力那有了这个多机群以及EPF技术的介绍那接下来就是我们今天的一些主要的内容就是我们在如何去应对我们在多机群的应用管理和流量管理里面如何去解决我们的这些应用的调度还有流量调度的一些难题那我们会介绍一下这个原生多机群的它的一个发展趋势以及EPF在我们原生领域里面它有哪些的应用它如何去处理我们流量的处理我们这个流量的列入列入的一些调度等等然后它就是我们在这个应用和多机群流量里面的我们的一个实践也会有一个比较简单的简单的一个演示的一个视频那最后呢就是说我们会有一个这个多机群的它的一个总结ok 接下来由常政给我们介绍一下我们如何在多机群里面去调度我们的一个应用好 谢谢小孔老师下面介绍一下多机群的一个现在一个趋势和一个需求那么现在我们多机群对于多机群大家可以分为三个阶段我们用三个比较是论文词来描述这三个阶段那第一个阶段是一群孤岛我们在这一群孤岛里面每个机群需要保持一个一致的一个部署一共一致的一个应用的一个交付那由于这个机群每个机群不同所以造成了一个业务的一个隔离那进行之间互相不感知那这样就造成了一个数据以及资源和流量的一个一系列的一个孤岛第二阶段是一个维尼斯水城的一个阶段这个阶段的一个特点就是要提供一致的一个应用的交付那也就是部署和运媒一致的以及一致的应用的访问也就流量的分发还有一致的一个资源的一个分配一个编排和调度另外的话这个阶段会提供少量小压力的一个跨军的服务访问那么最后的一个就是一个大航海的时代比较容易想到一个持自由在这个阶段里面实力数据以及流量就可以自动地进行调度自由的一个扩缩容以及自由的迁移那么现在我们说说的阶段肯定是还是在第一到第二阶段过渡的一个阶段现在看一下多级群的一个目前的一个挑战也是四个点可以来说第一个是单量的级群用户需要配置进行反杂起重复的一些级群配置那么不同厂商可能还有不同的一个级群的配置以及多个级群造成的一个多个API的访问入口造成了一个碎片化第二点是一个业务的分离不同级群可能有不同的一个配置的需求以及多级群的一个服务发现的一个需求以及级群之间的一个应用同步第三个是级群的一个边界那个级群其实也是一个物理的概念所以说造成的资源以及应用和HB的一个隔离另外就是厂商的一个绑定因为厂商的存在可能会对应户的应用产生了一定的粘性这样就缺乏那种中立需要一个看源比较中立的一个多级管理平台那么KamadaKamada它是一个看源的多级管理平台也是Kumnitz-Amada的一个检测它的目的是提供一个自由调度的一个容级资源词然后让用户像使用单级群一样使用多级群它们下游有六个一个特点第一件是提供那个可以兼容KBS原生的API用户可以直接无分从单级型升级到一个多级群第二个是一个开放中立第三是避免一个厂商锁定它还可以天然天生的支持一个多营平台用户不需要进行厂商的一个绑定第四个是一个提供一些开箱指引的功能可以支持两立三级型统统双活以及容栽另外提供了一个吩咐的调度侧裂支持一个集群清合性的调度以及多颗粒的多维度的一个调度包括多零净多AZ以及多集群和多提供商最后是一个集群的集中化的管理可以不管它是在比如过瘾或者是寿云以及便云它都可以进行同一的一个管理看一下commoder的架构可以看到它跟commoder的架构很类似分别于管理面和数据面在管理面上commoderAPI Server就负责用户和其他组件的一个交流像类似API Server那么它也会有一地是地的交互另外还有commoder自己的调度器以及一些控制器集合那么在数据面来说它可以根据是否与控制面直接联通分为两种类型PoS类型和PoR类型对于PoR类型来说用户可以通过部署commoder agent来与控制面commoderAPI Server这些连接这是目前commoder失去的一些adopter而也在持续增加中我们看一下今天的一个就是多情可发现的一个主题这个是commoder使用了KBUS SIGMODER CLASS组的一个题的一个MCXAPI对它进行了一个实现借助一个MCXAPI里面的services.export以及services.import的API对跨集群服务进行了一个功能上的实现用户需要把services.export和services.import分别发送到目的集群原集群 目的集群这样使得用户可以在跨集群进行服务的访问那么它的原理有点像就是直接把服务的后端收集到控制面然后分发到目的集群同时会产生一个derived潜税的一个service那么在目的集群上使用derived service就可以访问原集群那么这个方案有一个前提就是说需要打通集群之间的容器网络有这样一个限制但这个也在就是说特性也在直接去迪戴东迪戴东那么这个可以看到就是这还是有一些需要继续生化的一个地方一个就是如果这个多期网络没有打通怎么办另外就是说这个APIMCSAPI之外还有哪些方法可以就是说实现这个过去的服务的发现那么下面有Fliments小卉老师来介绍一下后面的一个演进OK 那我们通过使用卡马达已经把我们的这些应用调度到不同的一些集群然后使用不同的一些策略可以选择把我们这些应用是部署在哪些集群那我们在部署的时候其实通常我们会有两种部总统的一些方式那比如说我们可能会使用一些这种镜像的方式就是说我在任何在所有的集群把我的都部署我的权量的应用那我的应用我的这个请求既然登在我的集群之后就可以在我的集群内部就可以完成处理那另外一种就是说我是一个这种非镜像的一个部署方式就是说我的集群我的应用我的应用比如说我一部分应用分部在A集群一部分应用分部在B集群那这样呢其实它会要求我们之前应用之间的它需要有一个可以需要集群之间它可以正常地直接互通也就是说我在一个集群可以直接访问通过另外一个集群的POD IP可以直接到达我的一个目标的一个应用那其实这就会涉及到我们的这个Kubernetes它的一个这样的一个多集群的一个网络模型那比较常见的因为Kubernetes它是一个网络隔离的这样的一个模型也就是说它应用的每一个POD IP它其实在我集群内部才可以访问无法无法在集群外部直接访问的那这是它的一个这样的一个孤岛的模型也就是说我们在多集群的时候我没办法直接通直接从我的集群一直接去访问我集群二里面的这样的一个应用那相对的孤岛的这样的一个网络模型就是我们的一个扁平网络的一个模型也就是说我的多个集群里面的这些应用它的POD IP在所有集群里面它是一个唯一的而且它是一个通过几层的这样的一个大二层的网络也就是说我就可以在我的集群一里面我可以通过POD IP直接可以访问到集群二的因为它是使用了这样的一个大二层的一个扁平网络但是这样的一个网络架构对我们在多集群尤其是在多约里面它的要求是非常高的因为我们很在多个云场上之间去构建一个这样的一个大二层的一个网络那我们怎么这样处理呢那既然前面提到了这样的一个EPF那我们看一下这个EPF它在我们原生应用里面在原生的这样的一个环境里面它是如何去处理我们的这些流量的那前面有提到就说EPF它可以去扩充延伸我们扩展我们内核的这些能力那我们可以使用比如说我们使用岁源去编写我们EPF的程序然后把它编移成这个字节码之后那我们就可以通过我们的一些Library比如说Go的Library或者Python的这些Library把它夹在到内核里面然后内核它会去进行一个使用这个检查去进行一个安全性的一个检查然后检查完了之后它就会使用GIT的编一器把它编一程机器码那这一部分就完成了我们这样的一个家载编一开发编一家载这样的一部工作那当我们在处理网络流量的时候它是怎么去做呢就是我们当我们的一个应用程这样的一个进程它去发送它去发送一个Message的时候其实我们EPF它就可以去互和到我的这样的一个事件它就会去trigger我们的EPF的程序去进行我们的一些网络原数据的一些记录或者是一些网络原数据的一些修改它就是这样的一个运行的一个模式那这种模式就可不可以称得是它是一个事件驱动的一个模式也就是说我们可以通过通过把我们的EPF的程序把它绑定到很多的这样的一个事件上面然后当这个事件出现的时候它就可以去触发我们的EPF程序的一些执行那这些事件可以分为几种类型一个是内核函数的一个进入和退出然后再就是我们用户用户带的这些函数的进入和退出那这两个其实是涉及我们的一些设计到用户和系统函数的调用的再另外就是说它是有这个SDP也就是Express的data pass它可以在我们的整个网络的data pass上面可以去hook到我们EPF程序的执行然后再就是一些跟硬件CPU相关的也就是我们最右边这边它可以会在一些CPU的一些始终上面方面我可以去做一些这样的一些事件的一些记录那这就是EPF它的一个核心的一些概念吧那我们接下来我们看一下在原原生这个领域那我们的流量是怎么去流转的那我们这里以一个同节点的两个pod它去处理流量的一个流转的方式我们可以看到我们这里边左边的pod它发出一个请求之后首先它通过一个系统调用会去创建我们内核的这样的一个socket也就是我们的网络套接字然后再进入到我们的内核网络站然后在内核网络站上它会把我们的数据包会一层层地进行封装首先它会封装成TCP四层的这些信息加上一个TCP四层的header也就是我们的一个本地端口还有目标端口等等然后接下来就是三层本地地址和目地地址那最终这是以太层它会把我们以太包的header把它给加上去加上去之后它会再进行通过一些路由等等的一些操作会进入到我们另一个pod它的一个内核网络空间那同样它也是经过我们内核的处理它要把已经封装好的以太包一层层的解包它会解出来以太包的header然后再就是IP层然后再是TCP层最后写到我们这个应用它正在监听端口的网络套接字sockey里面然后完成数据的接收数据的返回其实也就是我们流程的一个返向我可以看到整个链路它是非常长的那其实我最终我们需要做的就是说我们的应用把我们的数据写到它自己的这边的一个sockey里面然后这个数据又进入到目标应用的它的一个sockey那其实这就是一个最简单的这样的一个这样的一个网络寻止的理解就是说它其实网络寻止其实我要找到对方应用对面应用的它的一个sockey的一个地址那我们能不能使用什么技术可以把整个链路缩短呢那我们这里就是我们会使用一个BPF的这样的一个技术那我们可以再从我们用户态的应用的一些函数的调用到我们sockey的这一层然后还有内核网络的战的这些部分我们都可以使用BPF的程序进行我们的一些数据的一些处理那怎么去处理呢那我们就可以通过在我们进行当我们初次进行创建创建这个TCP链接的时候我们会使用一BPF的程序把我们整个这个包的一些信息那最基础最简单的那些信息就是说我们的每一个网络包它会有本地地址本地端口目标目的地址还有目的目的端口再加上一个协议这样的一个五种这个五种数据我们把它成为一个数据原组那我们使用这个数据原组作为这个数据把它记录在这个内核里面然后当我创建链接之后呢其实我就可以通过原组这样的一个数据原组可以找到我的一个目标应用的它的一个套入接字的这个地址sockey的这个地址那我在做数据传输的时候我就不需要走这个内核网络站了那我就直接把数据写到把这个数据直接写到这个目标应用的它的sockey的里面也就是我不经过两次这个内核网络站了就缩短了它整个数据传输的这样一个路径这样就会大大的提升它的整个它的一个数据传输的一个性能那这就是EVPF它如何在我们的一个原原生的这个网络环境里面去提升我们这个应用的一个性能那其中性能它只是其中的一部分那我们其实使用了EVPF它的一个流量拦截的这样的一个技术那我们拦截到这个流量然后进行一部分的处理那在这个多级学理里面它有什么样的一个应用呢那这里有一个图那这左边是我们的这样的一个集群那我们在我们的集群的每一个node上面那我们在这里注意一下这里面我们什么在每一个node上面使用这个diminset的方式去部署了我们flowmeset的这样的一个FSM bridge这个bridge的这样一个pod里面它会有几种几个组件一个是我们从下面看它是一个bridge这个bridge它其实是一个够开发的这样的一个library它会连接到我们的这个APS server通过我们这个FSM的controller去连接到这个APS server它可以拿到我们集群的这些服务啊还有策略的这些信息它会把它写到我们这个内核的这个node节点内核的一个map里面也就是大家可以理解一个存出透然后当我这个pod启动的时候它会把我们的这个bps的程序加载到我们的这个节点的内核里面那我们就完成了bps程序的一个加载然后这个代理的组件它有什么用呢也就是说我们可以去修改我们网络包的一些信息那前面提到的就是一个原组嘛五原组我通过去修改当我的一个pod去发出一个网络包的时候我就可以把它的一个目标记者和目标端口把它修改把它改成我们这个poxy也就是我们这样的一个代理这样的一个组件的它的一个地址和端口那就完成了我们那个流量的一个拦截然后在我们的poxy里面然后就可以去完成我们那个流量的流量的一个代理那我可以把它代理到当前集权的应用或者是通过其他集权的这个应用的访问地址然后把它代理到其他的这个集权上面那它如何拿到这个应用的地址呢以及如何去它如何去拦截的这个流量那其实这里面都是这个bpfebpf它的这个工作那我们可以看到这个图可能会比较复杂可能看起来比较乱但是我们可以看到这个图里面它是有四个四个这个数据的一个流转的一个是我们的一个配置那这个配置就包含了比如说我的目标服务的它的一个访问地址或者我们的一些策略啊那这些这些这些这个配置呢也是通过其实就是通过我们的controller到了我们这个posit这边到了我们这个fsm bridge那第二条线路呢就是说这个dns的dns解析的这样的一个流程也就是说当我的一个应用我的一个pod去访问另一个pod的时候它是使用了每k8s的一个service那它首先需要首先要做一个dns的一个解析那我们会使用bpf的程序拦截到这个dns解析的这个dns解析的请求我会去检查你要访问的服务是多级群的服务还是当前级群的服务假如说你这个你这个应用你的目标应用只在当前级群部署那我就会放行你的dns查询的这个请求就由我们的core dns给你返回当前级群的它的这个当前这个应用它的一个服务的class IP那假如说你这个应用它要访问的应用是多级群的应用那它怎么知道呢其实就是我们前面这个配置就是我们的这个bridge它会把从controller那边拿到的多级群的这些访问信息写到bpf的这个存出统里面那我们bpf整体程序拦截到这个dns请求之后它会去检查存出统检查你要访问的这个应用它是假如它是一个多级群的应用的话它就会把你的dns的解析的地址改成我们那个poxy的地址那这样的话我应用在去做完的dns解析之后它发出的请求它的目标地址就变成了我们的poxy那我poxy同样也会持有多级群应用的它的这些访问地址那它最终就会按照策略去决定我是把这个应用把它把这个流量调度到哪个级群上面那这样就完成了一个这样的一个多级群流量的一个调度的流程那这里就下面有两条泄露就是分别就是说我是同级群的应用访问还有跨级群的应用的访问那大家可以就说后面这个ppc也会放出来大家可以按照上面的一个图示进行进行查看那大家也知道就是说我们假如要使用EPF这样的技术其实它是对我们Linux内核的版本是一定有要求的那我们这边fsm它是要求我们内核是最低的内核版本是5.8那假如说我们肯定会有一些存量的一些种它的内核版本可能会比较低的那我们要怎么去做呢那可能这时候我们就没办法去使用EPF这样的技术了那我们会有其他的另外一个方案也就是说我们可以去通过使用浮网格的这样的方案其实整个EPF的那个方案里面大家看到了就是说我去我首先我要去做到首先需要去拦截它的应用访问的这样的一个请求我要去拦截这个请求然后把这个请求拦截到截持到一个poxy里面其实这样的一个模式就是我们浮网格里面常用的也就是说其实我的pod里面的这样的一个塞卡也是这样一个代理它其实也是可以获取到我们多级群服务的这些访问地址的那也就是说当我的应用在发出发出请求的时候它的流量会被截持到我们pod里面的一个塞卡poxy然后由塞卡poxy根据策略去决定我如何去进行这一个请求的一个路由那这个就是浮网格的这样的一个技术浮网格的这样的一个方案它对内核的版本就没什么要求的那我们在这个两方案里面我们都用到了一个这样的Ingress的一个组件那这个Ingress组件它是有什么用呢就是说我们在前面介绍了假如说我们在混合多元的这样的场景下没办法去做到大二层的这样的一个扁平的网络也就是说我的pod IP它在多个级群里面它不是唯一的我也不是直达的那我们要怎么去处理呢就是说当我的一个多级群的应用我要把它向外暴露的时候暴露为一个多级群的服务那我们会自动为它创建一个Ingress的入口那我们就会把原来的这种四层的直接访问把它转换成一个七层的一个访问那这样的话其实这样的一个网它对网络的一个架构其实是要求是非常低的那我只要保证两个级群它能两个级群它是网络互通就可以了我不需要两个级群中的pod是互通的那我们就通过这样的一个Ingress这样的一个入口去解决我们的网络互通类问题其实这也正是我们在使用Coopernetix的时候我们如何把应用暴露到级群外去提供服务一样的是这样的一个操作那下面是以这样的一个掩饰在这个掩饰里面我们会使用到四个级群四个级群其中一个级群就是我们控制面的级群它去负责我们的一个应用的调度以及我们一些策略的一些调度然后其他的三个级群我们把它叫做数据面的级群在这个数据面上的级群我们会部署我们的应用那我们的应用之间它会进行互相的访问那我们这里呢不好意思可能不是很清楚在首先这里我们部署HTB应用我们使用Camada进行部署把它部署到Class1和Class3部署到两个级群里面去然后我们部署了一个客户端的应用就是我们的CUR那同样使用Camada去进行部署然后使用一个Propagation的Policy把它调度到这一级群二上面然后接下来我们去创建一个Service Export这样的一个资源那这个资源是完成一个服务的一个注册的一个动作那服务注册了之后呢就会自动去创建两个去创建这个Inverse的规则那我们就可以通过Inverse的入口去访问了那这个时候呢假如说我们从过Class2里面的个CUR去访问我们的这个HTB应用服务我们是访问不通的因为在多具权利面我们会以一个这样的一个默认的一个策略呢我们需要创建一个这样的一个网络策略然后创建网络策略之后呢我们就可以去使用这个Class2里面这个应用去访问我们的这个两个应用那它就是实现了一个跨集群的一个网络的跨集群的这样的一个网络的一个调度因为为什么一开始我访问不了呢因为默认情况下我们是只允许应用它去访问当前集群的这个应用的因为这样的话它就可以保证更好的一个性能可以搞一个比较低的这样的一个延迟那我们可以使用一个网络策略实家一个网络策略之后呢它就可以去访问其他应用的这样的一个集群了那我们这个网络策略其实也是比较灵活的那我们一共有三种网络策略那比如说我是默认的这种本集群访问在另外呢就是一个Fail Or也就是说我当前应用的出了问题之后无法访问之后呢它会Fail Or到其他的集群上面去在另外一个就叫Active Active的这样的一个策略它会在我多个集群之间进行这样的一个负载均衡前面介绍了前面我在演示里面呢其实我看到就是我在部署应用或者是我不向外暴露这个我们的服务的时候我都是使用Kamada去进行了一个操作也就是说我可以使用Kamada去进行我们的一个资源的一个分发那其实都是我们比如说我创建了一个Department创建一个Service那我们去进行这个资源的分发我们Kamada可以去完成完成这个资源它可以在我们的一个数据面的这个集群上面去创建对应的这个我们的这个工作负载那这个Service Export它其实就是对外暴露我们的这个多区群的一个服务它假如说我们在Kamada这个集群里面创建一个Service Export之后它也会同样把这个Service Export的资源调度到我们的这个数据面集群上面然后就完成了我们一个服务的这样的一个注册的一个工作然后我们的服务发现是怎么去完成的呢服务发现的就是说当我创建了一个Service Export这样的一个资源之后那首先我会自动给它创建一个Ingress这样的一个入口接着呢我会把你这个服务的方式也就是Ingress的地址把它注册到我们的这个控制面的集群然后这样就完成了一个服务的注册控制面的集群拿到我们的这些多区群的访问的注册的一些信息之后呢它就会创建这个Service Import这样的一个Data这个CR然后创建到把它在我们的这个数据面集群创建创建了之后呢那我们的数据面的集群就可以拿到其他集群里面这个应用的一个访问地址了那么可以看到整个方案就不管是我们刚才创建应用或者是为它创建创建级帕门 创建Service啊或者是Service ExportService Import其实这些呢都是我们KBS的它的这个标准的这种APIService Export跟这个Import呢它其实来自这个Master Collector的这个APIMaster Collector Service的这个API也就是MCSAPI这些都是一些标准的一些API然后呢再就是我们可以通过使用不同的这些网络的全局流量的网络策略可以进行我们多区群的一个流量的调度然后呢我们可以做一个统一的管理因为我们都可以在控制面上面去进行我们的资源的应用的部署啊还有我们的应用的注册啊等等都可以在我们的控制面进行操作然后在整个我们所有的这些操作是自动化的不管是我们的应用的调度啊还是Ingress入口的创建啊服务的注册发现等等这些全都是一个自动化的一个操作那么可以看到通过演示也可以看到整个它的使用是非常简单的我的需要涉及的这个CRD呢也是非常少的那么我们可以很容易的去学习然后呢我们可以很容易的去扩展然后呢因为它可以跟这个K8的整个生态可以很容易的去去兼容OK今天就是我们今天介绍的所有的这个内容可能时间有点超了啊接下来呢就说就说大家如果对这个卡玛达改进去然后可以扫描这上面的这个二维码以及卡玛达我们这个卡玛达我们项目的这个网站以及它的Gaithub仓库今天我们介绍的所有的技术其实包括不管是卡玛达还是我们FloMesh的这个FSM应用其实大家都是开源的所有的所有的这些方案整个方案啊所有的这些应用就是开源的大家都可以在Gaithub上面找到我们的这个仓库或者是找到我们的一个社群然后这边是我们FloMesh的FloMesh的就说我们就不管是我们在方案里面用到的Ingress的实现还是那个Poxy的实现这些全都是我们FloMesh字眼的其实我们不是用了像NGX啊N1这种这边一个字眼的这样的一个带领那大家可以扫描这二维码了解我们的这些技术的一些方案时间有点超就不知道还有提问的时间吗请教个问题刚才看到FloMesh里面用了XDP对XDP的话我了解是说它可能对英国的是跟这个对双向流量并没有这个做加速的你们在这流量变态的时候是会用到XDP吗这是一个在我们的这个多句群的这场景里面我们就没有用到这个ICP的加速因为在多句群里面我们可能涉及的就是这个DNS的这个请求的截持啊还有我们在福旺格那边我们会用到也会用到比如说福旺格我们会用到IPTables去接受流量那我们在同样也可以使用EPF去做这个流量的一个截持流量的一个截持那我们也可以实现因为上一场有老师也讲过他们使用这个EPF实现这个同节点的迫得访问的一个加速那么同样的也都使用这样的一些技术去实现的那XDP的话在里面也会有用到但是无视我们的一个核心这样子还有一个小问题就你刚才看到你们用了自己的那个用了一个LibraryGoLibrary是吧我了解CNCF有个项目也是跟EPF有关的就是Clin他们也用好是用Go写的这个Library是你们自己写的还是说用他们的Library这个Library其实我们自己写的那其实是在这个Library呢其实它就是做一些这一个BPF程序的一些夹仔然后再就是一些策略的因为BPF程序在运行在内核里面那我们的Controller是运行在这个用户态他们需要做一些数据交互那这Controller就Library就做一些这个数据的通过我们这个Map它会去做一些Map的这个更新那其实这部分呢BPF程序我们会用到一部分那个CM的一些对但是我们因为跟CM的一些处理还是不大一样的因为我们会做一些DS的一些截持啊等等这些还是会借鉴CM因为CM它做的还是比较比较好的嘛对吧那也就是说你这个GoLibrary在跨机型的时候这个Library还是要部署的那个不同的节点对因为我要在不同的节点上面去获取你的这个服务的访问的信息包含包含了就比如说Ingress的地址啊等等那我要把这个Ingress地址注册的我要把你这个机群注册到我的这个控制面机群那我注册的时候呢其实就把我这个机群的入口地址就带上去了那我的服务在注册的时候呢它其实只是把我们Ingress的规则的那个七层的PASS给注册到我们的这个控制面机群上面那就是我们是用四层用七层的用七层的这样的一个网络去解决我们四层不同的这样的一个问题谢谢你好我就刚听下来的话就你们更多的就说用EBPF的话对DS的一个解析的一个的一个应用是不是对对然后没有去修改说然后多机群的一个data pass对吧数据的一个data pass并没有说呃从比如说从绕过直接bypass某些什么那个对吧因为已经涉及到跨机群了嗯对因为跨机群的话那因为你我要因为我只是把你要做跨机群访问的时候才会截持到我的代理里面去嗯其实跨机群的话就没有说我做我做加速就是其实加速基本上都是在同节点上就同节点对对对呃那我问一下就是你们呃就是你们用你们然后EBPF然后做DNS解析还有跟你们在第一类合然后用一有的技术做DNS解析的这这两个这两者的性能的话差距是然后阵营有多大呃这个DNS解析这一块我们确实没有去做去做这个去做这个呃所以说呃因为上一场上一场有老师他们已经介绍过他们在用BPF做这个加速啊等等这件长久对还是挺我因为因为我我上场也听得满然后的话这场的话我理解下来的话你们用EBPF做的事情的话就是说对DNS的然后解析上面然后做了一个修改吗对对对那我就想问就说你用EBF对DNS解析的然后就说数率跟传统的然后解析的一个然后数率这一块的话如果没有争议的话对吧如果没有没有没有提升的话那这个加速的话我没看到你们加速点在哪里哦这个方案在这个多级学里面我们主要是用到了主要是用到了这个它的一个截止这个流量的一个这个DNS解析的一个截止因为整个DNS的解析它是在发生在内核里面嘛就是我冲破的里面去发一个DNS解析其实这个请求会转到这个截点的这个local的DNS上面嘛那我们在这个local上面去做一个截止因为因为这个DNS的这个处理因为EBF它执行在我们这个node解析的内核里面去嘛ok你说的这个网络加速同截点的网络加速其实是在我们使用辅网格的时候那它其实用的是最多的就说我们辅网格辅网格在同截点的加速同截点既然是同截点它肯定是当前极群嘛我知道在多级群里面我们就没有去做这样的一个处理对那我还有一个问题这可能跟commandant然后有点关系就是你们commandant的话然后集权里面的classip的话可以重叠吗这个是不要求的但是对于那个mcss那个方案的话它是不能要求重叠的就是不能要求重叠是吧对对对哦这个也是mcssapi的一个就是这个是comminence里面的一个sigma那个api设计的时候就是说有对这一点就是进行一个说明就是不能进行不能进行的那个puddy view不能进行一个重叠哦就是呢嗯对大概好谢谢哦要不要不这样就是以我们实验的时间确实调的比较多啊因为可能我们的工作人员他们要有用餐那我们因为我们两个人还会在这里大家如果有问题可以过来找我们就不耽误大家的时间了谢谢大家