掌桥专利:专业的专利平台
掌桥专利
首页

网络检测方法、系统、电子设备及计算机可读存储介质

文献发布时间:2024-04-18 20:01:55


网络检测方法、系统、电子设备及计算机可读存储介质

技术领域

本发明涉及网络检测领域,特别涉及一种网络检测方法、系统、电子设备及计算机可读存储介质。

背景技术

随着云计算、大数据、人工智能等领域的快速发展,企业对于应用程序的可靠性、弹性和高可用性的要求越来越高。传统的单机架构已经无法满足这些需求,因此分布式系统成为了发展趋势。但是,分布式系统管理也面临着很多挑战,如容器部署、服务发现、负载均衡、健康监测等问题。Kubernetes(一种容器编排平台)提供了一种可移植、可扩展、自动化的方式来部署、运行和管理容器应用程序,使得分布式系统管理变得更加简单和高效。

一些分布式应用或者服务需要通过多个pod(Kubernetes集群中的容器组)部署到多个节点上,在一些复杂的网络拓扑场景中,分布式应用之间的通讯可能会出现网络抖动问题,影响服务质量。因此需要在部署分布式应用之前对相关pod进行网络连通性检测,现有的检测方案需要预先确定服务运行所需的所有pod的数量,在服务运行所需的所有pod都被调度后,才能进行网络连通性检测,因此,现有的检测方案只能应对固定pod数量的服务,不能应对能够根据服务压力调整pod数量的弹性服务。

因此,如何提供一种解决上述技术问题的方案是本领域技术人员目前需要解决的问题。

发明内容

本发明的目的是提供一种网络检测方法、系统、电子设备及计算机可读存储介质,以目标服务在运行时所需的最小副本数量作为目标服务是否运行的依据,能够动态的进行网络连通检测,适配弹性服务。

为解决上述技术问题,本发明提供了一种网络检测方法,所述网络检测方法包括:

确定待创建容器组的原始配置文件,将配置有网络连通检测逻辑的初始化容器的配置信息注入到所述原始配置文件中得到创建配置文件;

基于所述创建配置文件创建当前容器组;

控制所述当前容器组启动,以触发所述初始化容器基于所述网络连通检测逻辑对所述当前容器组进行网络连通检测;

所述网络连通检测包括:当目标服务中的容器组的实际调度数量大于或等于所述目标服务在运行时所需的最小副本数量,检测所述当前容器组和所述目标服务中的其他容器组之间的网络连通状态,所述目标服务为包括所述当前容器组的服务。

在一示例性实施中,所述将配置有网络连通检测逻辑的初始化容器的配置信息注入到所述原始配置文件中得到创建配置文件之前,所述网络检测方法还包括:

在容器编排平台集群中配置目标文件,所述目标文件用于存储所述配置有网络连通检测逻辑的初始化容器的配置信息;

将配置有网络连通检测逻辑的初始化容器的配置信息注入到所述原始配置文件中得到创建配置文件的过程包括:

从所述目标文件中获取所述配置有网络连通检测逻辑的初始化容器的配置信息,将所述初始化容器的配置信息注入到所述原始配置文件中得到创建配置文件。

在一示例性实施中,所述确定待创建容器组的原始配置文件之前,所述网络检测方法还包括:

在所述容器编排平台集群中创建网络钩子服务以及网络钩子服务后端;

控制所述网络钩子服务将应用程序编程接口服务器接收到的创建请求转发到所述网络钩子服务后端;

确定待创建容器组的原始配置文件,将配置有网络连通检测逻辑的初始化容器的配置信息注入到所述原始配置文件中得到创建配置文件的过程包括:

控制所述网络钩子服务后端确定与所述创建请求对应的待创建容器组的原始配置文件,并从所述目标文件中获取所述配置有网络连通检测逻辑的初始化容器的配置信息,将所述初始化容器的配置信息注入到所述原始配置文件中得到创建配置文件。

在一示例性实施中,控制所述网络钩子服务将应用程序编程接口服务器接收到的创建请求转发到所述网络钩子服务后端的过程包括:

控制应用程序编程接口服务器在接收到创建请求时调用所述网络钩子服务,以使所述网络钩子服务将所述创建请求转发到所述网络钩子服务后端。

在一示例性实施中,当目标服务中的容器组的实际调度数量大于或等于所述目标服务在运行时所需的最小副本数量,检测所述当前容器组和所述目标服务中的其他容器组之间的网络连通状态之前,所述网络连通检测还包括:

获取所述初始化容器的环境变量,基于所述环境变量确定所述当前容器组的单元名称;

基于所述单元名称确定所述目标服务的服务名称;

基于所述服务名称确定与所述目标服务一一对应的最小副本数量。

