一种虚拟网卡网络检测方法、装置、设备及介质与流程

文档序号:31625302发布日期:2022-09-24 00:26阅读:99来源:国知局
一种虚拟网卡网络检测方法、装置、设备及介质与流程

1.本发明涉及云原生容器网络技术领域,特别涉及一种虚拟网卡网络检测方法、装置、设备及介质。


背景技术:

2.近几年,kubernetes(k8s)项目在众多贡献者的努力中,逐步走向健壮和完善,带动了整个云原生技术圈的发展,使得更多的业务场景迁移到kubernetes项目中来,也得到了越来越多厂家的青睐,很多项目都是基于k8s系统进行开发的,kubernetes将一种新的软件开发架构和理念呈现在人们面前,促进了整个行业的发展和繁荣。同时,kubernetes作为一个容器编排平台,也在面临着更复杂的业务场景,比如存储网络大数据的传输、深度学习训练(gpu)之间的数据通信,这些场景对网络带宽和稳定性有着严苛的要求,一般的硬件设备已经不足以支撑这种业务场景。目前有很多网络硬件厂商针对这种场景开发了很多硬件设备,其中基于roce(rdmaover converged ethernet)技术的的网卡正逐渐的被市场所认可,比如mellanox mt27800、intel e800系列网卡都是基于roce技术进行设计研发的。kubernetes可以通过其设备插件(deviceplugin)机制将这些网络硬件设备进行注册管理,为以后的更加复杂的硬件业务场景打下了坚实的基础。
3.但是kubernetes做为一个平台项目,对于这些硬件设备只是进行管理注册操作,对于其如何使用则涉及不多。使用方面更加倾向于用户依据自己的业务场景去定制化。比如基于sriov(single root i/o virtualization,单根i/o虚拟化)规范对物理网卡(pf,physical functions)进行虚拟化,生成多个pcie设备虚拟网卡(vf,virtual functions),实现了单个pcie设备支撑多个业务逻辑的应用场景。对于kubernetes来说,这些业务逻辑可以具体位置pod单元中运行的容器,通过cni(容器网络接口)规范,pod单元可以将相应的虚拟网卡vf加载到其网络栈上,这样pod单元中的所有容器都可以共用该虚拟网卡。而一个单元pod单元可以加载多个虚拟网卡vf,这些虚拟网卡的ip信息又可能属于不同的网段,因此这种场景将会面临复杂的网络拓扑结构,而越是复杂的场景越容易出现问题,网络不通的情况也时长出现。并且网络排查比较困难,大大降低了其易用性,提升了技术学习门槛,阻碍虚拟网卡技术的推广。


技术实现要素:

4.为了克服上述技术缺陷,本发明的目的在于提供一种虚拟网卡网络检测方法、装置、设备及介质,所述方法应用于k8s系统,所述方法包括:创建业务pod单元初始化容器;在所述业务pod单元初始化容器的环境变量中获取业务pod单元名称;调取api接口,筛选与所述业务pod单元名称相关联的一个或多个关联pod单元;对所述一个或多个关联pod单元进行调度操作并判断是否所有关联pod单元成功被调度;若是,则获取所述一个或多个关联pod单元的虚拟网卡的ip信息;在所述业务pod单元初始化容器中对所述一个或多个关联pod单元的虚拟网卡的ip信息遍历进行网络检测。本发明可以避免在执行主要业务逻辑的
时候,由于网络不同导致系统异常,降低了排错成本;同时形成一套智能恢复流程,最大可能的保证网络健康,并提升了业务平台的鲁棒性。
5.本发明实施例提供的具体技术方案如下:
6.第一方面,提供了一种虚拟网卡网络检测方法,所述方法应用于k8s系统,所述k8s系统包括若干pod单元,所述pod单元包括若干虚拟网卡,所述方法包括:
7.创建业务pod单元初始化容器;
8.在所述业务pod单元初始化容器的环境变量中获取业务pod单元名称;
9.调取api接口,筛选与所述业务pod单元名称相关联的一个或多个关联pod单元;
10.对所述一个或多个关联pod单元进行调度操作并判断是否所有关联pod单元成功被调度;
11.若是,则获取所述一个或多个关联pod单元的虚拟网卡的ip信息;
12.在所述业务pod单元初始化容器中对所述一个或多个关联pod单元的虚拟网卡的ip信息遍历进行网络检测。
13.进一步地,所述对所述一个或多个关联pod单元进行调度操作并判断是否所有关联pod单元成功被调度,包括:
14.设置等待超时的时长为第一时长,已经等待的时长为第二时长;
15.判断所述第二时长是否小于所述第一时长;
16.若是,则遍历所述一个或多个关联pod单元,并判断所述一个或多个关联pod单元是否被调度成功;若否,则结束检测。
17.进一步地,所述判断所述一个或多个关联pod单元是否被调度成功,包括:
18.判断所述一个或多个关联pod单元中各关联pod单元是否被调度成功;
19.若是,则统计成功被调度的关联pod单元数量为n;若否,则继续判断所述第二时长是否小于所述第一时长;
20.统计所述一个或多个关联pod单元的数量为m;
21.判断n是否等于m;
22.若是,则确定所有关联pod单元成功被调度;若否,则继续判断所述第二时长是否小于所述第一时长。
23.进一步地,所述获取所述一个或多个关联pod单元的虚拟网卡的ip信息,包括:
24.遍历ip池资源的ip池实例集合,对所述一个或多个关联pod单元的虚拟网卡的ip信息进行筛选;
25.将所述业务pod单元初始化容器的环境变量中的业务pod单元名称与筛选后的关联pod单元的虚拟网卡的ip信息数据结构中的关联pod单元名称进行匹配映射,获取所述一个或多个关联pod单元的虚拟网卡的ip信息。
26.进一步地,所述在所述业务pod单元初始化容器中对所述一个或多个关联pod单元的虚拟网卡的ip信息遍历进行网络检测,包括:
27.设置最大检测重试次数为c,当前的检测重试次数为d;
28.判断d是否大于c;
29.若是,则结束检测;若否,则在所述业务pod单元初始化容器中对所述一个或多个关联pod单元的虚拟网卡的ip信息遍历进行网络检测;
30.判断对所述一个或多个关联pod单元的虚拟网卡进行网络检测是否成功;
31.若是,则结束检测;若否,则继续判断d是否大于c。
32.进一步地,所述虚拟网卡网络检测方法,包括:
33.设置线程池,所述线程池包括若干线程;
34.对所述k8s集群的带宽流量进行监控;
35.所述对所述k8s集群的带宽流量进行监控,包括:
36.设置最大网络带宽压力阈值为p,采集当前所述k8s集群中各节点的网络带宽压力阈值为q;
37.判断q是否大于p;
38.若是,则减少所述线程池中线程的个数;若否,则增加所述线程池中线程的个数。
39.进一步地,所述虚拟网卡网络检测方法,还包括:
40.收集检测失败的虚拟网卡;
41.判断所述检测失败的虚拟网卡在单位时间内的检测次数是否小于第一阈值;
42.若是,则对所述检测失败的虚拟网卡进行重置恢复;若否,则将所述检测失败的虚拟网卡拉入黑名单。
43.第二方面,提供了一种虚拟网卡网络检测装置,所述装置包括:
44.创建模块,用于创建业务pod单元初始化容器;
45.获取模块,用于在所述业务pod单元初始化容器的环境变量中获取业务pod单元名称;调取api接口,筛选与所述业务pod单元名称相关联的一个或多个关联pod单元;
46.处理模块,用于对所述一个或多个关联pod单元进行调度操作并判断是否所有关联pod单元成功被调度;若是,则获取所述一个或多个关联pod单元的虚拟网卡的ip信息;
47.检测模块,用于在所述业务pod单元初始化容器中对所述一个或多个关联pod单元的虚拟网卡的ip信息遍历进行网络检测。
48.第三方面,提供了一种计算机设备,所述设备包括:
49.存储器、处理器及存储在存储器上的计算机程序,所述处理器执行所述计算机程序以实现如第一方面任一所述的虚拟网卡网络检测方法的步骤。
50.第四方面,提供了一种计算机存储介质,所述介质包括:
51.其上存储有计算机程序,该计算机程序被存储器执行时实现第一方面任一所述的虚拟网卡网络检测方法的步骤。
52.与现有技术相比,本发明实施例提供的技术方案应用于k8s系统,所述k8s系统包括若干pod单元,所述pod单元包括若干虚拟网卡,所述方法包括:创建业务pod单元初始化容器;在所述业务pod单元初始化容器的环境变量中获取业务pod单元名称;调取api接口,筛选与所述业务pod单元名称相关联的一个或多个关联pod单元;对所述一个或多个关联pod单元进行调度操作并判断是否所有关联pod单元成功被调度;若是,则获取所述一个或多个关联pod单元的虚拟网卡的ip信息;在所述业务pod单元初始化容器中对所述一个或多个关联pod单元的虚拟网卡的ip信息遍历进行网络检测。本发明在执行主要业务逻辑之前,在初始化容器(initcontainer)中对与其相关的业务pod单元的虚拟网卡进行网络健康检测,动态优化调整检测效率,可以避免在执行主要业务逻辑的时候,由于网络不同导致系统异常,采用早发现早处理机制,降低了排错成本;同时针对出现问题的虚拟网卡,形成一套
智能恢复流程,智能恢复或重置问题网卡,最大可能的保证网络健康,并提升了业务平台的鲁棒性。
附图说明
53.为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
54.图1为本发明实施例一提供的虚拟网卡网络检测方法的第一流程图;
55.图2为本发明实施例一提供的虚拟网卡网络检测方法的第二流程图;
56.图3为本发明实施例二提供的虚拟网卡网络检测方法的第三流程图;
57.图4为本发明实施例二提供的对k8s集群的带宽流量监控流程图;
58.图5为本发明实施例二提供的对检测失败的虚拟网卡进行重置恢复流程图;
59.图6为本发明实施例二提供的虚拟网卡网络检测方法的具体流程图;
60.图7为本发明实施例三提供的虚拟网卡网络检测装置的结构图;
61.图8为本发明实施例五提供的可被用于实施本技术中所述的各个实施例的示例性系统。
具体实施方式
62.为使本发明的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
63.需要说明的是,除非上下文明确要求,否则整个说明书和权利要求书中的“包括”、“包含”等类似词语应当解释为包含的含义而不是排他或穷举的含义;也就是说,是“包括但不限于”的含义。
64.此外,在本发明的描述中,除非另有说明,“多个”的含义是两个或两个以上。
65.实施例一
66.本发明实施例提供了一种虚拟网卡网络检测方法,如图1所示,所述方法应用于k8s系统,所述k8s系统包括若干pod单元,所述pod单元包括若干虚拟网卡,所述方法包括:
67.创建业务pod单元初始化容器;
68.在所述业务pod单元初始化容器的环境变量中获取业务pod单元名称;
69.调取api接口,筛选与所述业务pod单元名称相关联的一个或多个关联pod单元;
70.对所述一个或多个关联pod单元进行调度操作并判断是否所有关联pod单元成功被调度;
71.若是,则获取所述一个或多个关联pod单元的虚拟网卡的ip信息;
72.在所述业务pod单元初始化容器中对所述一个或多个关联pod单元的虚拟网卡的ip信息遍历进行网络检测。
73.具体地,这里提出了一种针对在k8s系统中对关联pod单元的虚拟网卡健康检测与
智能处理的策略,通过k8s系统的sidecar设计模式,在执行主要业务逻辑之前,在初始化容器中对与其相关的业务pod单元中的虚拟网卡进行网络健康检测。
74.如图2所示,为虚拟网卡网络检测方法的第二流程图:
75.使用sidecar容器设计模式,在主要业务运行之前,创建业务pod单元初始化容器执行网络检测操作;
76.筛选关联pod单元,通过ip池资源解析所述关联pod单元的虚拟网卡的ip信息;
77.在所述业务pod单元初始化容器中对所述关联pod单元的虚拟网卡的ip信息遍历进行网络检测,对所述关联pod单元的虚拟网卡进行网络检测,检测所述关联pod单元中加载的虚拟网卡与其他关联pod单元加载的虚拟网卡的连通性;
78.同时检测流程中使用高并发处理和带宽限流智能优化操作,可以在快速虚拟网卡网络检测的同时又保证了k8s集群不会有太高的网络压力;
79.检测若失败时,抛出失败退出码,同时所述退出码将会被映射到初始化容器的状态上,方便操作人员分析问题点;
80.最后收集网络检测出错的日志,通过出错的日志分析问题所在,并启动相应的恢复策略进行智能运维操作,根据操作失败的频率或次数进行判断,是否对检测失败的虚拟网卡进行重置恢复。
81.其中,所述pod单元为k8s中运行的最小单元;kubernetes(k8s)是一个可移植的、可扩展的开源平台,用于管理容器化的工作负载和服务,可促进声明式配置和自动化;每个pod单元可以包含多个容器。
82.本发明实施例提供的技术方案应用于k8s系统,本发明在执行主要业务逻辑之前,在初始化容器中对与其相关的业务pod单元的虚拟网卡进行网络健康检测,动态优化调整检测效率,可以避免在执行主要业务逻辑的时候,由于网络不同导致系统异常,采用早发现早处理机制,降低了排错成本;同时针对出现问题的虚拟网卡,形成一套智能恢复流程,智能恢复或重置问题网卡,最大可能的保证网络健康,并提升了业务平台的鲁棒性。
83.实施例二
84.本发明实施例提供了一种虚拟网卡网络检测方法,如图3所示,所述方法应用于k8s系统,所述k8s系统包括若干pod单元,所述pod单元包括若干虚拟网卡,所述方法包括:
85.步骤s01,创建业务pod单元初始化容器;
86.具体地,指定业务pod单元初始化容器运行的脚本命令,所述脚本命令为网络检测的主要逻辑。同时指定日志记录输出位置,方便后续虚拟网卡的恢复流程使用。
87.步骤s02,在所述业务pod单元初始化容器的环境变量中获取业务pod单元名称;
88.调取api接口,筛选与所述业务pod单元名称相关联的一个或多个关联pod单元。
89.具体地,在业务pod单元初始化容器的环境变量env中找到hostname,所述hostname为所述业务pod单元的业务pod单元名称podname;
90.属于统一资源的k8s子资源一般具有相似性,比如名字为tensorflow(开源机器学习平台)的statefulset资源(podname集合)中的podname为tensorflow-0,tensorflow-1,

