实现kubernetes容器多网络平面的方法及装置与流程

文档序号:25886682发布日期:2021-07-16 19:19阅读:436来源:国知局
实现kubernetes容器多网络平面的方法及装置与流程

1.本发明涉及kubernetes容器技术领域,具体地说是实现kubernetes容器多网络平面的方法及装置。


背景技术:

2.近年来云计算技术蓬勃发展,特别是虚拟化、容器技术的突飞猛进。容器技术以其轻量化,快速启动,占用资源少,安全性高等特点,已经慢慢取代虚拟化成为云计算基础。docker容器凭借其技术优势,已经成为容器事实上的标准。
3.docker使用linux内核和内核功能(例如cgroups和namespaces)来分隔进程,以便各进程相互独立运行。这种独立性正是采用容器的目的所在;它可以独立运行多种进程、多个应用,更加充分地发挥基础设施的作用,同时保持各个独立系统的安全性。不过docker并没有解决跨节点应用编排部署等问题,kubernetes应运而生。
4.kubernetes用于管理云平台中多个主机上的容器化的应用,是一个开源的平台,可以实现容器集群的自动化部署、自动扩缩容、维护等功能。主要功能包括如下几个方面:负载均衡和服务发现、跨机器和跨地区的集群调度、自动伸缩、无状态服务和有状态服务、广泛的volume支持、插件机制保证扩展性以及基于容器的应用部署、维护和滚动升级。
5.在kubernetes中,网络是非常重要的一个领域。kubernetes本身不提供网络解决方案,但是提供了cni规范。这些规范被许多cni插件(例如weavenet,flannel,calico等)遵守。这些插件中任何一个都可以在集群上使用和部署以提供网络解决方案。该网络称为集群的默认网络。此默认网络使pods不仅可以在同一节点上而且可以在群集中的各个节点之间相互通信。kubernetes缺乏支持vnf中多个网络接口的所需功能。传统上,网络功能使用多个网络接口分离控制,管理和控制用户/数据的网络平面。他们还用于支持不同的协议,满足不同的调整和配置要求。
6.随着移动通信的发展,网络设备it化成为趋势,特别是传统电信设备从软硬件一体化到网络功能虚拟化nfv进行转型。而nfv的基础设施层已经越来越倾向于采用虚拟机和容器超融合的方式来实现高可用,分布式,弹性伸缩等特性。而跨节点容器部署平台kubernetes也显出在电信网络中的重要性,但是原生kubernetes仅仅支持单网络平面,而面对电信网元,比如基站,核心网等都是多网络平面,管理网络、控制网络和数据网络的隔离(必要情况下,数据网络的data in和data out网络也要进行隔离)。这种隔离在物理机和虚拟机里面很容易实现,但是在pod里面,如果使用kubernetes这样的容器云管理平台,则会面临一些限制,尤其是现在kubernetes的pod默认还不支持多网卡,但是业界对pod多网卡的需求还是很强烈的。而此时就需要开发支持多网络平面的kubernetes的高性能插件。首先就需要面对如何实现kubernetes多网络平面,以及提高多网络平面的转发性能,以及多租户场景下的网络隔离安全性等。
7.基于上述分析,如何实现kubernetes平台支持多网络平面,是需要解决的技术问题。


技术实现要素:

8.本发明的技术任务是针对以上不足,提供实现kubernetes容器多网络平面的方法及装置,来解决如何实现kubernetes平台支持多网络平面的技术问题。
9.第一方面,本发明提供一种实现kubernetes容器多网络平面的方法,包括如下步骤:
10.配置物理机,包括物理机开启sriov,linux开启iommu,选择物理网卡配置多个vf;
11.创建虚拟机,配置openstack支持sriov;
12.创建kubernetes集群,在kubernetes集群节点上配置物理端口bonding,实现链轮冗余;
13.在kubernetes集群中部署multus插件,multus插件为运行于kubernetes集群的pod提供多个网络接口;
14.部署calico网络插件,所述calico网络插件作为multus的主网络接口,并作为pod的默认网络插件;
15.部署kube