在一示例性实施中,当目标服务中的容器组的实际调度数量大于或等于所述目标服务在运行时所需的最小副本数量,检测所述当前容器组和所述目标服务中的其他容器组之间的网络连通状态之前,所述网络检测方法还包括:

按检测周期获取所述目标服务中的容器组的实际调度数量;

在每一所述检测周期,判断所述实际调度数量是否大于或等于所述目标服务在运行时所需的最小副本数量。

在一示例性实施中,判断所述实际调度数量是否大于或等于所述目标服务在运行时所需的最小副本数量之后,所述网络检测方法还包括:

当所述实际调度数量小于所述目标服务在运行时所需的最小副本数量,重复所述按检测周期获取所述目标服务中的容器组的实际调度数量的操作,直至所述实际调度数量大于或等于所述目标服务在运行时所需的最小副本数量。

在一示例性实施中,基于所述单元名称确定所述目标服务的服务名称之后,所述网络检测方法还包括:

基于所述服务名称确定所述目标服务包括的每一所述其他容器组的检测信息;

检测所述当前容器组和所述目标服务中的其他容器组之间的网络连通状态的过程包括:

基于每一所述其他容器组的检测信息检测所述当前容器组和所述其他容器组之间的网络连通状态。

在一示例性实施中,所述检测信息包括互联网协议地址和单元名称;

基于每一所述其他容器组的检测信息检测所述当前容器组和所述其他容器组之间的网络连通状态的过程包括:

控制所述当前容器组按每一所述其他容器组的互联网协议地址和单元名称发送检测报文,根据每一所述其他容器组返回的反馈报文确定所述当前容器组与每一所述其他容器组之间的网络连通状态。

在一示例性实施中,所述检测信息包括互联网协议地址和单元名称;

基于所述单元名称确定所述目标服务的服务名称之后,所述网络检测方法还包括:

基于所述服务名称获取所述目标服务包括的每一所述其他容器组的单元名称;

当目标服务中的容器组的实际调度数量大于或等于所述目标服务在运行时所需的最小副本数量,基于所述服务名称获取所述目标服务包括的每一所述其他容器组的互联网协议地址。

在一示例性实施中,基于所述服务名称获取所述目标服务包括的每一所述其他容器组的互联网协议地址之前,所述网络检测方法还包括:

为各个服务配置一一对应的互联网协议地址池;所述互联网协议地址池用于存储其一一对应的所述服务包括的容器组的单元名称及互联网协议地址的映射关系。

在一示例性实施中,所述网络检测方法还包括:

当所述服务中存在被调度的容器组时,将所述被调度的容器组的互联网协议地址记录在所述服务一一对应的所述互联网协议地址池中。

在一示例性实施中,所述网络检测方法还包括:

当所述服务中存在被移除的容器组时,将所述被移除的容器组的互联网协议地址从所述服务一一对应的所述互联网协议地址池中删除。

在一示例性实施中,所述互联网协议地址池的名称与其一一对应的所述服务的服务名称相同。

在一示例性实施中,基于所述服务名称获取所述目标服务包括的每一所述其他容器组的互联网协议地址的过程包括:

基于所述服务名称在所有所述互联网协议地址池中确定目标互联网协议地址池;

从所述目标互联网协议地址池中获取所述目标服务包括的每一所述其他容器组的互联网协议地址。

在一示例性实施中,检测所述当前容器组和所述目标服务中的其他容器组之间的网络连通状态之后,所述网络连通检测还包括:

针对每一所述其他容器组,若所述网络连通状态为未连通,且当前重试次数为未达到预设重试次数,重新检测所述当前容器组和所述其他容器组之间的网络连通状态。

在一示例性实施中,针对每一所述其他容器组,若所述网络连通状态为未连通,且当前重试次数为未达到预设重试次数,重新检测所述当前容器组和所述其他容器组之间的网络连通状态之前,所述网络检测方法还包括:

根据所述目标服务的启动时间确定所述预设重试次数。

为解决上述技术问题,本发明还提供了一种网络检测系统,所述网络检测系统包括:

第一确定模块,用于确定待创建容器组的原始配置文件,将配置有网络连通检测逻辑的初始化容器的配置信息注入到所述原始配置文件中得到创建配置文件;

创建模块,用于基于所述创建配置文件创建当前容器组;

检测模块,用于控制所述当前容器组启动,以触发所述初始化容器基于所述网络连通检测逻辑对所述当前容器组进行网络连通检测;

所述网络连通检测包括:当目标服务中的容器组的实际调度数量大于或等于所述目标服务在运行时所需的最小副本数量,检测所述当前容器组和所述目标服务中的其他容器组之间的网络连通状态,所述目标服务为包括所述当前容器组的服务。

为解决上述技术问题,本发明还提供了一种电子设备,包括:

