一种容器中运行虚拟机的网络实现方法技术

技术编号:39495757 阅读:14 留言:0更新日期:2023-11-24 11:22
本发明专利技术公开了一种容器中运行虚拟机的网络实现方法

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


[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
技术

其中,
CNI(Container Network Interface)
数据面模块是指
Kubernetes

Pod
网络的一些规范,符合
CNI
规范的网络插件称为
CNI
插件,
CNI
数据面模块是指符合
CNI
规范的
CNI
插件的数据面模块,比如
kuve

ovn CNI
插件的
ovs。
[0005]如附图1所示,在虚拟机所属的
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]专利号为
CN114510323A
专利申请公开了一种在容器中运行虚机的网络优化实现方法

本方法在
Kubernetes
的场景下,通过主机网络模式创建虚机的容器组
Pod
,然后通过
kubevirt

Pod
的容器中创建主机网络设备并完成网络设置,最终完成虚机创建

该技术方案解决了虚机网络到节点的链路过长导致网络延迟的问题,缩短了虚机网络到节点的链路,减少了网络延迟,提高了网络传输效率,降低了虚机网络性能的损耗

另外,该技术方案改进了
kubevirt
创建虚机的流程,简化了处理过程,在整个虚机的生命周期里,排除了
cni
的业务流程,降低了和
ovn
的耦合性,改善了用户体验,为容器和虚机整合技术的发展提供
了助力

但是该技术将运行虚拟机的
Pod
使用主机网络的方式实现的,这种方式放弃了运行虚拟机
Pod
容器之间的网络隔离,而且虚拟机无法使用
Kubernetes
多种多样的
CNI
插件配置网络,导致虚拟机与普通
Pod
无法连接同一个
CNI
插件网络

[0008]故如何能够在不改变
kubevirt
原有架构以及符合
Kubernetes

Pod
网络的规范
(CNI)
要求前提下,减少虚拟机网络与所在节点的
CNI
数据面模块之间的数据链路长度,并跳过
Pod
网络命名空间的
netfilter
等非必要的内核网络协议栈处理,进而减少容器内虚拟机的网络延迟并提高网络效率是目前亟待解决的技术问题


技术实现思路

[0009]本专利技术的技术任务是提供一种容器中运行虚拟机的网络实现方法

系统

设备及介质,来解决如何能够在不改变
kubevirt
原有架构以及符合
Kubern本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.
一种容器中运行虚拟机的网络实现方法,其特征在于,该方法是通过
tc mirred
技术将容器内虚拟机的
tap
端口与连接
CNI
数据面模块的
veth pair
设备端口网络打通,减少虚拟机网络与
CNI
数据面模块之间的数据链路长度,并跳过容器网络命名空间的内核网络协议栈处理;具体如下:在容器内虚拟机
tap
端口上创建第一
tc ingress
队列;基于第一
tc ingress
队列创建第一
tc mirred
策略,用于拦截虚拟机
tap
端口的
ingress
流量并重定向至容器内
veth pair
设备端口;在容器内
veth pair
设备端口上创建第二
tc ingress
队列;基于第二
tc ingress
队列创建第二
tc mirred
策略,用于拦截容器内
veth pair
设备端口的
ingress
流量并重定向至虚拟机
tap
端口
。2.
根据权利要求1所述的容器中运行虚拟机的网络实现方法,其特征在于,在容器内虚拟机
tap
端口上创建第一
tc ingress
队列以及在容器内
veth pair
设备端口上创建第二
tc ingress
队列具体如下:在拥有独立网络命名空间的
Pod
内运行一台虚拟机,虚拟机拥有一张或者多张网卡,虚拟机的每张网卡在
Pod
内都有一个一一对应且能与虚拟机通信的
tap
端口,虚拟机的一个或者多个
tap
端口位于
Pod
网络命名空间中;虚拟机的每个
tap
端口都与一个
veth pair
设备一一对应,每个
veth pair
设备设有两个端口,分别为
veth pair
设备第一端口和
veth pair
设备第二端口;其中,
veth pair
设备第一端口位于
Pod
所属节点的默认网络命名空间中,并与
Pod
所属节点的
CNI
数据面模块连接;
veth pair
设备第二端口位于
Pod
网络命名空间中;在
Pod
命名空间内,在虚拟机一个或者多个
tap
端口上分别创建各自的第一
tc ingress
队列,用于缓冲一个或者多个
tap
端口各自的
ingress
流量;在
Pod
命名空间内,在虚拟机一个或者多个
tap
端口对应
veth pair
设备第二端口上分别创建各自的第二
tc ingress
队列,用于缓冲一个或者多个
tap
端口对应
veth pair
设备第二端口各自的
ingress
流量
。3.
根据权利要求1或2所述的容器中运行虚拟机的网络实现方法,其特征在于,基于第一
tc ingress
队列创建第一
tc mirred
策略,用于拦截虚拟机
tap
端口的
ingress
流量并重定向至容器内
veth pair
设备端口具体如下:基于虚拟机一个或者多个
tap
端口所创建的各自第一
tc ingress
队列分别创建各自第一
tc mirred
策略,将虚拟机一个或者多个
tap
端口
ingress
流量拦截并重定向至虚拟机一个或者多个
tap
端口对应
veth pair
设备第二端口;其中,虚拟机一个或者多个
tap
端口的
ingress
流量是指一个或者多个
tap
端口对应虚拟机网卡的上行流量
。4.
根据权利要求3所述的容器中运行虚拟机的网络实现方法,其特征在于,基于第二
tc ingress
队列创建第二
tc mirred
策略,用于拦截容器内
veth pair
设备端口的
ingress
流量并重定向至虚拟机
tap
端口具体如下:基于虚拟机一个或者多个
tap
端口对应
veth pair
设备第二端口所创建的各自第二
tc ingress
队列分别创建各自第二
tc mirred
策略,将一个或者多个
tap
端口对应
veth pair
设备第二端口的
ingress
流量拦截并重定向至一个或者多个
tap
端口;其中,一个或者多个
tap
端口对应
veth pair
设备第二端口的
ingress
流量是指一个或者多个
tap
端口对应虚拟机网
卡的下行流量
。5.
根据权利要求3所述的容器中运行虚拟机的网络实现方法,其特征在于,第一
tc mirred
策略的方向为
egress
;第一
tc mirred
策略的动作为
redirect
;第一
tc mirred
策略的目标端口为
veth pair
设备第二端口;第一
tc mirred
策略的缓冲队列为第一
tc mirred
策略关联的第一
tc ingress
队列;第一
tc mirred

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

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

1