在容器中运行虚拟机的网络实现方法、系统、设备及介质技术方案

技术编号:38941421 阅读:23 留言:0更新日期:2023-09-25 09:40
本发明专利技术公开了在容器中运行虚拟机的网络实现方法、系统、设备及介质,属于容器技术领域,本发明专利技术要解决的技术问题为如何在不改变kubevirt原有架构以及符合Kubernetes对Pod网络的规范要求前提下,实现减少虚拟机网络与所在节点的CNI数据面模块之间的数据链路长度,并跳过Pod网络命名空间的netfilter等非必要的内核网络协议栈处理;技术方案为:基于容器中运行虚拟机的网卡配置创建eBPF插件;将eBPF插件配置到容器内虚拟机的tap端口上,用于拦截虚拟机tap端口的ingress流量并重定向至容器内veth pair设备的端口;将eBPF插件配置到容器内veth pair设备的端口上。pair设备的端口上。pair设备的端口上。

【技术实现步骤摘要】
在容器中运行虚拟机的网络实现方法、系统、设备及介质


[0001]本专利技术涉及容器
,具体地说是一种在容器中运行虚拟机的网络实现方法、系统、设备及介质。

技术介绍

[0002]kubevirt是目前主流的Kubernetes平台纳管虚拟机的技术,每个kubevirt虚拟机对应于Kubernetes的一个VMI对象和一个Pod对象,每个kubevirt虚拟机对应的Pod中都会启动单独的virt

launcher进程和libvirtd进程,virt

launcher进程监听kubevirt虚拟机VMI对象的配置变化,更新虚拟机xml配置并下发到Pod内的libvirtd进程,libvirtd进程根据虚拟机xml配置管理虚拟机qemu进程的生命周期。
[0003]由于Kubernetes本身对Pod网络一些规范(CNI)要求,kubevirt虚拟机的tap端口在Pod所属网络命名空间中,无法直接连通Pod所在的节点,也无法与节点上CNI的数据面模块连接,比如无法与kuve

ovn CNI的ovs网桥连接。
[0004]目前,kubevirt提供了连接CNI数据面模块的绑定方法支持masquerade、bridge、passt、slirp、sriov等技术,由于masquerade、passt、slirp三种技术在虚拟机内都无法配置真实的IP地址,也无法支持trunk,不满足标准的虚拟机网络要求;sriov技术要求节点网卡支持sriov,配置非常复杂且对硬件要求较高,无法通用。所以kubevirt虚拟机连接CNI数据面模块比较通用的绑定方法是bridge技术。
[0005]如附图1所示,现有技术中bridge技术的应用,具体为:在虚拟机所属的Pod内创建一个linux网桥和一个veth pair设备,Pod内虚拟机的tap端口和veth pair设备的一个端口连接到linux网桥上,veth pair设备的另一个端口连接到节点CNI的数据面模块,这样Pod内虚拟机的tap端口就可以和节点上CNI数据面模块网络打通,Pod内虚拟机就可以通过节点CNI数据面模块与容器平台其他Pod或者虚拟机连通。
[0006]然而,在bridge技术中,虚拟机网络与所在节点的CNI数据面模块之间会额外经过Pod内的linux网桥,也会经过Pod网络命名空间的 netfilter 等非必要的内核网络协议栈路径,过长的网络链路和没必要的内核网络协议栈处理大大地增加了网络延迟和降低了网络效率。
[0007]故如何在不改变kubevirt原有架构以及符合Kubernetes对Pod网络的规范(CNI)要求前提下,实现减少虚拟机网络与所在节点的CNI数据面模块之间的数据链路长度,并跳过Pod网络命名空间的 netfilter 等非必要的内核网络协议栈处理,避免网络延迟,提高网络效率是目前亟待解决的技术问题。

技术实现思路