存储器,用于存储计算机程序;

处理器,用于执行所述计算机程序时实现如上文任意一项所述的网络检测方法的步骤。

为解决上述技术问题,本发明还提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上文任意一项所述的网络检测方法的步骤。

本发明提供了一种网络检测方法,在对容器组进行创建时,将配置有网络连通检测逻辑的初始化容器的配置信息注入到的原始配置文件中得到创建配置文件中,控制基于创建配置文件创建的当前容器组启动后,即可通过初始化容器先对当前容器组进行网络连通检测,保证目标服务启动之前各容器组之间的网络连通性,从而保证服务正常运行,在进行网络连通检测时,本发明无需等待目标服务所有容器组均被调度后再进行网络连通检测,以目标服务在运行时所需的最小副本数量作为目标服务是否运行的依据,动态的进行网络连通检测,适配弹性服务。本发明还提供了一种网络检测系统、电子设备及计算机可读存储介质,具有和上述网络检测方法相同的有益效果。

附图说明

为了更清楚地说明本发明实施例,下面将对实施例中所需要使用的附图做简单的介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明所提供的一种网络检测方法的步骤流程图;

图2为本发明所提供的一种容器组的原始配置文件的示意图;

图3为本发明所提供的一种容器组的创建配置文件的示意图;

图4为本发明所提供的一种基于网络钩子机制的容器组创建示意图;

图5为本发明所提供的一种网络连通检测的步骤流程图;

图6为本发明所提供的一种弹性服务的扩容场景的示意图;

图7为本发明所提供的一种弹性服务的缩容场景的示意图;

图8为本发明所提供的一种网络检测系统的结构示意图。

具体实施方式

本发明的核心是提供一种网络检测方法、系统、电子设备及计算机可读存储介质,以目标服务在运行时所需的最小副本数量作为目标服务是否运行的依据,能够动态的进行网络连通检测,适配弹性服务。

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

第一方面,请参照图1,图1为本发明所提供的一种网络检测方法的步骤流程图,该网络检测方法包括:

S101:确定待创建容器组的原始配置文件,将配置有网络连通检测逻辑的初始化容器的配置信息注入到原始配置文件中得到创建配置文件;

S102:基于创建配置文件创建当前容器组;

本实施例中,容器组pod具体可以为容器编排平台集群中的容器组,用于承载具体的业务逻辑,每个容器组可以运行至少一个容器,容器编排平台集群包括但不限于kubernetes集群。可以理解,至少一个容器组组成服务,服务具体可以为由固定数量的容器组组成的服务,也可以是由数量可调的容器组组成的弹性服务,弹性服务表示容器组不用全部启动,只需要启动部分容器组就能保证服务的正常运行,具体的,在服务压力低时,可以自动缩减启动的容器组的数量,在服务压力较高时,自动增加启动的容器组的数量。

待创建容器组可以是服务起始创建时,根据客户创建请求确定的容器组,也可以是服务扩容时,根据客户创建请求新增加的容器组。可以理解,针对同一服务,待创建容器组的原始配置文件相同,参照图2所示,原始配置文件包括但不限于容器组创建时的版本信息apiversion、创建类型信息kind、元数据信息metadata、详情信息spec、业务容器信息containers等,其中,版本信息apiversion包括版本号,元数据信息metadata包含了容器组的元数据,例如名称、标签、命名空间等,详情信息spec定义了容器组的行为和构建,例如容器镜像、资源限制、环境变量等,业务容器信息containers定义了容器组中包含的容器,包括容器名称、镜像名称、端口映射等,基于原始配置文件创建的容器组在启动后按业务容器信息执行对应的业务。为便于后续对容器组进行网络检测,在本实施例中,预先将网络连通检测逻辑注入到初始化容器init container中,在接收到针对容器组的创建请求后,将配置有网络连通检测逻辑的初始化容器的配置信息注入到待创建容器组的原始配置文件中,得到创建配置文件,创建配置文件的示意图参照图3所示,由于创建配置文件中增加了初始化容器的配置信息,基于创建配置文件创建的容器组在启动后先按照初始化容器的配置信息执行网络连通检测,再按业务容器信息执行对应的业务。

S103:控制当前容器组启动,以触发初始化容器基于网络连通检测逻辑对当前容器组进行网络连通检测;

网络连通检测包括:当目标服务中的容器组的实际调度数量大于或等于目标服务在运行时所需的最小副本数量,检测当前容器组和目标服务中的其他容器组之间的网络连通状态,目标服务为包括当前容器组的服务。