ovn网络插件,所述kube

ovn网络插件作为pod的第一辅网络接口,并创建kube

ovn辅网络插件networkattachmentdefinition,开启ovs

dpdk支持,利用dpdk的转发功能提供网卡转发效率;
16.部署sriov网络插件,所述sriov网络插件作为pod的第二第辅网络接口;
17.修改适配每个网络插件配置的网络策略,相互隔离,控制pod的输入输出流量,并配置pod白名单;
18.部署pod并配置pod注解,分别加入kube

ovn网络插件以及sriov网络插件,为pod增加多网络配置。
19.作为优选,配置物理机还包括:
20.配置多网卡绑定功能,提供网络链路的冗余能力;
21.配置网口的bonding功能,当bonding中的单个网口发生故障,其它正常网口能够自动接管网络通信。
22.作为优选,创建虚拟机,配置openstack支持sriov,包括:
23.在物理机上部署openstack;
24.openstack创建sriov网络、子网、sriov端口,并创建虚拟机挂载sriov网卡。
25.作为优选,部署multus插件包括设置pod cidr以及设置bgp模式。
26.作为优选,部署kube

ovn网络插件包括:
27.创建默认子网、node子网以及自定义子网;
28.通过namespace级别的ip管理划分,划分管理pod ip。
29.作为优选,配置物理机还包括:
30.物理机容器挂载sriov网卡,部署sriov

device

plugin,并配置vf到device plugin;
31.部署sriov

cni,并创建使用sriov网卡的networkattachmentdefinition;
32.在物理机kubernetes集群中创建pod,在pod中查看pod网络接口,pod网络接口包括包括eth0、net0以及net1,eth0作为管理子网,net0作为业务子网,net1作为存储子网。
33.作为优选,所述calico网络插件占etho网口;
34.部署kube

ovn网络插件后,解绑定kube

ovn的ipam,通过cni_ifname传递pod的net0网络接口,修改默认网络路由。
35.第二方面,本发明提供一种装置,包括:至少一个存储器和至少一个处理器;
36.所述至少一个存储器,用于存储机器可读程序;
37.所述至少一个处理器,用于调用所述机器可读程序,执行方面任一所述的方法。
38.第三方面,本发明提供一种计算机可读介质,所述计算机可读介质上存储有计算机指令,所述计算机指令在被处理器执行时,使所述处理器执行第一方面任一所述的方法。
39.本发明的实现kubernetes容器多网络平面的方法及装置具有以下优点:
40.1、在kubernetes集群部署multus插件,主网络插件选用calico插件,第一辅网络插件选用kube

ovn插件,第二辅网络插件选用sriov插件,pod通过注解设置所使用的cni插件,来配置pod的网络接口,通过linux的多网络bonding功能实现多网卡绑定,当bonding中的单个网口发生故障(硬件故障、网线被拔出、链路被禁用等)时,其它正常的网口应自动接管网络通信,既可以满足多网络平面配置又能实现高的转发效率,同时按照namespace隔离网络,使得网络安全得到保证。
41.2、物理网卡多端口绑定,实现链路冗余,单一网卡故障,系统自动切换到正常网卡,不影响业务。
附图说明
42.为了更清楚地说明本发明实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
43.下面结合附图对本发明进一步说明。
44.图1为实施例1实现kubernetes容器多网络平面的方法中multus管理多网络的架构图;
45.图2为实施例1实现kubernetes容器多网络平面的方法的框架图;
46.图3为实施例1实现kubernetes容器多网络平面的方法流程框图。
具体实施方式
47.下面结合附图和具体实施例对本发明作进一步说明,以使本领域的技术人员可以更好地理解本发明并能予以实施,但所举实施例不作为对本发明的限定,在不冲突的情况下,本发明实施例以及实施例中的技术特征可以相互结合。
48.本发明实施例提供实现kubernetes容器多网络平面的方法及装置,用于解决如何实现kubernetes平台支持多网络平面的技术问题。
49.实施例1:
50.实现kubernetes容器多网络平面的方法,包括如下步骤:
51.s100、配置物理机,包括物理机开启sriov,linux开启iommu,选择物理网卡配置多个vf;
52.s200、创建虚拟机,配置openstack支持sriov;
53.s300、创建kubernetes集群,在kubernetes集群节点上配置物理端口bonding,实现链路冗余;
54.s400、在kubernetes集群中部署multus插件,multus插件为运行于kubernetes集群的pod提供多个网络接口;
55.s500、部署calico网络插件,所述calico网络插件作为multus的主网络接口,并作为pod的默认网络插件;
56.s600、部署kube

