一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种容器引擎Docker的资源调度方法、装置、设备和存储介质与流程

2021-10-24 05:21:00 来源:中国专利 TAG:调度 容器 装置 引擎 方法

一种容器引擎docker的资源调度方法、装置、设备和存储介质
技术领域
1.本发明涉及docker技术领域,尤其涉及一种容器引擎docker的资源调度方法、装置、设备和存储介质。


背景技术:

2.现有集群镜像仓库中,调度器会根据资源请求的描述根据设定的条件寻找最优的节点进行分配,一般调度器会尽可能的选择对应镜像已经在的节点,但是由于节点内的镜像会被节点改变,新镜像在调度时难以寻找匹配的最佳节点。


技术实现要素:

3.本发明一方面提供一种容器引擎docker的资源调度方法,所述方法包括:获取集群镜像仓库中目标镜像的镜像层数据;将所获取的镜像层数据进行层级结构处理;将节点与所述目标镜像层数据按照所述层级结构进行镜像匹配,确定匹配结果;基于所述匹配结果,确定所述目标镜像的节点。
4.在一可实施方式中,所述获取集群镜像仓库中目标镜像的镜像层数据,包括:将所述集群镜像仓库中目标镜像的镜像层数据同步至预设信息库中;从所述预设信息库中获取所述镜像层数据。
5.在一可实施方式中,所述方法还包括:当从外部拉取新镜像时,将所述新镜像的镜像层数据同步至所述预设信息库中。
6.在一可实施方式中,在确定所述目标镜像的节点之后,所述方法还包括:从所述预设信息库中获取所匹配的镜像层数据;基于所述镜像层数据,从外部镜像仓库中获取对应的镜像。
7.在一可实施方式中,所述将所述节点与所述目标镜像层数据按照所述层级结构进行镜像匹配,确定匹配结果,包括:采用多线程机制将所述目标镜像的镜像层数据与多个不同所述节点按照所述层级结构同时进行镜像匹配,分别确定多个中间结果;将多个所述中间结果按照预设排序方式进行排序处理,确定匹配结果。
8.在一可实施方式中,所述节点与镜像层数据的匹配过程为:在所述镜像层数据与所述节点中的原有镜像数据不存在共同的根节点的情况下,所述节点与镜像层数据不匹配;在所述镜像层数据与所述节点中的原有镜像数据的存在共同的根节点的情况下,计算所述原有镜像数据与所述镜像层数据的路径匹配度,得到匹配结果。
9.在一可实施方式中,所述层级结构处理具体为:将所述镜像层数据以无环图形式进行处理。
10.本发明另一方面提供一种容器引擎docker的资源调度装置,所述装置包括:层数据获取模块,用于获取集群镜像仓库中目标镜像的镜像层数据;层级处理模块,用于将所获取的镜像层数据进行层级结构处理;层数据匹配模块,用于将节点与所述目标镜像层数据按照所述层级结构进行镜像匹配,确定匹配结果;层数据选取模块,用于基于所述匹配结
果,确定所述目标镜像的节点。
11.本发明另一方面提供一种容器引擎docker的资源调度设备,所述设备包括存储器和处理器;所述存储器用于存储指令,所述指令用于控制所述处理器进行操作以执行时实现上述任一项所述的容器引擎docker的资源调度方法。
12.本发明另一方面提供一种计算机可读存储介质,所述存储介质包括一组计算机可执行指令,当所述指令被执行时用于执行上述任一项所述的容器引擎docker的资源调度方法。
13.在本发明实施例中,每当确定目标镜像的节点时,通过获取镜像仓库中目标镜像的镜像层数据,将镜像层数据按照层级结构与每个节点进行数据匹配,基于匹配结果选取目标镜像的节点,由于在确定目标镜像的节点之前进行镜像匹配处理,调度器会将目标镜像分配给最佳节点,解决了节点内的镜像因被改变导致调度时无法匹配最佳节点的问题。
附图说明
14.通过参考附图阅读下文的详细描述,本发明示例性实施方式的上述以及其他目的、特征和优点将变得易于理解。在附图中,以示例性而非限制性的方式示出了本发明的若干实施方式,其中:
15.在附图中,相同或对应的标号表示相同或对应的部分。
16.图1为本发明实施例一种容器引擎docker的资源调度方法的实现流程示意图;
17.图2为本发明实施例一种容器引擎docker的资源调度方法中主节点和从节点的结构示意图;
18.图3为本发明实施例一种容器引擎docker的资源调度方法中镜像的数据结构示意图;
19.图4为本发明实施例一种容器引擎docker的资源调度方法中预设信息库中镜像数据层级结构示意图;
20.图5为本发明实施例一种容器引擎docker的资源调度方法中节点与目标镜像的实现流程示意图;
21.图6为本发明实施例一种容器引擎docker的资源调度方法中节点中原有镜像与镜像层数据的匹配示意图;
22.图7为本发明实施例一种容器引擎docker的资源调度方法中整个调度过程示意图;
23.图8为本发明实施例一种容器引擎docker的资源调度装置的结构组成示意图。
具体实施方式
24.为使本发明的目的、特征、优点能够更加的明显和易懂,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而非全部实施例。基于本发明中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
25.结合图1所示,本发明一方面提供一种容器引擎docker的资源调度方法,方法包括:
26.步骤101,获取集群镜像仓库中目标镜像的镜像层数据;
27.步骤102,将所获取的镜像层数据进行层级结构处理;
28.步骤103,将节点与目标镜像层数据按照层级结构进行镜像匹配,确定匹配结果;
29.步骤104,基于匹配结果,确定目标镜像的节点。
30.本实施例中,在步骤101中,集群具体指的是docker集群,docker集群具体由一组运行着docker的机器组成,docker集群一般可通过集群管理工具docker swarm或者kubernetes等编排工具进行构建。结合图2所示,docker集群中,集群中的每台机器被称之为一个节点node,其中有一台机器是这个集群的管理者,称之为主节点master,其余的称之为从节点worker,命令都是由主节点master进行执行。
31.集群镜像仓库cluster image registry主要用于存储每台机器运行docker所需的镜像,可通过上传(推送)和下载(提取)镜像,该仓库可以是公共仓库如docker hub或者阿里云镜像仓库,也可以是针对docker项目所创建的私有容器镜像仓库。
32.目标镜像具体为当前docker项目所应用到的新镜像,可以一个或者多个,每个镜像均由多层数据组成,结合图3所示,例如包括最底层内核kernel的引导文件系统bootfs、第二层是centos镜像的文件系统rootfs,在往上依次可以是其他镜像如mysql(镜像1)、tomcat(镜像2)以及读写层(容器)等等,当然镜像结构不仅限于图3所示的结构,还可以是其他形式的结构。
33.结合图2所示,在执行步骤101时,可通过主节点master向集群镜像仓库获取目标镜像的镜像层数据,当然除了获取镜像层数据之外,还可以获取其他的镜像信息,如代码、运行时库、环境变量和配置文件等。
34.在步骤102中,在获取到目标镜像的镜像层数据之后,将所获取的镜像层数据进行层级结构处理,层级结构处理具体是基于目标镜像中镜像层数据按照原有的层结构进行层级排序,以生成无环图形式或者树状形式,即将目标镜像中的基础层(参考图3中的bootfs层)列于第一层,接着按照层结构逐级获取下一层的层数据并进行依次进行层级排列,排列后的其中一种无环图形式可参考图4所示,图4中包含六层,其中第四层包含两个分支,第六层包含三个分支,每一层包括层数据以及镜像数据。
35.在步骤103中,将节点与目标镜像层数据按照层级结构进行镜像匹配,具体为:
36.在镜像代理器image registry proxy进行层级结构处理之后,主节点master按照层级结构从第一层开始依次获取每一层的镜像层数据,将该镜像层数据与多个不同节点(即不同机器)进行数据匹配,数据匹配方式可以是将镜像层数据与各个节点内的原有镜像进行数据相似度匹配,得到一个匹配结果,同理按照上述逻辑,将每层镜像层数据匹配完成之后,得到目标镜像与多个节点的匹配结果。
37.在步骤104中,在得到每一层的匹配结果之后,可选取数据匹配度最高的节点作为目标镜像的最佳节点,也可以是在多个同时满足相似度预设值的节点中选取其中一个节点作为目标镜像的最佳节点。
38.由此,每当确定目标镜像的节点时,通过获取镜像仓库中目标镜像的镜像层数据,将镜像层数据按照层级结构与每个节点进行数据匹配,基于匹配结果选取目标镜像的节点,由于在确定目标镜像的节点之前进行镜像匹配处理,调度器会将目标镜像分配给最佳节点,解决了节点内的镜像因被改变导致调度时无法匹配最佳节点的问题。
39.在一可实施方式中,获取集群镜像仓库中目标镜像的镜像层数据,包括:
40.将集群镜像仓库中目标镜像的镜像层数据同步至预设信息库中;
41.从预设信息库中获取镜像层数据。
42.本实施例中,步骤101的具体过程为:
43.首先将通过docker命令从公开的集群镜像仓库中目标镜像的镜像层数据进行下载,并将镜像层数据库同步存到预设信息库中,其中预设信息库可以为本地数据库,也可以为云端数据库,优选为私有数据库,便于存储未对外公开的镜像数据,具备私密性。
44.当需要获取镜像层数据时,从预设信息库中获取目标镜像的镜像层数据。
45.进一步的,本实施例中的docker集群架构如图2所示,图2中包括一个主节点master以及3个从节点worker,当然从节点数量不仅限于3个,可以是其他数量,主节点master用于管理多个从节点worker,从节点worker中还包含由从节点中的原有镜像所生成的容器container。
46.主节点master中除了常规的集群镜像仓库cluster image registry、调度器scheduler之外,还设置镜像代理器image registry proxy和节点选择器node selector plugin。
47.镜像代理器image registry proxy分别与集群镜像仓库cluster image registry、各个从节点worker和节点选择器node selector plugin信息交互,用于执行步骤101中向集群镜像仓库获取目标镜像的镜像层数据,以及步骤102中对镜像层数据进行层级结构处理并存储至预设信息库meta store中,还用于获取节点worker信息并发送给节点选择器node selector plugin。
48.节点选择器node selector plugin与调度器scheduler信息交互,用于接收镜像代理器image registry proxy的从节点worker信息,并执行步骤103中对节点与目标镜像层数据按照层级结构进行镜像匹配,计算生成匹配结果,将匹配结果发送给调度器scheduler,通过调度器scheduler执行步骤104中确定目标镜像分配的最佳节点,将分配结果发送给镜像代理器image registry proxy,镜像代理器image registry proxy将目标镜像分配给对应的最佳从节点worker。
49.在一可实施方式中,当从外部拉取新镜像时,将新镜像的镜像层数据同步至预设信息库中。
50.本实施例中,在目标镜像的镜像层数据获取过程中,若预设信息库中不存在所需要的目标镜像,则需要通过docker拉取命令从公开的集群镜像仓库中获取到目标镜像。在获取到新的目标镜像之后,将对应的镜像层数据同步至预设信息库,以便于后续步骤中镜像层数据的匹配。
51.在一可实施方式中,在确定目标镜像的节点之后,方法还包括:
52.从预设信息库中获取所匹配的镜像层数据;
53.基于镜像层数据,从外部镜像仓库中获取对应的镜像。
54.本实施例中,在目标镜像确定对应的节点之后,可通过主节点master node向镜像代理器image registry proxy发送拉取镜像的请求,镜像代理器image registry proxy响应该请求并从预设信息库中获取该节点所对应的镜像层数据,根据所获取的镜像层数据向外部镜像仓库中获取满足该镜像层数据的镜像文件,并进行下载。
55.在一可实施方式中,将节点与目标镜像层数据按照层级结构进行镜像匹配,确定匹配结果,包括:
56.采用多线程机制将目标镜像的镜像层数据与多个不同节点按照所述层级结构同时进行镜像匹配,分别确定多个中间结果;
57.将多个中间结果按照预设排序方式进行排序处理,确定匹配结果。
58.本实施例中,多线程机制可以实现并行处理,避免了某项任务长时间占用cpu时间。结合图5所示,步骤103中匹配的具体过程为:
59.首先依次获取目标镜像的镜像层数据,启动机器的多线程机制,以将当前docker项目中所有节点内的所有原有镜像同时与同一镜像层数据进行镜像匹配,每个节点匹配结束之后,对每个节点中所有原有镜像进行排序,选取匹配度最高的原有镜像的匹配度作为该节点的中间结果。
60.将所有节点按照匹配度大小进行排序处理,其中选取匹配度最高的节点作为目标镜像的最佳节点。
61.在一可实施方式中,节点与镜像层数据的匹配过程为:
62.在镜像层数据与节点中的原有镜像数据不存在共同的根节点的情况下,节点与镜像层数据不匹配;
63.在镜像层数据与节点中的原有镜像数据的存在共同的根节点的情况下,计算原有镜像数据与镜像层数据的路径匹配度,得到匹配结果。
64.本实施例中,结合图5所示,首先判断节点中的各个原有镜像数据与镜像层数据是否存在共同的根节点,具体可参考图6所示,根节点具体为镜像层数据以及原有镜像数据的第一层,即判断原有镜像数据与镜像层数据的第一层是否一致,若两者的第一层不一致,则直接确定两者的匹配度为零,反之若两者的第一层一致,则继续进行后续步骤。
65.后续步骤具体为按照镜像的层级结构的路径依次向后迭代下一层的层数据,在迭代过程中,若两者的层数据仍一致则增加匹配度(例如匹配度值加1),直到出现数据不一致之后结束迭代,生成并返回总的路径匹配度。
66.参考图6所示,图6中首先进行第一层数据匹配,第一层的数据一致,则向后进行第二层的数据匹配,第二层的数据一致,依次类推,每匹配成功一次,则匹配度增加,当匹配第四层的image3和image4时,两者数据不一致,则结束迭代,若增加的匹配度值为1,则图6的匹配度为4,完成匹配过程。
67.结合图2和图7所示,整个调度方法为:
68.首先通过主节点master中的镜像代理器image registry proxy从集群镜像仓库cluster image registry同步获取目标镜像的镜像数据,包括镜像层数据、运行环境、代码等等数据,将其中的镜像层数据进行层级结构处理并存储至预设信息库meta store中。
69.接着通过主节点master中的调度器scheduler向节点选择器node selector plugin发送节点选取请求,节点选择器node selector plugin响应该请求,以向镜像代理器image registry proxy发送获取目标镜像适配节点的指令,镜像代理器image registry proxy执行向预设信息库meta store发送获取镜像信息的指令,预设信息库meta store执行该指令以反馈镜像数据给镜像代理器image registry proxy,镜像代理器image registry proxy接收到镜像数据并反馈给节点选择器node selector plugin。
70.节点选择器node selector plugin将所获取到的镜像层数据与多个不同节点进行匹配度计算,反馈多个匹配度分数给调度器scheduler。
71.调度器scheduler基于匹配度分数对各个节点分配容器container,各个节点分别基于各自的容器向镜像代理器image registry proxy发送拉取对应镜像层数据的请求,镜像代理器image registry proxy响应该请求,以从预设信息库meta store中获取到镜像层数据,并根据镜像层数据向集群镜像仓库cluster image registry拉取对应镜像,用于最终基于镜像生成对应的容器并分配给各个节点。
72.如图8所示,基于上述所提供的一种容器引擎docker的资源调度方法,本发明另一方面提供一种容器引擎docker的资源调度装置,装置包括:
73.层数据获取模块201,用于获取集群镜像仓库中目标镜像的镜像层数据;
74.层级处理模块202,用于将所获取的镜像层数据进行层级结构处理;
75.层数据匹配模块203,用于将节点与目标镜像层数据按照层级结构进行镜像匹配,确定匹配结果;
76.层数据选取模块204,用于基于匹配结果,确定目标镜像的节点。
77.本实施例中,在层数据获取模块201中,集群具体指的是docker集群,docker集群具体由一组运行着docker的机器组成,docker集群一般可通过集群管理工具docker swarm或者kubernetes等编排工具进行构建。结合图2所示,docker集群中,集群中的每台机器被称之为一个节点node,其中有一台机器是这个集群的管理者,称之为主节点master,其余的称之为从节点worker,命令都是由主节点master进行执行。
78.集群镜像仓库cluster image registry主要用于存储每台机器运行docker所需的镜像,可通过上传(推送)和下载(提取)镜像,该仓库可以是公共仓库如docker hub或者阿里云镜像仓库,也可以是针对docker项目所创建的私有容器镜像仓库。
79.目标镜像具体为当前docker项目所应用到的新镜像,可以一个或者多个,每个镜像均由多层数据组成,结合图3所示,例如包括最底层内核kernel的引导文件系统bootfs、第二层是centos镜像的文件系统rootfs,在往上依次可以是其他镜像如mysql(镜像1)、tomcat(镜像2)以及读写层(容器)等等。
80.结合图2所示,在执行步骤101时,可通过主节点master中的镜像代理器image registry proxy向集群镜像仓库获取目标镜像的镜像层数据,当然除了获取镜像层数据之外,还可以获取其他的镜像信息,如代码、运行时库、环境变量和配置文件等,其中镜像代理器image registry proxy为事先进行预设,用于记录所有的镜像信息。
81.在层级处理模块202中,在获取到目标镜像的镜像层数据之后,将所获取的镜像层数据进行层级结构处理,层级结构处理具体是基于目标镜像中镜像层数据按照原有的层结构进行层级排序,以生成无环图形式或者树状形式,即将目标镜像中的基础层(如图3中的bootfs层)列于第一层,接着按照层结构逐级获取下一层的层数据并进行依次进行层级排列,排列后的其中一种无环图形式可参考图4所示,图4中包含六层,其中第四层包含两个分支,第六层包含三个分支。
82.在层数据匹配模块203中,将节点与目标镜像层数据按照层级结构进行镜像匹配,具体为:
83.在镜像代理器image registry proxy进行层级结构处理之后,主节点master中的
节点选择器node selector plugin按照层级结构从第一层开始依次获取每一层的镜像层数据,将该镜像层数据与多个不同节点(即不同机器)进行数据匹配,数据匹配方式可以是将镜像层数据与各个节点内的原有镜像进行数据相似度匹配,得到一个匹配结果,同理按照上述逻辑,将每层镜像层数据匹配完成之后,得到目标镜像与多个节点的匹配结果。
84.在层数据选取模块204中,在得到每一层的匹配结果之后,可数据匹配度最高的节点作为目标镜像的最佳节点,也可以是在多个同时满足相似度预设值的节点中选取其中一个节点作为目标镜像的最佳节点。
85.由此,每当确定目标镜像的节点时,通过获取镜像仓库中目标镜像的镜像层数据,将镜像层数据按照层级结构与每个节点进行数据匹配,基于匹配结果选取目标镜像的节点,由于在确定目标镜像的节点之前进行镜像匹配处理,调度器会将目标镜像分配给最佳节点,解决了节点内的镜像因被改变导致调度时无法匹配最佳节点的问题。
86.基于上述所提供的一种容器引擎docker的资源调度方法,本发明另一方面提供一种容器引擎docker的资源调度设备,设备包括存储器和处理器;
87.存储器用于存储指令,指令用于控制处理器进行操作以执行时实现任一项的容器引擎docker的资源调度方法。
88.在本发明实施例中计算机可读存储介质包括一组计算机可执行指令,当指令被执行时用于获取集群镜像仓库中目标镜像的镜像层数据;将所获取的镜像层数据进行层级结构处理;将节点与目标镜像层数据按照层级结构进行镜像匹配,确定匹配结果;基于匹配结果,确定目标镜像的节点。
89.基于上述所提供的一种容器引擎docker的资源调度方法,本发明另一方面提供一种计算机可读存储介质,存储介质包括一组计算机可执行指令,当指令被执行时用于执行上述任一项的容器引擎docker的资源调度方法。
90.在本发明实施例中计算机可读存储介质包括一组计算机可执行指令,当指令被执行时用于获取集群镜像仓库中目标镜像的镜像层数据;将所获取的镜像层数据进行层级结构处理;将节点与目标镜像层数据按照层级结构进行镜像匹配,确定匹配结果;基于匹配结果,确定目标镜像的节点。
91.由此,每当确定目标镜像的节点时,通过获取镜像仓库中目标镜像的镜像层数据,将镜像层数据按照层级结构与每个节点进行数据匹配,基于匹配结果选取目标镜像的节点,由于在确定目标镜像的节点之前进行镜像匹配处理,调度器会将目标镜像分配给最佳节点,解决了节点内的镜像因被改变导致调度时无法匹配最佳节点的问题。
92.在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
93.此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或隐含地包括至少一个该特征。在本发明的描述中,“多个”的含义是两个或两个以上,除非另有
明确具体的限定。
94.以上,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献

  • 日榜
  • 周榜
  • 月榜