可以理解,采用如图3所示的结构创建当前容器组,在控制当前容器组启动后,会优先触发初始化容器基于网络连通检测逻辑对当前容器组进行网络连通检测,获取当前容器组和目标服务中的其他容器组之间的网络连通状态。示例性地,假设目标服务由4个pod组成,分别为pod-a、pod-b、pod-c、pod-d,假设当前容器组为pod-a,则其他容器组为pod-b、pod-c、pod-d,需要分别确定pod-a与pod-b之间的网络连通状态、pod-a与pod-c之间的网络连通状态、pod-a与pod-d之间的网络连通状态,当三个网络连通状态均为正常连通状态,则确定当前容器组在目标服务中的网络连通正常,若存在任意一个网络连通状态为异常状态,则需要进行重复检测,并根据重复检测的结果执行对应的操作,如重复检测多次,均为网络连通异常,则需要进行相关网络维护处理。上述仅以一个容器组作为当前容器组与同属一个服务的其他容器组之间的网络连通检测做示例,其他容器组均可作为当前容器组,保证任意两个pod之间的网络连通状态均检测到即可。

进一步的,考虑到弹性服务中仅需要部分pod启动即可使服务正常运行,因此,本实施例预先为每一个服务设置了一个最小副本数量,最小副本数量即可使服务正常运行所需启动的最小的pod的数量。以存在最小副本数量的pod被调度作为服务运行的依据,无需服务中所有pod都被调度再进行网络检测,提高了检测效率,更适配弹性服务。在网络连通检测成功后,再触发其他容器containers执行主干业务,从而保证目标服务在各个容器组的网络连通状态均成功的时候再启动,提高服务质量。

可见,本实施例中,在对容器组进行创建时,将配置有网络连通检测逻辑的初始化容器的配置信息注入到的原始配置文件中得到创建配置文件中,控制基于创建配置文件创建的当前容器组启动后,即可通过初始化容器先对当前容器组进行网络连通检测,保证目标服务启动之前各容器组之间的网络连通性,从而保证服务正常运行,在进行网络连通检测时,本发明无需等待目标服务所有容器组均被调度后再进行网络连通检测,以目标服务在运行时所需的最小副本数量作为目标服务是否运行的依据,动态的进行网络连通检测,适配弹性服务。

在上述实施例的基础上:

在一示例性实施中,将配置有网络连通检测逻辑的初始化容器的配置信息注入到原始配置文件中得到创建配置文件之前,网络检测方法还包括:

在容器编排平台集群中配置目标文件,目标文件用于存储配置有网络连通检测逻辑的初始化容器的配置信息;

将配置有网络连通检测逻辑的初始化容器的配置信息注入到原始配置文件中得到创建配置文件的过程包括:

从目标文件中获取配置有网络连通检测逻辑的初始化容器的配置信息,将初始化容器的配置信息注入到原始配置文件中得到创建配置文件。

本实施例中,在容器编排平台kubernetes集群中配置一个configmap,即目标文件,将配置有网络连通检测逻辑的初始化容器的配置信息存储到目标文件中,后续直接调用目标文件获取初始化容器的配置信息即可,提高结构修改的效率。其中,configmap是用于存储kubernetes配置信息的一种配置文件类型。

在一示例性实施中,确定待创建容器组的原始配置文件之前,网络检测方法还包括:

在容器编排平台集群中创建网络钩子服务以及网络钩子服务后端;

控制网络钩子服务将应用程序编程接口服务器接收到的创建请求转发到网络钩子服务后端;

确定待创建容器组的原始配置文件,将配置有网络连通检测逻辑的初始化容器的配置信息注入到原始配置文件中得到创建配置文件的过程包括:

控制网络钩子服务后端确定与创建请求对应的待创建容器组的原始配置文件,并从目标文件中获取配置有网络连通检测逻辑的初始化容器的配置信息,将初始化容器的配置信息注入到原始配置文件中得到创建配置文件。

本实施例,参照图4所示,利用容器编排平台kubernetes集群的网络钩子webhook机制,对容器组的结构进行调整。首先在容器编排平台集群中创建网络钩子服务webhookservice以及网络钩子服务后端webhookserver,其中,webhookservice是一个服务抽象,负责将应用程序编程接口服务器api-server接收到的创建请求转发到webhookserver上,以便webhookserver在接收到创建请求后,读取configmap中的初始化容器的配置信息,将其注入到创建请求对应的待创建容器组的原始配置文件中,原始配置文件中仅包括业务容器,并将组装好的新的创建配置文件返回给应用程序编程接口服务器api-server,进行当前容器组的创建。其中,应用程序编程接口服务器api-server相当于容器编排平台kubernetes集群的访问入口。

在一示例性实施中,控制网络钩子服务将应用程序编程接口服务器接收到的创建请求转发到网络钩子服务后端的过程包括:

控制应用程序编程接口服务器在接收到创建请求时调用网络钩子服务,以使网络钩子服务将创建请求转发到网络钩子服务后端。