ovn网络插件,所述kube

ovn网络插件作为pod的第一辅网络接口,并创建kube

ovn辅网络插件networkattachmentdefinition,开启ovs

dpdk支持,利用dpdk的转发功能提供网卡转发效率;
57.s700、部署sriov网络插件,所述sriov网络插件作为pod的第二第辅网络接口;
58.s800、修改适配每个网络插件配置的网络策略,相互隔离,控制pod的输入输出流量,并配置pod白名单;
59.s900、部署pod并配置pod注解,分别加入kube

ovn网络插件以及sriov网络插件,为pod增加多网络配置。
60.步骤s100中,配置物理机还包括在物理机上配置多网卡绑定功能,提供网络链路的冗余能力,为了应对网络单链路故障,配置网口的bonding功能,当bonding中的单个网口发生故障(硬件故障、网线被拔出、链路被禁用等)时,其它正常的网口应自动接管网络通信。
61.步骤s200中,物理服务上部署openstack,openstack创建sriov网络、子网、sriov端口等。并创建虚拟机挂载sriov网卡。
62.步骤s300中,kubernetes集群包括一个controller节点(控制节点)和三个worker节点(工作节点),在kubernetes集群部署multus多网络插件,配置multus conf文件,指定主网络和第一辅网络和第二辅网络。
63.步骤s400中,在kubernetes集群中安装配置multus插件。multus可以为运行在kubernetes的pod提供多个网络接口,它可以将多个cni插件组合在一起为pod配置不同类型的网络。
64.步骤s500中,部署calico网络插件,设置pod cidr,设置bgp模式,配置为multus主网络接口,并作为pod之间的默认网络接口。
65.步骤s600中,部署配置kube

ovn网络插件,创建默认子网以及node子网,自定义子网;通过namespace级别的ip管理划分,精细化管理pod ip,并结合ovs的特性。使得pod间通信可靠高效;通过cni_ifname传递pod的net0网络接口,修改默认网络路由;部署sriov

device

plugin和sriov

cni,创建kube

ovn辅网络插件networkattachmentdefimition,开启ovs

dpdk支持,利用dpdk的转发功能提供网卡转发效率。
66.步骤s800中,调用kubernetes集群创建pod,在pod部署脚本注解中指定pod的网络插件类型为kube

ovn和sriov。pod创建成功后,进入pod里面,查看pod网络接口,包括eth0,net0,net1。eth0作为管理子网,net0作为业务子网,net1作为存储子网。测试pod的各个子网的互通性。验证网络的完整性。
67.本实施例中,配置多网络平面的第一辅网络插件为kube

ovn,支持租户网络,支持ovs

dpdk,支持网络策略等,分配给pod为net0;配置多网络平面的第二辅网络插件为sriov
网络,分配给pod为net1。
68.步骤s400中,calico网络插件占etho网口,由于kube

ovn绑定ipam,默认占用eth0,而calico作为主网络插件已经在eth0分配ip,所以需要解绑定kube