[0008]本专利技术的技术任务是提供一种在容器中运行虚拟机的网络实现方法、系统、设备及介质,来解决如何在不改变kubevirt原有架构以及符合Kubernetes对Pod网络的规范(CNI)要求前提下,实现减少虚拟机网络与所在节点的CNI数据面模块之间的数据链路长
度,并跳过Pod网络命名空间的 netfilter 等非必要的内核网络协议栈处理,避免网络延迟,提高网络效率的问题。
[0009]本专利技术的技术任务是按以下方式实现的,一种在容器中运行虚拟机的网络实现方法,该方法应用于Kubernetes平台纳管虚拟机,具体如下:基于容器中运行虚拟机的网卡配置创建eBPF插件;将eBPF插件配置到容器内虚拟机的tap端口上,用于拦截虚拟机tap端口的ingress流量并重定向至容器内veth pair设备的端口;将eBPF插件配置到容器内veth pair设备的端口上,用于拦截容器内veth pair设备的端口的ingress流量并重定向至虚拟机tap端口。
[0010]作为优选,基于容器中运行虚拟机的网卡配置创建eBPF插件具体如下:在拥有独立网络命名空间的Pod内运行一台虚拟机,虚拟机拥有一张或多张网卡,虚拟机的每张网卡在Pod内都有一个一一对应且能与网卡通信的tap端口,虚拟机的一个或多个tap端口位于Pod网络命名空间中;虚拟机的每个tap端口都与一个veth pair设备一一对应,每个veth pair设备均设有veth pair设备第一端口和veth pair设备第二端口两个端口;其中,veth pair设备第一端口位于Pod所属节点的默认网络命名空间中,并与Pod所属节点的CNI数据面模块连接; veth pair设备第二端口位于Pod网络命名空间中;基于虚拟机的一个或多个tap端口以及一个或多个tap端口对应的veth pair设备第二端口创建eBPF插件;其中,虚拟机的一个或多个tap端口与一个或多个tap端口对应的veth pair设备第二端口的关联关系存储在eBPF插件的eBPF map中。
[0011]更优地,eBPF插件拦截虚拟机tap端口的ingress流量并重定向至容器内veth pair设备端口时,将虚拟机tap端口的部分ingress流量拦截并重定向至容器内veth pair设备端口或将虚拟机tap端口的所有ingress流量拦截并重定向至容器内veth pair设备端口;eBPF插件拦截容器内veth pair设备端口的ingress流量并重定向至虚拟机tap端口时,将容器内veth pair设备端口的部分ingress流量拦截并重定向至所述虚拟机tap端口或将容器内veth pair设备端口的所有ingress流量拦截并重定向至虚拟机tap端口。
[0012]更优地,eBPF插件的eBPF map存储虚拟机的一个或多个tap端口与一个或多个tap端口对应的veth pair设备第二端口的关联关系具体为:将虚拟机的一个或多个tap端口名称作为键,并将一个或多个tap端口对应的veth pair设备第二端口名称作为值,组成第一键值对;将虚拟机的一个或多个tap端口对应的veth pair设备第二端口名称作为键,将一个或多个tap端口名称作为值,组成第二键值对;将第一键值对和第一键值对合并存储到eBPF插件的eBPF map中。
[0013]作为优选,将eBPF插件配置到容器内虚拟机的tap端口上,用于拦截所述虚拟机tap端口的ingress流量并重定向至容器内veth pair设备端口具体如下:在虚拟机的一个或多个tap端口上配置eBPF插件,eBPF插件用于将虚拟机一个或多个tap端口的ingress流量拦截并重定向至虚拟机一个或多个tap端口对应的veth pair设备第二端口;其中,虚拟机一个或多个tap端口的ingress流量是指一个或多个tap端口对
应虚拟机网卡的上行流量。
[0014]作为优选,将eBPF插件配置到容器内veth pair设备端口上,用本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种在容器中运行虚拟机的网络实现方法,其特征在于,该方法应用于Kubernetes平台纳管虚拟机,具体如下:基于容器中运行虚拟机的网卡配置创建eBPF插件;将eBPF插件配置到容器内虚拟机的tap端口上,用于拦截虚拟机tap端口的ingress流量并重定向至容器内veth pair设备的端口;将eBPF插件配置到容器内veth pair设备的端口上,用于拦截容器内veth pair设备的端口的ingress流量并重定向至虚拟机tap端口。2.根据权利要求1所述的在容器中运行虚拟机的网络实现方法,其特征在于,基于容器中运行虚拟机的网卡配置创建eBPF插件具体如下:在拥有独立网络命名空间的Pod内运行一台虚拟机,虚拟机拥有一张或多张网卡,虚拟机的每张网卡在Pod内都有一个一一对应且能与网卡通信的tap端口,虚拟机的一个或多个tap端口位于Pod网络命名空间中;虚拟机的每个tap端口都与一个veth pair设备一一对应,每个veth pair设备均设有veth pair设备第一端口和veth pair设备第二端口两个端口;其中,veth pair设备第一端口位于Pod所属节点的默认网络命名空间中,并与Pod所属节点的CNI数据面模块连接; veth pair设备第二端口位于Pod网络命名空间中;基于虚拟机的一个或多个tap端口以及一个或多个tap端口对应的veth pair设备第二端口创建eBPF插件;其中,虚拟机的一个或多个tap端口与一个或多个tap端口对应的veth pair设备第二端口的关联关系存储在eBPF插件的eBPF map中。3.根据权利要求1或2所述的在容器中运行虚拟机的网络实现方法,其特征在于,eBPF插件拦截虚拟机tap端口的ingress流量并重定向至容器内veth pair设备端口时,将虚拟机tap端口的部分ingress流量拦截并重定向至容器内veth pair设备端口或将虚拟机tap端口的所有ingress流量拦截并重定向至容器内veth pair设备端口;eBPF插件拦截容器内veth pair设备端口的ingress流量并重定向至虚拟机tap端口时,将容器内veth pair设备端口的部分ingress流量拦截并重定向至所述虚拟机tap端口或将容器内veth pair设备端口的所有ingress流量拦截并重定向至虚拟机tap端口。4.根据权利要求2所述的在容器中运行虚拟机的网络实现方法,其特征在于,eBPF插件的eBPF map存储虚拟机的一个或多个tap端口与一个或多个tap端口对应的veth pair设备第二端口的关联关系具体为:将虚拟机的一个或多个tap端口名称作为键,并将一个或多个tap端口对应的veth pair设备第二端口名称作为值,组成第一键值对;将虚拟机的一个或多个tap端口对应的veth pair设备第二端口名称作为键,将一个或多个tap端口名称作为值,组成第二键值对;将第一键值对和第一键值对合并存储到eBPF插件的eBPF map中。5.根据权利要求1所述的在容器中运行虚拟机的网络实现方法,其特征在于,将eBPF插件配置到容器内虚拟机的tap端口上,用于拦截所述虚拟机tap端口的ingress流量并重定向至容器内veth pair设备端口具体如下:在虚拟机...

【专利技术属性】
技术研发人员:廖桥生李明金伟毅种保中
申请(专利权)人:苏州思萃工业互联网技术研究所有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1