本实施例中,应用程序编程接口服务器在接收到创建请求时,调用webhook接口,即调用网络钩子服务,以用于修改容器组的结构,提高转发效率。

在一示例性实施中,当目标服务中的容器组的实际调度数量大于或等于目标服务在运行时所需的最小副本数量,检测当前容器组和目标服务中的其他容器组之间的网络连通状态之前,网络连通检测还包括:

获取初始化容器的环境变量,基于环境变量确定当前容器组的单元名称;

基于单元名称确定目标服务的服务名称;

基于服务名称确定与目标服务一一对应的最小副本数量。

本实施例中,还包括预先设置目标服务的服务名称与组成该目标服务的各个容器组的单元名称的名称对应关系,以及目标服务的服务名称及最小副本数量的副本对应关系的操作。在初始化容器中运行网络连通检测逻辑时,可以获取初始化容器的环境变量,基于环境变量可以确定当前容器组的单元名称podname,基于单元名称及名称对应关系可以确定该当前容器组所组成的目标服务的服务名称,每一个服务一一对应设置有一个最小副本数量,基于服务名称和副本对应关系即可确定该目标服务对应的最小副本数量,提高网络连通检测效率。

进一步的,可以预先存储服务名称与辅助配置文件podgroup的对应关系,辅助配置文件podgroup为记录弹性服务的最小运行副本数的kubernetes自定义资源类型,本实施例中,当获取到服务名称后,查询与服务名称一一对应的辅助配置文件podgroup来获取该弹性服务对应的最小副本数量。

在一示例性实施中,当目标服务中的容器组的实际调度数量大于或等于目标服务在运行时所需的最小副本数量,检测当前容器组和目标服务中的其他容器组之间的网络连通状态之前,网络检测方法还包括:

按检测周期获取目标服务中的容器组的实际调度数量;

在每一检测周期,判断实际调度数量是否大于或等于目标服务在运行时所需的最小副本数量。

在一示例性实施中,判断实际调度数量是否大于或等于目标服务在运行时所需的最小副本数量之后,网络检测方法还包括:

当实际调度数量小于目标服务在运行时所需的最小副本数量,重复按检测周期获取目标服务中的容器组的实际调度数量的操作,直至实际调度数量大于或等于目标服务在运行时所需的最小副本数量。

本实施例中,按检测周期对目标服务当前被调度的容器组的实际调度数量进行获取,如果在当前检测周期获取到的实际调度数量小于最小副本数量,则循环等待,直至实际调度数量大于或等于最小副本数量,按检测周期获取实际调度数量,可以在一定程度上提高检测效率,在实际调度数量大于或等于最小副本数量时及时进行下一步检测流程。可以理解,实际调度数量大于或等于最小副本数量说明目标服务已达成运行标准,此时即可对该目标服务中的各个容器组之间的网络连通状态进行检测。

进一步的,本实施例还可以设置一个超时时间,如果当前检测周期获取到的实际调度数量小于最小副本数量,且当前检测周期对应的时间超过超时时间,则判定检测失败,结束本次检测。

在一示例性实施中,基于单元名称确定目标服务的服务名称之前,网络检测方法还包括:

基于服务名称确定目标服务包括的每一其他容器组的检测信息;

检测当前容器组和目标服务中的其他容器组之间的网络连通状态的过程包括:

基于每一其他容器组的检测信息检测当前容器组和其他容器组之间的网络连通状态。

在一示例性实施中,检测信息包括互联网协议地址和单元名称;

基于每一其他容器组的检测信息检测当前容器组和其他容器组之间的网络连通状态的过程包括:

控制当前容器组按每一其他容器组的互联网协议地址和单元名称发送检测报文,根据每一其他容器组返回的反馈报文确定当前容器组与每一其他容器组之间的网络连通状态。

在进行检测时,需要确定各个容器组的检测信息,按照各个容器组的检测信息执行ping命令检测当前容器组和同属于目标服务的其他容器组之间的网络连通状态。

其中,每一个容器组的检测信息包括但不限于物联网协议地址podip,控制当前容器组向每一个podip发送检测报文,基于每一个podip返回的反馈报文,即可确定当前容器组和每一个podip对应的其他容器组之间的网络连通状态。

在一示例性实施中,检测信息包括互联网协议地址和单元名称;

基于单元名称确定目标服务的服务名称之后,网络检测方法还包括:

基于服务名称获取目标服务包括的每一其他容器组的单元名称;

当目标服务中的容器组的实际调度数量大于或等于目标服务在运行时所需的最小副本数量,基于服务名称获取目标服务包括的每一其他容器组的互联网协议地址。