ovn的ipam。因此部署kube

ovn网络插件后,解绑定kube

ovn的ipam,通过cni_ifname传递pod的net0网络接口,修改默认网络路由。
69.在上述创建pod的基础上,步骤s900中限制pod的互相访问,增加calico,kube

ovn,sriov的网络策略,控制pod输入输出流量。
70.不限于在虚拟机平台部署容器实现多网络平面,还包括在物理机平台部署容器实现pod多网络平面。
71.本实施例中各个网络插件指定ipam管理分配ip地址;每个网络插件配置紫的的pod cidr和service cidr等;每个网络插件可配置为动态获取ip或者配置静态ip方式等。
72.物理机容器挂载sriov网卡,需要部署sriov

device

plugin,并配置vf到device plugin。部署sriov

cni,并创建使用sriov网卡的networkattachmentdefinition。在物理机kubernetes集群中创建pod。pod创建成功后,进入pod里面,查看pod网络接口,包括eth0,net0,net1。eth0作为管理子网,net0作为业务子网,net1作为存储子网。测试pod的各个子网的互通性。验证网络的完整性。
73.本发明还涉及到在pod多网络平面中,通过服务访问pod,在服务中指定pod的具体网络平面,那么服务就可以连通指定的网络平面。要确保服务和pod的多网络平面的互通。
74.实施例2:
75.本发明的一种装置,包括:至少一个存储器和至少一个处理器;上述至少一个存储器,用于存储机器可读程序;上述至少一个处理器,用于调用所述机器可读程序,执行本发明实施例1公开的方法。
76.实施例3:
77.本发明的一种计算机可读介质,上述计算机可读介质上存储有计算机指令,上述计算机指令在被处理器执行时,使上述处理器执行本发明实施例1公开的方法。具体地,可以提供配有存储介质的系统或者装置,在该存储介质上存储着实现上述实施例中任一实施例的功能的软件程序代码,且使该系统或者装置的计算机(或cpu或mpu)读出并执行存储在存储介质中的程序代码。
78.在这种情况下,从存储介质读取的程序代码本身可实现上述实施例中任何一项实施例的功能,因此程序代码和存储程序代码的存储介质构成了本发明的一部分。
79.用于提供程序代码的存储介质实施例包括软盘、硬盘、磁光盘、光盘(如cd

rom、cd

r、cd

rw、dvd

rom、dvd

ram、dvd

rw、dvd+rw)、磁带、非易失性存储卡和rom。可选择地,可以由通信网络从服务器计算机上下载程序代码。
80.此外,应该清楚的是,不仅可以通过执行计算机所读出的程序代码,而且可以通过基于程序代码的指令使计算机上操作的操作系统等来完成部分或者全部的实际操作,从而实现上述实施例中任意一项实施例的功能。
81.此外,可以理解的是,将由存储介质读出的程序代码写到插入计算机内的扩展板中所设置的存储器中或者写到与计算机相连接的扩展单元中设置的存储器中,随后基于程序代码的指令使安装在扩展板或者扩展单元上的cpu等来执行部分和全部实际操作,从而
实现上述实施例中任一实施例的功能。
82.需要说明的是,上述各流程和各系统结构图中不是所有的步骤和模块都是必须的,可以根据实际的需要忽略某些步骤或模块。各步骤的执行顺序不是固定的,可以根据需要进行调整。上述各实施例中描述的系统结构可以是物理结构,也可以是逻辑结构,即,有些模块可能由同一物理实体实现,或者,有些模块可能分由多个物理实体实现,或者,可以由多个独立设备中的某些部件共同实现。
83.上文通过附图和优选实施例对本发明进行了详细展示和说明,然而本发明不限于这些已揭示的实施例,基与上述多个实施例本领域技术人员可以知晓,可以组合上述不同实施例中的代码审核手段得到本发明更多的实施例,这些实施例也在本发明的保护范围之内。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1