路由信息处理方法、装置、计算机设备和存储介质与流程

文档序号:30252111发布日期:2022-06-02 01:42阅读:78来源:国知局
路由信息处理方法、装置、计算机设备和存储介质与流程

1.本技术涉及容器开发技术领域,特别是涉及一种路由信息处理方法、装置、计算机设备和存储介质。


背景技术:

2.随着容器开发技术的发展,出现了容器开发管理平台,例如,kubernetes(简称k8s)平台,其是当下比较主流的能够自动化管理大规模linux容器的开源平台,在k8s中,pod是一组容器的集合,即,容器组,是最基本的调度单位,应用一般部署在pod中进行发布。pod与pod之间经常会产生通信,所以k8s会为每个pod分配单独的网络栈。一般情况下,为每个pod分配一张网卡就可以满足通信需求。然而,在一些特殊的应用之间,需要组成复杂的网络拓扑结构。这时就会为pod配置多张网卡,通过设置网卡之间的互通而构建特殊的网络拓扑。在网络拓扑的构建过程中,需要向pod中添加大量的路由信息。
3.在传统方法中,采用手动方式进行路由配置,需要作业人员逐个进入每个pod中,并使用命令行进行路由配置操作,不仅步骤繁琐,耗时长,还伴随着出错风险,导致pod中路由信息的配置效率低。


技术实现要素:

4.基于此,有必要针对上述技术问题,提供一种能够提高容器组中路由信息配置效率的路由信息处理方法、装置、计算机设备和存储介质。
5.一种路由信息处理方法,该方法包括:
6.获取路由配置脚本,路由配置脚本中包括待注入路由信息;
7.根据路由配置脚本创建资源配置对象;
8.通过资源配置对象将路由配置脚本挂载至目标容器中,目标容器为容器组中的任意一个初始化容器;
9.响应于容器组的启动指令,基于预先创建的网络管理工具镜像在目标容器中读取并执行路由配置脚本,将待注入路由信息注入容器组。
10.在一个实施例中,根据路由配置脚本创建资源配置对象,包括:将路由配置脚本提交至容器管理系统集群;根据路由配置脚本在容器管理系统集群中创建与容器组对应的资源配置对象。
11.在一个实施例中,在容器管理系统集群中创建与容器组对应的资源配置对象,包括:在容器管理系统集群中与容器组所在命名空间相同的空间下创建资源配置对象。
12.在一个实施例中,通过资源配置对象将路由配置脚本挂载至目标容器中,包括:根据资源配置对象生成对应的数据卷;通过挂载数据卷的方式,将资源配置对象所携带的待注入路由信息以路由配置脚本的形式挂载至目标容器中的指定目录下。
13.在一个实施例中,目标容器优先于容器组中的应用容器启动。
14.在一个实施例中,将待注入路由信息注入容器组,包括:响应于路由配置脚本中的
路由信息注入指令,根据路由信息注入指令在容器组对应的网络栈中注入待注入路由信息。
15.在一个实施例中,该方法还包括:创建包括轻量级网络管理工具的linux镜像;将linux镜像作为网络管理工具镜像与目标容器组关联。
16.一种路由信息处理装置,该装置包括:
17.脚本获取模块,用于获取路由配置脚本,路由配置脚本中包括待注入路由信息;
18.对象创建模块,用于根据路由配置脚本创建资源配置对象;
19.脚本挂载模块,用于通过资源配置对象将路由配置脚本挂载至目标容器中,目标容器为容器组中的任意一个初始化容器;
20.信息注入模块,用于响应于容器组的启动指令,基于预先创建的网络管理工具镜像在目标容器中读取并执行路由配置脚本,将待注入路由信息注入容器组。
21.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述的路由信息处理方法的步骤。
22.一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述的路由信息处理方法的步骤。
23.上述路由信息处理方法、装置、计算机设备和存储介质,通过创建资源配置对象,将呈路由配置脚本形式的待注入路由信息挂载至容器组内的目标容器下,在启动容器组时,能够根据预先构建的网络管理工具镜像在目标容器中读取并执行预先挂载的路由配置脚本,快速、准确、自动地为该容器组注入路由信息,从而提高了容器组路由配置的效率。
附图说明
24.图1为一个实施例中路由信息处理方法的流程示意图;
25.图2为一个应用实例中路由信息处理方法的技术构架示意图;
26.图3为一个实施例中路由信息处理装置的结构框图;
27.图4为一个实施例中计算机设备的内部结构图。
具体实施方式
28.为了使本技术的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本技术进行进一步详细说明。应当理解,此处描述的具体实施例仅用以解释本技术,并不用于限定本技术。
29.云计算,是一种将计算机集群资源池化并通过网络进行数据传输来向用户提供服务的技术。传统资源池化的过程是使用虚拟化技术实现的,它将计算机硬件与软件相互隔离。后来,出现了linux容器技术,linux容器技术能够实现与虚拟化技术类似的功能,并且更加轻量化。然而,它并没有解决虚拟化技术中应用开发与部署过程中环境不一致的问题,这才是当时应用开发非常棘手的问题,所以,linux容器技术在刚开始并没有受到太多关注。
30.docker项目的出现让linux容器技术真正火热起来,它通过对整个操作系统中的文件和目录进行打包,从而保证开发、测试、生产环境的一致性,从而大大降低了应用发布的复杂度。然而,一个容器实际上就是一个进程,所以,一个容器化的应用往往以多个容器
协同工作的形式存在。在一个计算机集群中,甚至会有成千上万的容器在运行,手动管理这么多的容器几乎是不可能的。
31.因此,出现了linux容器管理平台,例如,kubernetes(简称k8s),其是一个能够自动化管理大规模linux容器的开源平台,它能完成容器的部署和复制、容器的扩缩容、维持容器间的负载均衡等重要功能。在k8s中,pod是一组容器的集合,pod容器组是最基本的调度单位,应用部署在pod中进行发布。在pod与pod之间经常会产生通信行为,所以k8s会为每个pod分配单独的网络栈,并通过网络插件进行配置从而保证pod之间的通信。
32.一般情况下,为每个pod分配一张网卡就可以满足通信需求。然而,在一些特殊应用之间,需要组成复杂的网络拓扑结构(例如,环状通信)。这时就会为pod配置多张网卡,通过设置网卡之间的互通而构建特殊的网络拓扑。在不同子网中的两张网卡是无法直接进行通信的,这往往通过构建一个二层或三层网络来打通不同的子网。在复杂的网络拓扑结构的构建过程中,需要向pod中添加大量的路由信息。如果以手动方式进行配置,要逐个进入每个pod中,使用命令行进行操作,不仅步骤繁琐,还伴随着出错的风险,出错以后也不方便检查。
33.在一个实施例中,本技术的路由信息处理方法可以应用于上述的k8s平台,例如,可以应用于基于k8s平台的pod与pod之间的通信网络结构的构建过程中。本技术的路由信息处理方法可以基于服务器实现,其中,服务器可以是k8s集群中的任何一台或多台服务器,也可以是独立于k8s集群的任意一台或多台服务器。
34.具体地,服务器获取路由配置脚本,路由配置脚本中包括待注入路由信息;根据路由配置脚本创建资源配置对象;服务器通过资源配置对象将路由配置脚本挂载至容器组中的目标容器所对应的指定目录下;服务器响应于容器组的启动指令,基于预先创建的网络管理工具镜像控制目标容器从指定目录读取并执行路由配置脚本,将待注入路由信息注入容器组。
35.在一个实施例中,如图2所示,提供了一种路由信息处理方法,以该方法应用服务器为例进行说明,包括以下步骤:
36.步骤s102:获取路由配置脚本,路由配置脚本中包括待注入路由信息。
37.其中,待注入路由信息是指反映路由配置规则的且需要注入至对应容器组中的路由配置相关信息。待注入路由信息可以由作业人员根据业务需要自定义设置。路由配置脚本是指将待注入路由信息以脚本指令的形式进行排版编写后生成的脚本,例如,可以实现为shell脚本等。
38.具体地,服务器可以获取用户指定的包含待注入路由信息的路由配置脚本,或者,也可以根据用户输入的待注入路由信息以脚本指令的形式生成路由配置脚本。
39.步骤s104:根据路由配置脚本创建资源配置对象。
40.其中,资源配置对象是指用于将资源配置相关数据保存到键值对中的api(application program interface,应用程序接口)对象,例如,若是基于k8s平台实现,上述的资源配置对象可以实现为configmap对象。
41.在一个实施例中,根据路由配置脚本创建资源配置对象,包括:将路由配置脚本提交至容器管理系统集群;根据路由配置脚本在容器管理系统集群中创建与容器组对应的资源配置对象。
42.示例性地,用户可以通过创建yaml文件,即,后缀为.yaml的配置文件,并将包含待注入路由信息的shell形式的路由配置脚本作为文件内容写入至该yaml文件,然后,服务器可以将该yaml文件提交至k8s容器管理系统集群,根据该yaml文件,并通过k8s容器管理系统集群中的任何一台或多台服务器在k8s容器管理系统集群中创建configmap对象。
43.在一个实施例中,在容器管理系统集群中创建与容器组对应的资源配置对象,包括:在容器管理系统集群中与容器组所在命名空间相同的空间下创建资源配置对象。
44.在本实施例中,可能存在多个容器组需要注入路由信息,每个需要注入路由信息的容器组其对应的待注入信息都可能有所不同,各容器组有可能存在于不同的命名空间下,因此,可以通过在需要注入路由信息的各容器组的命名空间下分别创建对应的资源配置对象,从而将携带不同待注入路由信息的不同资源配置对象与其对应的容器组相关联。因此,即使在存在多个容器组的情况下,也能够提高路由信息注入的准确性和效率。
45.步骤s106:通过资源配置对象将路由配置脚本挂载至目标容器中,目标容器为容器组中的任意一个初始化容器。
46.其中,容器组是指由至少一个容器所组成的集合,例如,可以实现为pod。目标容器可以是该容器组中的任意一个初始化容器(init容器)。
47.具体地,服务器可以通过资源配置对象将其携带的待注入路由信息挂载至需要注入路由信息的容器组内的指定的任意一个初始化容器中,示例性地,也可以挂载至需要注入路由信息的容器组内的指定的任意一个初始化容器所对应的指定目录下。可以指定容器组中的任意一个初始化容器作为路由配置脚本挂载的目标容器。
48.在一个实施例中,目标容器优先于容器组中的应用容器启动。在本实施例中,容器组中可以包括至少一个初始化容器和至少一个普通容器(应用容器),在容器组进行启动时,一般会优先启动初始化容器,通过初始化容器进行整个运行环境等的初始化配置,因此,通过在目标容器对应的指定目录下挂载路由配置脚本,并使其优先于应用容器启动,能够确保在容器组中的应用容器启用时,路由已经实现自动配置,确保pod容器组之间在启用后的通信可靠性,从而确保应用服务的正常交互。
49.在一个实施例中,通过资源配置对象将路由配置脚本挂载至目标容器中,包括:根据资源配置对象生成对应的数据卷;通过挂载数据卷的方式,将资源配置对象所携带的待注入路由信息以路由配置脚本的形式挂载至目标容器中的指定目录下。
50.其中,指定目录是指与目标容器对应的用于存储数据或信息的目录,容器启动时会从与其对应的目录下读取数据或信息。数据卷(volume)可以用于数据持久化。通过创建数据卷,可以将资源配置对象中的路由配置脚本作为存储数据进行持久化,避免数据的丢失。
51.具体地,可以通过“pod.spec.volumes:”字段生成并定义指定的数据卷,以挂载数据卷的方式可以将作为存储数据的路由配置脚本挂载至目标容器中对指定目录下。
52.步骤s108:响应于容器组的启动指令,基于预先创建的网络管理工具镜像在目标容器中读取并执行路由配置脚本,将待注入路由信息注入容器组。
53.其中,网络管理工具镜像是指预先创建的包含网络管理工具的linux镜像。网络管理工具镜像可以预先进行创建,可以配置为与目标容器相关联。在容器组进行启动时,可以启用网络管理工具镜像在目标容器中从指定目录下读取并执行预先挂载的路由配置脚本
中的指令,根据指令将待注入路由信息注入容器组,从而实现容器组之间通信路由的自动化配置。
54.具体地,在启动容器组时,服务器可以调用该网络管理工具镜像,基于该网络管理工具镜像在目标容器中读取目标容器对应的指定目录下挂载的路由配置脚本,并通过执行路由配置脚本中的指令以实现路由信息的自动化注入,从而避免了手动配置的繁琐流程以及手动指令输入导致的遗漏与错误。
55.在一个实施例中,将待注入路由信息注入容器组,包括:响应于路由配置脚本中的路由信息注入指令,根据路由信息注入指令在容器组对应的网络栈注入待注入路由信息。
56.在本实施例中,由于不同的容器组可以配置不同的网络栈,网络栈用于实现网络配置。因此,本实施例,可以通过配置路由配置脚本中的路由信息注入指令,以使得路由信息能够正确地注入各容器组所对应的网络栈,不需要作业人员手动一一进入各容器组的网络栈进行配置,从而实现路由信息的自动、准确配置,进一步提高了自动配置的效率。
57.在一个实施例中,该方法还包括:创建包括轻量级网络管理工具的linux镜像;将linux镜像作为网络管理工具镜像与目标容器组关联。示例性地,可以创建带有iproute2网络管理工具的linux镜像。为了让该镜像轻量化,镜像源可以使用alpine版本的linux镜像。进一步地,在linux镜像创建完成后,可以提交至私有或公有镜像仓库,以便存档或共享。
58.上述路由信息处理方法,通过创建资源配置对象,将呈路由配置脚本形式的待注入路由信息挂载至容器组内的目标容器下,在启动容器组时,能够根据预先构建的网络管理工具镜像在目标容器中读取并执行预先挂载的路由配置脚本,快速、准确、自动地为容器组注入路由信息,从而提高了容器组路由配置的效率。
59.下面,结合一个应用实例,对本技术涉及的路由信息处理方法进行进一步详细说明,参考图2所示,图示出了一个应用实例中路由信息处理方法的技术构架示意图。具体地,可以将需要注入的路由信息以脚本文件的形式放在configmap对象中,并将这个configmap挂载为pod里面的init容器中的一个shell脚本文件,init容器在pod启动时使用网络管理工具执行这个shell脚本文件,完成路由信息的注入,从而实现路由信息、configmap、pod、init容器的有效组合。
60.更为具体地,可以包括以下步骤:
61.步骤1、制作仅包含网络管理工具的轻量级linux镜像,该镜像用于init容器中执行添加路由信息的命令。
62.步骤2、在所有需要添加路由信息的pod所在命名空间中分别创建configmap对象,这个configmap对象中包含了需要注入的路由信息。
63.步骤3、修改pod配置文件,将步骤2中的configmap对象添加到pod,然后向pod中添加一个init容器,这个init容器满足以下特征:init容器使用步骤1中制作的镜像;将pod中的configmap对象挂载到init容器的某个路径下;init容器执行在挂载路径下生成的脚本文件。
64.本应用实例涉及的路由信息处理方法,能够在pod启动时自动将路由信息添加到其对应的网络栈里,能够避免在pod创建后手动添加路由信息的繁琐流程,同时也方便了对添加的路由信息的检查,避免因手动操作而产生的错误与遗漏。
65.应该理解的是,虽然图1的流程图中的各个步骤按照箭头的指示依次显示,但是这
些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图1中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
66.在一个实施例中,如图3所示,提供了一种路由信息处理装置,包括:脚本获取模块310、对象创建模块320、脚本挂载模块330和信息注入模块340,其中:
67.脚本获取模块310,用于获取路由配置脚本,路由配置脚本中包括待注入路由信息;
68.对象创建模块320,用于根据路由配置脚本创建资源配置对象;
69.脚本挂载模块330,用于通过资源配置对象将路由配置脚本挂载至目标容器中,目标容器为容器组中的任意一个初始化容器;
70.信息注入模块340,用于响应于容器组的启动指令,基于预先创建的网络管理工具镜像在目标容器中读取并执行路由配置脚本,将待注入路由信息注入容器组。
71.在一个实施例中,对象创建模块320将路由配置脚本提交至容器管理系统集群;根据路由配置脚本在容器管理系统集群中创建与容器组对应的资源配置对象。
72.在一个实施例中,对象创建模块320在容器管理系统集群中与容器组所在命名空间相同的空间下创建资源配置对象。
73.在一个实施例中,脚本挂载模块330根据资源配置对象生成对应的数据卷;通过挂载数据卷的方式,将资源配置对象所携带的待注入路由信息以路由配置脚本的形式挂载至目标容器中的指定目录下。
74.在一个实施例中,信息注入模块340响应于路由配置脚本中的路由信息注入指令,根据路由信息注入指令在容器组对应的网络栈中注入待注入路由信息。
75.在一个实施例中,脚本获取模块310,还用于创建包括轻量级网络管理工具的linux镜像;将linux镜像作为网络管理工具镜像与目标容器组关联。
76.关于路由信息处理装置的具体限定可以参见上文中对于路由信息处理方法的限定,在此不再赘述。上述路由信息处理装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
77.在一个实施例中,提供了一种计算机设备,该计算机设备可以是服务器,其内部结构图可以如图4所示。该计算机设备包括通过系统总线连接的处理器、存储器、网络接口。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种路由信息处理方法。
78.本领域技术人员可以理解,图4中示出的结构,仅仅是与本技术方案相关的部分结构的框图,并不构成对本技术方案所应用于其上的计算机设备的限定,具体的计算机设备
可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
79.在一个实施例中,提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现以下步骤:获取路由配置脚本,路由配置脚本中包括待注入路由信息;根据路由配置脚本创建资源配置对象;通过资源配置对象将路由配置脚本挂载至目标容器中,目标容器为容器组中的任意一个初始化容器;响应于容器组的启动指令,基于预先创建的网络管理工具镜像在目标容器中读取并执行路由配置脚本,将待注入路由信息注入容器组。
80.在一个实施例中,处理器执行计算机程序实现根据路由配置脚本创建资源配置对象时,具体实现以下步骤:将路由配置脚本提交至容器管理系统集群;根据路由配置脚本在容器管理系统集群中创建与容器组对应的资源配置对象。
81.在一个实施例中,处理器执行计算机程序实现在容器管理系统集群中创建与容器组对应的资源配置对象时,具体实现以下步骤:在容器管理系统集群中与容器组所在命名空间相同的空间下创建资源配置对象。
82.在一个实施例中,处理器执行计算机程序实现通过资源配置对象将路由配置脚本挂载至目标容器中时,具体实现以下步骤:根据资源配置对象生成对应的数据卷;通过挂载数据卷的方式,将资源配置对象所携带的待注入路由信息以路由配置脚本的形式挂载至目标容器中的指定目录下。
83.在一个实施例中,处理器执行计算机程序实现将待注入路由信息注入容器组时,具体实现以下步骤:响应于路由配置脚本中的路由信息注入指令,根据路由信息注入指令在容器组对应的网络栈中注入待注入路由信息。
84.在一个实施例中,处理器执行计算机程序时还实现以下步骤:创建包括轻量级网络管理工具的linux镜像;将linux镜像作为网络管理工具镜像与目标容器组关联。
85.在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:获取路由配置脚本,路由配置脚本中包括待注入路由信息;根据路由配置脚本创建资源配置对象;通过资源配置对象将路由配置脚本挂载至目标容器中,目标容器为容器组中的任意一个初始化容器;响应于容器组的启动指令,基于预先创建的网络管理工具镜像在目标容器中读取并执行路由配置脚本,将待注入路由信息注入容器组。
86.在一个实施例中,计算机程序被处理器执行实现根据路由配置脚本创建资源配置对象时,具体实现以下步骤:将路由配置脚本提交至容器管理系统集群;根据路由配置脚本在容器管理系统集群中创建与容器组对应的资源配置对象。
87.在一个实施例中,计算机程序被处理器执行实现在容器管理系统集群中创建与容器组对应的资源配置对象时,具体实现以下步骤:在容器管理系统集群中与容器组所在命名空间相同的空间下创建资源配置对象。
88.在一个实施例中,计算机程序被处理器执行实现通过资源配置对象将路由配置脚本挂载至目标容器中时,具体实现以下步骤:根据资源配置对象生成对应的数据卷;通过挂载数据卷的方式,将资源配置对象所携带的待注入路由信息以路由配置脚本的形式挂载至目标容器中的指定目录下。
89.在一个实施例中,计算机程序被处理器执行实现将待注入路由信息注入容器组
时,具体实现以下步骤:响应于路由配置脚本中的路由信息注入指令,根据路由信息注入指令在容器组对应的网络栈中注入待注入路由信息。
90.在一个实施例中,计算机程序被处理器执行时还实现以下步骤:创建包括轻量级网络管理工具的linux镜像;将linux镜像作为网络管理工具镜像与目标容器组关联。
91.本领域普通技术人员可以理解实现上述实施例的方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本技术所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(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)等。
92.以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
93.以上所述实施例仅表达了本技术的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本技术构思的前提下,还可以做出若干变形和改进,这些都属于本技术的保护范围。因此,本技术专利的保护范围应以所附权利要求为准。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1