本实施例中,考虑到弹性服务中,可能会随着服务压力的调整,增大或减小调度的容器组的数量,因此,可以在确定目标服务中的容器组的实际调度数量大于或等于最小副本数量时,再对其他容器组的互联网协议地址进行获取,可以提高网络连通性测试的准确性和可靠性。

在一示例性实施中,基于服务名称获取目标服务包括的每一其他容器组的互联网协议地址之前,网络检测方法还包括:

为各个服务配置一一对应的互联网协议地址池;互联网协议地址池用于存储其一一对应的服务包括的容器组的单元名称及互联网协议地址的映射关系。

在一示例性实施中,网络检测方法还包括:

当服务中存在被调度的容器组时,将被调度的容器组的互联网协议地址记录在服务一一对应的互联网协议地址池中。

在一示例性实施中,网络检测方法还包括:

当服务中存在被移除的容器组时,将被移除的容器组的互联网协议地址从服务一一对应的互联网协议地址池中删除。

在一示例性实施中,互联网协议地址池的名称与其一一对应的服务的服务名称相同。

本实施例中,在进行网络连通测试之前,还包括配置互联网协议地址池ippool的操作,ippool用于记录与该服务相关的podip和podname的映射关系的一种自定义资源类型。

可以理解,每个弹性服务都与之对应一个ippool,ippool设计成kubernetes的自定义资源类型,其名字与弹性服务名称一致,用来存储弹性服务里的podname和podip的映射关系。当弹性服务的某些pod被调度时,将该pod ip记录到对应ippool中。当弹性服务移除某些pod时,将ippool中的对应pod ip记录删除。

在一示例性实施中,基于服务名称获取目标服务包括的每一其他容器组的互联网协议地址的过程包括:

基于服务名称在所有互联网协议地址池中确定目标互联网协议地址池;

从目标互联网协议地址池中获取目标服务包括的每一其他容器组的互联网协议地址。

本实施例中,当检测到被调度的容器组的实际调度数量大于或等于最小副本数量,说明目标服务已达成运行标准,基于目标服务的服务名称获取目标服务对应的ippool,解析ippool中记录的所有podip信息,可以理解,所有podip对应的容器组组成了目标服务。

在一示例性实施中,检测当前容器组和目标服务中的其他容器组之间的网络连通状态之后,网络连通检测还包括:

针对每一其他容器组,若网络连通状态为未连通,且当前重试次数为未达到预设重试次数,重新检测当前容器组和其他容器组之间的网络连通状态。

在一示例性实施中,针对每一其他容器组,若网络连通状态为未连通,且当前重试次数为未达到预设重试次数,重新检测当前容器组和其他容器组之间的网络连通状态之前,网络检测方法还包括:

根据目标服务的启动时间确定预设重试次数。

本实施例中,在进行当前容器组和任一其他容器组之间的网络连通状态检测之前,预先设置预设重试次数,每次检测之前,先判断是否超过预设重试次数,若未超过,则对当前容器组和其他容器组之间的网络连通状态进行检测,若网络连通状态为成功状态,则说明二者网络畅通,进行后续检测流程,如进行当前容器组和下一个容器组之间的网络连通状态检测等。若网络连通状态为失败状态,且未超过预设次数,则重新对当前容器组和任一其他容器组进行网络连通状态检测,如果达到预设重试次数,二者还是连通失败,则可生成对应的提示信息,以便用户基于提示信息进行后续处理。

其中,预设重试次数可以根据目标服务的启动时间进行调整,以提高容错。当然,除了可以根据目标服务的启动时间进行调整还可以根据其他参数进行调整,本实施例在此不作具体限定。

结合上述实施例和图5,对本实施例所提供的网络连通检测的流程进行说明,该网络连通检测包括:初始化容器开始运行;获取初始化容器内环境变量,并基于环境变量确定当前容器组的单元名称;通过单元名称中的信息截取到目标服务的服务名称信息;调用容器编排平台集群的应用程序编程接口,获取容器编排平台集群的所有容器组的信息,并通过服务名称进行筛选;初始化超时时间,判断当前时间是否超过超时时间,若是,失败结束,若否,查询目标服务绑定的辅助配置文件;解析目标服务运行所需的最小副本数量;统计已被调度的容器组的实际调度数量,判断实际调度数量是否大于或等于最小副本数量,若否,执行判断当前时间是否超过超时时间的操作,若是,通过网络地址协议池自定义资源解析网络协议地址;初始化预设重试次数,判断当前次检测的次数是否超过预设重试次数,若是,失败结束,若否,执行网络连通状态检测操作,判断网络连通状态是否成功,若否,执行判断当前次检测的次数是否超过预设重试次数的操作,若是,成功结束。