,根据这些规则可以通过该业务pod单元本身的podname中的关键字段找到与其相关联的其他pod单元。
91.调取k8sapi服务器(kubernetes api-server)接口,筛选与所述业务pod单元名称
相关联的关联pod单元,计算所述关联pod单元的个数。
92.步骤s03,对所述一个或多个关联pod单元进行调度操作并判断是否所有关联pod单元成功被调度。
93.具体的,即等待所述一个或多个关联pod单元被调度。
94.步骤s03还包括:
95.步骤s031,设置等待超时的时长为第一时长,已经等待的时长为第二时长;
96.判断所述第二时长是否小于所述第一时长;
97.若是,则遍历所述一个或多个关联pod单元,并判断所述一个或多个关联pod单元是否被调度成功;若否,则结束检测。
98.具体地,设置等待超时的时长为第一时长t,已经等待的时长为第二时长t;
99.判断所述第二时长t是否小于所述第一时长t;
100.若是,则遍历所述一个或多个关联pod单元,查询所述关联pod单元的状态,并判断所述关联pod单元是否被调度成功;若否,则退出检测。
101.其中,这里所述第一时长t为5分钟。
102.步骤s032,判断所述一个或多个关联pod单元中各关联pod单元是否被调度成功;
103.若是,则统计成功被调度的关联pod单元数量为n;若否,则继续判断所述第二时长是否小于所述第一时长;
104.统计所述一个或多个关联pod单元的数量为m;
105.判断n是否等于m;
106.若是,则确定所有关联pod单元成功被调度;若否,则继续判断所述第二时长是否小于所述第一时长。
107.具体地,统计所述关联pod单元的数量为m;
108.判断成功被调度的关联pod单元数量n是否等于所述关联pod单元的数量m;
109.若是,则确定所有关联pod单元成功被调度,通过ip池资源解析所述关联pod单元的虚拟网卡的ip信息;若否,则休眠1秒钟后继续判断所述第二时长是否小于所述第一时长。
110.步骤s04,若是,则获取所述一个或多个关联pod单元的虚拟网卡的ip信息。
111.步骤s04还包括:
112.步骤s041,遍历ip池资源的ip池实例集合,对所述一个或多个关联pod单元的虚拟网卡的ip信息进行筛选;
113.将所述业务pod单元初始化容器的环境变量中的业务pod单元名称与筛选后的关联pod单元的虚拟网卡的ip信息数据结构中的关联pod单元名称进行匹配映射,获取所述一个或多个关联pod单元的虚拟网卡的ip信息。
114.即判断筛选后的关联pod单元的虚拟网卡的ip信息数据结构中的pod单元名称是否存在于所述业务pod单元初始化容器的环境变量中的pod单元名称集合里面;
115.若是,则将筛选后的关联pod单元的虚拟网卡的ip信息作为所述关联pod单元的虚拟网卡的ip信息;若否,则继续对所述关联pod单元的虚拟网卡的ip信息进行筛选。
116.具体地,查询k8s集群中的ippool(ip池)自定义资源的ip池实例集合,所述ip池实例集合包括若干ip池实例;而每个ip池实例代表一个虚拟网卡的ip信息网段,记录属于这
个网段的关联pod单元的虚拟网卡的ip信息,同时每个ip池实例都有其对应的网段信息;
117.比如:{“first_ip”:192.168.20.2,“end_ip”:192.168.20.239,“subnet”:192.168.20.0/24,“gateway”:192.168.10.254}
118.遍历所有的ip池实例,从中获取到关联pod单元中的虚拟网卡分配的ip信息;
119.获取ip池实例集合,从第一个ip池实例开始迭代筛选其中的关联pod单元的虚拟网卡的ip信息,其结构如下:
120.ippool_1:{podname1:$vf_ip1,podname2:$vf_ip2,

}
121.ippool_2:{podname1:$vf_ip1,podname2:$vf_ip2,

}
122.将所述业务pod单元初始化容器的环境变量中的业务pod单元名称与筛选后的关联pod单元的虚拟网卡的ip信息数据结构中的关联pod单元名称进行匹配映射,获取所述一个或多个关联pod单元的虚拟网卡的ip信息。
123.即判断筛选后的关联pod单元的虚拟网卡的ip信息数据结构中的pod单元名称是否存在于所述业务pod单元初始化容器的环境变量中的pod单元名称集合里面,若是,则取出该关联pod单元的虚拟网卡的ip信息记录,将筛选后的关联pod单元的虚拟网卡的ip信息作为所述关联pod单元的虚拟网卡的ip信息;若否,则继续对所述关联pod单元的虚拟网卡的ip信息进行筛选。最后生成一个只包含关联pod单元中的虚拟网卡分配的ip信息数据结构:{podname1:[$vf_ip1,$vf_ip2,..],podname2:{

},

}。
[0124]
这里由于所述ip池包括所有的pod单元的虚拟网卡的ip信息,所以一般不会出现筛选后的关联pod单元的虚拟网卡的ip信息数据结构中的pod单元名称不存在于所述业务pod单元初始化容器的环境变量中的pod单元名称集合里面的情况。
[0125]
步骤s05,在所述业务pod单元初始化容器中对所述一个或多个关联pod单元的虚拟网卡的ip信息遍历进行网络检测。
[0126]
步骤s05还包括:
[0127]
步骤s051,设置最大检测重试次数为c,当前的检测重试次数为d;
[0128]
判断d是否大于c;
[0129]
若是,则结束检测;若否,则在所述业务pod单元初始化容器中对所述一个或多个关联pod单元的虚拟网卡的ip信息遍历进行网络检测;
[0130]
判断对所述一个或多个关联pod单元的虚拟网卡进行网络检测是否成功;
[0131]
若是,则结束检测;若否,则继续判断d是否大于c。
[0132]
具体地,在检测之前设置最大检测重试次数为c,当前的检测重试次数为d;
[0133]
判断d是否大于c;
[0134]
若是,则结束检测;若否,则遍历所述关联pod单元的虚拟网卡的ip信息,对所述关联pod单元的虚拟网卡进行网络检测,判断网络连通性;
[0135]
判断对所述一个或多个关联pod单元的虚拟网卡进行网络检测是否成功;
[0136]
若是,则结束检测;若否,则继续判断d是否大于c,抛出失败退出码exit code,并将所述退出码映射到初始化容器的状态上。
[0137]
其中,这里所述最大检测重试次数为5次。
[0138]
步骤s06,设置线程池,所述线程池包括若干线程;
[0139]
对所述k8s集群的带宽流量进行监控;
[0140]
所述对所述k8s集群的带宽流量进行监控,包括:
[0141]
设置最大网络带宽压力阈值为p,采集当前所述k8s集群中各节点的网络带宽压力阈值为q;
[0142]
判断q是否大于p;
[0143]
若是,则减少所述线程池中线程的个数;若否,则增加所述线程池中线程的个数。
[0144]
具体地,如图4所示,在网络检测的同时设置一个线程池进行高并发操作;
[0145]
同时设置一个k8s集群的带宽流量监控系统,对所述k8s集群的带宽流量进行监控;
[0146]
时段性的收集当前所述k8s集群中各个节点上的网络带宽压力阈值为q,并设置一个合理的最大网络带宽压力阈值为p;
[0147]
判断当前所述k8s集群中各个节点上的网络带宽压力阈值q是否大于最大网络带宽压力阈值p;
[0148]
如果当前所述k8s集群中各个节点上的网络带宽压力阈值q超过最大网络带宽压力阈值p,则逐步减少所述线程池中线程的个数,减小压力;如果当前所述k8s集群中各个节点上的网络带宽压力阈值q没超过最大网络带宽压力阈值p,则逐步增加所述线程池中线程的个数,提升网络检测操作的执行效率。
[0149]
其中,所述线程池维护着多个线程,等待着监督管理者分配可并发执行的任务。所述高并发操作通常是指通过设计保证系统能够同时并行处理很多请求。
[0150]
这里所述最大网络带宽压力阈值一般为80%。
[0151]
步骤s07,收集检测失败的虚拟网卡;
[0152]
判断所述检测失败的虚拟网卡在单位时间内的检测次数是否小于第一阈值;
[0153]
若是,则对所述检测失败的虚拟网卡进行重置恢复;若否,则将所述检测失败的虚拟网卡拉入黑名单。
[0154]
具体地,如图5所示,对每次网络检测操作进行日志记录;
[0155]
设置一个日志分析系统,从所述日志分析系统里面筛选检测失败的虚拟网卡;
[0156]
收集检测失败的虚拟网卡,输入到行为判定系统,所述行为判定系统根据操作失败的频率或次数进行判断,判断所述检测失败的虚拟网卡在单位时间内的检测次数是否小于第一阈值;
[0157]
若是,则对所述检测失败的虚拟网卡进行重置恢复;若否,则将所述检测失败的虚拟网卡拉入黑名单,短期内不会将所述检测失败的虚拟网卡加载到pod单元中。
[0158]
其中,这里所述单位时间为一小时;所述第一阈值为4次。
[0159]
如图6所示为虚拟网卡网络检测方法的具体流程图,本发明使用sidecar容器设计模式,在主要业务运行之前,创建业务pod单元初始化容器执行网络检测操作;
[0160]
筛选关联pod单元,通过ip池自定义资源解析所述关联pod单元的虚拟网卡的ip信息;
[0161]
在所述业务pod单元初始化容器中对所述一个或多个关联pod单元的虚拟网卡的ip信息遍历进行网络检测,对所述关联pod单元的虚拟网卡进行网络检测,检测所述关联pod单元中加载的虚拟网卡与其他关联pod单元加载的虚拟网卡的连通性。
[0162]
同时在网络检测流程中进行高并发处理与带宽限流监控反馈机制,通过设置合理
的集群最大网络带宽压力阈值p,判断当前所述k8s集群中各个节点上的网络带宽压力阈值q是否超过最大网络带宽压力阈值p,动态调整执行网络检测操作的线程池的线程个数,提高了检测的效率与安全性。
[0163]
对网络检测中的检测失败的虚拟网卡,根据网络检测日志分析系统中收集检测失败的虚拟网卡进行判断分析,根据判断结果执行相应的操作,形成了一套智能恢复流程,尽最大可能的保证网络健康,提升了业务平台的鲁棒性。
[0164]
本发明实施例提供的虚拟网卡网络检测的方法在不脱离本发明技术方案的前提下,还可以做出若干改进以及优化,这些改进与优化也应当视为本发明的保护范围。
[0165]
本发明实施例提供一种虚拟网卡网络检测的方法,本发明实施例提供的技术方案应用于k8s系统,所述k8s系统包括若干pod单元,所述pod单元包括若干虚拟网卡,所述方法包括:创建业务pod单元初始化容器;在所述业务pod单元初始化容器的环境变量中获取业务pod单元名称;调取api接口,筛选与所述业务pod单元名称相关联的一个或多个关联pod单元;对所述一个或多个关联pod单元进行调度操作并判断是否所有关联pod单元成功被调度;若是,则获取所述一个或多个关联pod单元的虚拟网卡的ip信息;在所述业务pod单元初始化容器中对所述一个或多个关联pod单元的虚拟网卡的ip信息遍历进行网络检测。本发明在执行主要业务逻辑之前,在业务pod单元初始化容器(initcontainer)中对与其相关的业务pod单元的虚拟网卡进行网络健康检测,动态优化调整检测效率,可以避免在执行主要业务逻辑的时候,由于网络不同导致系统异常,采用早发现早处理机制,降低了排错成本;同时针对出现问题的虚拟网卡,形成一套智能恢复流程,智能恢复或重置问题网卡,最大可能的保证网络健康,并提升了业务平台的鲁棒性。
[0166]
实施例三
[0167]
本发明提供了一种虚拟网卡网络检测装置,如图7所示,所述装置包括创建模块、获取模块、处理模块、检测模块。
[0168]
在本实施例中,创建模块用于创建业务pod单元初始化容器;获取模块用于在所述业务pod单元初始化容器的环境变量中获取业务pod单元名称;调取api接口,筛选与所述业务pod单元名称相关联的一个或多个关联pod单元;处理模块用于对所述一个或多个关联pod单元进行调度操作并判断是否所有关联pod单元成功被调度;若是,则获取所述一个或多个关联pod单元的虚拟网卡的ip信息;检测模块用于在所述业务pod单元初始化容器中对所述一个或多个关联pod单元的虚拟网卡的ip信息遍历进行网络检测。
[0169]
进一步地,处理模块用于设置等待超时的时长为第一时长,已经等待的时长为第二时长;
[0170]
判断所述第二时长是否小于所述第一时长;
[0171]
若是,则遍历所述一个或多个关联pod单元,并判断所述一个或多个关联pod单元是否被调度成功;若否,则结束检测。
[0172]
进一步地,处理模块还用于判断所述一个或多个关联pod单元中各关联pod单元是否被调度成功;
[0173]
若是,则统计成功被调度的关联pod单元数量为n;若否,则继续判断所述第二时长是否小于所述第一时长;
[0174]
统计所述一个或多个关联pod单元的数量为m;
[0175]
判断n是否等于m;
[0176]
若是,则确定所有关联pod单元成功被调度;若否,则继续判断所述第二时长是否小于所述第一时长。
[0177]
进一步地,处理模块还用于遍历ip池资源的ip池实例集合,对所述一个或多个关联pod单元的虚拟网卡的ip信息进行筛选;
[0178]
将所述业务pod单元初始化容器的环境变量中的业务pod单元名称与筛选后的关联pod单元的虚拟网卡的ip信息数据结构中的关联pod单元名称进行匹配映射,获取所述一个或多个关联pod单元的虚拟网卡的ip信息。
[0179]
进一步地,检测模块用于设置最大检测重试次数为c,当前的检测重试次数为d;
[0180]
判断d是否大于c;
[0181]
若是,则结束检测;若否,则在所述业务pod单元初始化容器中对所述一个或多个关联pod单元的虚拟网卡的ip信息遍历进行网络检测;
[0182]
判断对所述一个或多个关联pod单元的虚拟网卡进行网络检测是否成功;
[0183]
若是,则结束检测;若否,则继续判断d是否大于c。
[0184]
进一步地,处理模块还用于设置线程池,所述线程池包括若干线程;
[0185]
对所述k8s集群的带宽流量进行监控;
[0186]
所述对所述k8s集群的带宽流量进行监控,包括:
[0187]
设置最大网络带宽压力阈值为p,采集当前所述k8s集群中各节点的网络带宽压力阈值为q;
[0188]
判断q是否大于p;
[0189]
若是,则减少所述线程池中线程的个数;若否,则增加所述线程池中线程的个数。
[0190]
进一步地,处理模块还用于收集检测失败的虚拟网卡;
[0191]
判断所述检测失败的虚拟网卡在单位时间内的检测次数是否小于第一阈值;
[0192]
若是,则对所述检测失败的虚拟网卡进行重置恢复;若否,则将所述检测失败的虚拟网卡拉入黑名单。
[0193]
本发明实施例提供的技术方案带来的有益效果是:
[0194]
本发明实施例提供的技术方案在执行主要业务逻辑之前,在初始化容器(initcontainer)中对与其相关的业务pod单元的虚拟网卡进行网络健康检测,动态优化调整检测效率,可以避免在执行主要业务逻辑的时候,由于网络不同导致系统异常,采用早发现早处理机制,降低了排错成本;同时针对出现问题的虚拟网卡,形成一套智能恢复流程,智能恢复或重置问题网卡,最大可能的保证网络健康,并提升了业务平台的鲁棒性。
[0195]
实施例四
[0196]
本发明提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时可以执行如下虚拟网卡网络检测的方法:
[0197]
创建业务pod单元初始化容器;
[0198]
在所述业务pod单元初始化容器的环境变量中获取业务pod单元名称;
[0199]
调取api接口,筛选与所述业务pod单元名称相关联的一个或多个关联pod单元;
[0200]
对所述一个或多个关联pod单元进行调度操作并判断是否所有关联pod单元成功
被调度;
[0201]
若是,则获取所述一个或多个关联pod单元的虚拟网卡的ip信息;
[0202]
在所述业务pod单元初始化容器中对所述一个或多个关联pod单元的虚拟网卡的ip信息遍历进行网络检测。
[0203]
本发明实施例提供的技术方案带来的有益效果是:
[0204]
本发明实施例提供的技术方案在执行主要业务逻辑之前,在初始化容器(initcontainer)中对与其相关的业务pod单元的虚拟网卡进行网络健康检测,动态优化调整检测效率,可以避免在执行主要业务逻辑的时候,由于网络不同导致系统异常,采用早发现早处理机制,降低了排错成本;同时针对出现问题的虚拟网卡,形成一套智能恢复流程,智能恢复或重置问题网卡,最大可能的保证网络健康,并提升了业务平台的鲁棒性。
[0205]
实施例五
[0206]
本发明提供了一种计算机存储介质,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现以下步骤:
[0207]
创建业务pod单元初始化容器;
[0208]
在所述业务pod单元初始化容器的环境变量中获取业务pod单元名称;
[0209]
调取api接口,筛选与所述业务pod单元名称相关联的一个或多个关联pod单元;
[0210]
对所述一个或多个关联pod单元进行调度操作并判断是否所有关联pod单元成功被调度;
[0211]
若是,则获取所述一个或多个关联pod单元的虚拟网卡的ip信息;
[0212]
在所述业务pod单元初始化容器中对所述一个或多个关联pod单元的虚拟网卡的ip信息遍历进行网络检测。
[0213]
进一步地,所述对所述一个或多个关联pod单元进行调度操作并判断是否所有关联pod单元成功被调度,包括:
[0214]
设置等待超时的时长为第一时长,已经等待的时长为第二时长;
[0215]
判断所述第二时长是否小于所述第一时长;
[0216]
若是,则遍历所述一个或多个关联pod单元,并判断所述一个或多个关联pod单元是否被调度成功;若否,则结束检测。
[0217]
进一步地,所述判断所述一个或多个关联pod单元是否被调度成功,包括:
[0218]
判断所述一个或多个关联pod单元中各关联pod单元是否被调度成功;
[0219]
若是,则统计成功被调度的关联pod单元数量为n;若否,则继续判断所述第二时长是否小于所述第一时长;
[0220]
统计所述一个或多个关联pod单元的数量为m;
[0221]
判断n是否等于m;
[0222]
若是,则确定所有关联pod单元成功被调度;若否,则继续判断所述第二时长是否小于所述第一时长。
[0223]
进一步地,所述获取所述一个或多个关联pod单元的虚拟网卡的ip信息,包括:
[0224]
遍历ip池资源的ip池实例集合,对所述一个或多个关联pod单元的虚拟网卡的ip信息进行筛选;
[0225]
将所述业务pod单元初始化容器的环境变量中的业务pod单元名称与筛选后的关
联pod单元的虚拟网卡的ip信息数据结构中的关联pod单元名称进行匹配映射,获取所述一个或多个关联pod单元的虚拟网卡的ip信息。
[0226]
进一步地,所述在所述业务pod单元初始化容器中对所述一个或多个关联pod单元的虚拟网卡的ip信息遍历进行网络检测,包括:
[0227]
设置最大检测重试次数为c,当前的检测重试次数为d;
[0228]
判断d是否大于c;
[0229]
若是,则结束检测;若否,则在所述业务pod单元初始化容器中对所述一个或多个关联pod单元的虚拟网卡的ip信息遍历进行网络检测;
[0230]
判断对所述一个或多个关联pod单元的虚拟网卡进行网络检测是否成功;
[0231]
若是,则结束检测;若否,则继续判断d是否大于c。
[0232]
进一步地,所述虚拟网卡网络检测方法,包括:
[0233]
设置线程池,所述线程池包括若干线程;
[0234]
对所述k8s集群的带宽流量进行监控;
[0235]
所述对所述k8s集群的带宽流量进行监控,包括:
[0236]
设置最大网络带宽压力阈值为p,采集当前所述k8s集群中各节点的网络带宽压力阈值为q;
[0237]
判断q是否大于p;
[0238]
若是,则减少所述线程池中线程的个数;若否,则增加所述线程池中线程的个数。
[0239]
进一步地,所述虚拟网卡网络检测方法,还包括:
[0240]
收集检测失败的虚拟网卡;
[0241]
判断所述检测失败的虚拟网卡在单位时间内的检测次数是否小于第一阈值;
[0242]
若是,则对所述检测失败的虚拟网卡进行重置恢复;若否,则将所述检测失败的虚拟网卡拉入黑名单。
[0243]
图8为本发明实施例五提供的可被用于实施本技术中所述的各个实施例的示例性系统;
[0244]
如图8所示,在一些实施例中,系统能够作为各所述实施例中的任意一个用于虚拟网卡网络检测的上述设备。在一些实施例中,系统可包括具有结果的一个或多个计算机可读介质(例如,系统存储器或nvm/存储设备)以及与该一个或多个计算机可读介质耦合并被配置为执行结果以实现模块从而执行本技术中所述的动作的一个或多个处理器(例如,(一个或多个)处理器)。
[0245]
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来结果相关的硬件来完成,上述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本发明所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(rom)、可编程rom(prom)、电可编程rom(eprom)、电可擦除可编程rom(eeprom)或闪存。易失性存储器可包括随机存取存储器(ram)或者外部高速缓冲存储器。作为说明而非局限,ram以多种形式可得,诸如静态ram(sram)、动态ram(dram)、同步dram(sdram)、双数据率sdram(ddrsdram)、增强型sdram(esdram)、同步链路(synchlink)dram(sldram)、存储器总线(rambus)直接ram
(rdram)、直接存储器总线动态ram(drdram)、以及存储器总线动态ram(rdram)等。
[0246]
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
[0247]
以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1