在上述实施例的基础上,针对弹性服务的扩容场景,参照图6所示,当弹性服务扩容时,会有新的pod产生,因此需要检测新的pod与其他已经存在pod的网络连通状态,新创建的pod被webhook拦截改造,注入网络连通检测逻辑,将新创建的pod ip信息记录到对应的ippool中。当这个pod开始运行时,初始化容器中的网络连通检测逻辑开始执行,容器组1通过容器组1网络栈和容器组2的容器组网络栈传输ping命令,ping命令是判断网络故障常用的命令,当所有检测通过后,pod开始提供正常的服务,成为弹性服务的一部分。针对弹性服务的缩容场景,参照图7所示,当弹性服务缩容时,会删除掉一些pod(剩余pod数量需要大于podGroup中记录的最小副本数),在弹性服务对应的ippool中删除这些pod信息,由于剩下的pod已经通过网络连通检测,因此暂不做其他操作。

综上所述,本发明提供了一种kubernetes中基于webhook机制的弹性服务网络连通检测策略,使用kubernetes中的webhook机制,对承载业务的pod注入初始化容器,在初始化容器中针对于pod的网络进行连通性检测,保证分布式服务启动之前的pod网络连通性。特别地,针对于一些弹性分布式服务场景,以分布式服务配置中的最小副本数判定分布式服务是否运行,动态的进行网络检测,可以很好的解决弹性服务在kubernetes运行时遇到的网络连通性问题。

第二方面,请参照图8,图8为本发明所提供的一种网络检测系统的结构示意图,网络检测系统包括:

第一确定模块81,用于确定待创建容器组的原始配置文件,将配置有网络连通检测逻辑的初始化容器的配置信息注入到原始配置文件中得到创建配置文件;

创建模块82,用于基于创建配置文件创建当前容器组;

检测模块83,用于控制当前容器组启动,以触发初始化容器基于网络连通检测逻辑对当前容器组进行网络连通检测;

网络连通检测包括:当目标服务中的容器组的实际调度数量大于或等于目标服务在运行时所需的最小副本数量,检测当前容器组和目标服务中的其他容器组之间的网络连通状态,目标服务为包括当前容器组的服务。

可见,本实施例中,在对容器组进行创建时,将配置有网络连通检测逻辑的初始化容器的配置信息注入到的原始配置文件中得到创建配置文件中,控制基于创建配置文件创建的当前容器组启动后,即可通过初始化容器先对当前容器组进行网络连通检测,保证目标服务启动之前各容器组之间的网络连通性,从而保证服务正常运行,在进行网络连通检测时,本发明无需等待目标服务所有容器组均被调度后再进行网络连通检测,以目标服务在运行时所需的最小副本数量作为目标服务是否运行的依据,动态的进行网络连通检测,适配弹性服务。

在一示例性实施中,将配置有网络连通检测逻辑的初始化容器的配置信息注入到原始配置文件中得到创建配置文件之前,网络检测系统还包括:

在容器编排平台集群中配置目标文件,目标文件用于存储配置有网络连通检测逻辑的初始化容器的配置信息;

将配置有网络连通检测逻辑的初始化容器的配置信息注入到原始配置文件中得到创建配置文件的过程包括:

从目标文件中获取配置有网络连通检测逻辑的初始化容器的配置信息,将初始化容器的配置信息注入到原始配置文件中得到创建配置文件。

在一示例性实施中,网络检测系统还包括:

预处理模块,用于在确定待创建容器组的原始配置文件之前,在容器编排平台集群中创建网络钩子服务以及网络钩子服务后端;

转发模块,用于控制网络钩子服务将应用程序编程接口服务器接收到的创建请求转发到网络钩子服务后端;

确定待创建容器组的原始配置文件,将配置有网络连通检测逻辑的初始化容器的配置信息注入到原始配置文件中得到创建配置文件的过程包括:

控制网络钩子服务后端确定与创建请求对应的待创建容器组的原始配置文件,并从目标文件中获取配置有网络连通检测逻辑的初始化容器的配置信息,将初始化容器的配置信息注入到原始配置文件中得到创建配置文件。

在一示例性实施中,控制网络钩子服务将应用程序编程接口服务器接收到的创建请求转发到网络钩子服务后端的过程包括:

控制应用程序编程接口服务器在接收到创建请求时调用网络钩子服务,以使网络钩子服务将创建请求转发到网络钩子服务后端。

在一示例性实施中,当目标服务中的容器组的实际调度数量大于或等于目标服务在运行时所需的最小副本数量,检测当前容器组和目标服务中的其他容器组之间的网络连通状态之前,网络连通检测还包括:

获取初始化容器的环境变量,基于环境变量确定当前容器组的单元名称;

基于单元名称确定目标服务的服务名称;

基于服务名称确定与目标服务一一对应的最小副本数量。

在一示例性实施中,网络检测系统还包括:

第一获取模块,用于在检测当前容器组和目标服务中的其他容器组之间的网络连通状态之前,按检测周期获取目标服务中的容器组的实际调度数量;

判断模块,用于在每一检测周期,判断实际调度数量是否大于或等于目标服务在运行时所需的最小副本数量。

在一示例性实施中,判断实际调度数量是否大于或等于目标服务在运行时所需的最小副本数量之后,网络检测系统还包括:

当实际调度数量小于目标服务在运行时所需的最小副本数量,重复按检测周期获取目标服务中的容器组的实际调度数量的操作,直至实际调度数量大于或等于目标服务在运行时所需的最小副本数量。

在一示例性实施中,网络检测系统还包括:

第三确定模块,用于在基于单元名称确定目标服务的服务名称之后,基于服务名称确定目标服务包括的每一其他容器组的检测信息;

检测当前容器组和目标服务中的其他容器组之间的网络连通状态的过程包括:

基于每一其他容器组的检测信息检测当前容器组和其他容器组之间的网络连通状态。

在一示例性实施中,检测信息包括互联网协议地址和单元名称;

基于每一其他容器组的检测信息检测当前容器组和其他容器组之间的网络连通状态的过程包括:

控制当前容器组按每一其他容器组的互联网协议地址和单元名称发送检测报文,根据每一其他容器组返回的反馈报文确定当前容器组与每一其他容器组之间的网络连通状态。

在一示例性实施中,检测信息包括互联网协议地址和单元名称;

网络检测系统还包括:

第二获取模块,用于在基于单元名称确定目标服务的服务名称之后,基于服务名称获取目标服务包括的每一其他容器组的单元名称;

第三获取模块,用于当目标服务中的容器组的实际调度数量大于或等于目标服务在运行时所需的最小副本数量,基于服务名称获取目标服务包括的每一其他容器组的互联网协议地址。

在一示例性实施中,网络检测系统还包括:

配置模块,用于在基于服务名称获取目标服务包括的每一其他容器组的互联网协议地址之前,为各个服务配置一一对应的互联网协议地址池;互联网协议地址池用于存储其一一对应的服务包括的容器组的单元名称及互联网协议地址的映射关系。

在一示例性实施中,网络检测系统还包括:

记录模块,用于当服务中存在被调度的容器组时,将被调度的容器组的互联网协议地址记录在服务一一对应的互联网协议地址池中。

在一示例性实施中,网络检测系统还包括:

清楚模块,用于当服务中存在被移除的容器组时,将被移除的容器组的互联网协议地址从服务一一对应的互联网协议地址池中删除。

在一示例性实施中,互联网协议地址池的名称与其一一对应的服务的服务名称相同。

在一示例性实施中,基于服务名称获取目标服务包括的每一其他容器组的互联网协议地址的过程包括:

基于服务名称在所有互联网协议地址池中确定目标互联网协议地址池;

从目标互联网协议地址池中获取目标服务包括的每一其他容器组的互联网协议地址。

在一示例性实施中,检测当前容器组和目标服务中的其他容器组之间的网络连通状态之后,网络连通检测还包括:

针对每一其他容器组,若网络连通状态为未连通,且当前重试次数为未达到预设重试次数,重新检测当前容器组和其他容器组之间的网络连通状态。

在一示例性实施中,网络检测系统还包括:

第五确定模块,用于在重新检测当前容器组和其他容器组之间的网络连通状态之前,根据目标服务的启动时间确定预设重试次数。

第三方面,本发明还提供了一种电子设备,包括:

存储器,用于存储计算机程序;

处理器,用于执行计算机程序时实现如上文任意一个实施例所描述的网络检测方法的步骤。

对于本发明所提供的一种电子设备的介绍请参照上述实施例,本发明在此不再赘述。

本发明所提供的一种电子设备具有和上述网络检测方法相同的有益效果。

第四方面,本发明还提供了一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现如上文任意一个实施例所描述的网络检测方法的步骤。

对于本发明所提供的一种计算机可读存储介质的介绍请参照上述实施例,本发明在此不再赘述。

本发明所提供的一种计算机可读存储介质具有和上述网络检测方法相同的有益效果。

还需要说明的是,在本说明书中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的状况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其他实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

相关技术
  • 一种超厚发泡陶瓷板及生产工艺
  • 一种注射成型塑基氧化铝陶瓷产品的生产工艺流程
  • 一种网带式发泡陶瓷生产工艺
  • 一种注射成型塑基氧化锆陶瓷产品的生产工艺流程
  • 一种用贵金属陶瓷薄膜制作三面金属化陶瓷热沉的生产工艺
  • 一种陶瓷花纸专用防爆花封面油及其生产工艺、陶瓷花纸
技术分类

06120116571057