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

一种混合CPU构架大规模集群容器的启动提速方法及系统与流程

2022-04-30 16:21:09 来源:中国专利 TAG:

一种混合cpu构架大规模集群容器的启动提速方法及系统
技术领域
1.本发明公开一种混合cpu构架大规模集群容器的启动提速方法及系统,涉及集群容器技术领域。


背景技术:

2.随着容器云平台大规模的运用,传统应用都启动了上云操作,纷纷使用容器技术提供应用微服务。当前大规模集群存在多个特点:1.集群种类不同:包含了各种异构物理设备和软件设备,不同的操作系统,如ubuntu、centos、uos、国产麒麟和windows等以及不同的cpu架构,包括x86、arm、mips、ppc和s390等;2.集群规模大小不一:节点数量可以上千甚至上万,并且随着各种应用需求和场景,集群规模总体呈现持续增长。
3.针对上述特点,容器云平台需要提供一套高效的容器管理工具管理大规模集群,适配不同操作系统、不同cpu架构环境,同时支持构建多cpu架构的业务镜像。
4.在新的硬件平台构建多cpu架构的业务镜像,可能会遇到目的平台上不允许或不能够安装所需编译器、目的平台资源贫乏、所需编译器无法运行甚至目的平台还未建立的情况,使用交叉编译技术有利于解决这些问题。关于交叉编译技术是指从源代码到能直接被计算机或虚拟机执行的目标代码的翻译过程,编译器可以生成在指定计算机架构和操作系统环境下运行的目标代码。
5.为了满足多种应用以及需求,就目前常规的容器启动方法而言,大规模集群中容器运行时启动容器的时间约为10秒,若应用容器为单副本且应用容器发生漂移时,还可能造成服务中断时间较长。针对特定的超算或者函数计算等场景,这些场景对容器启动速度要求较高,传统的容器启动速度无法满足大规模集群的业务需求。因此,现发明一种混合cpu构架大规模集群容器的启动提速方法及系统,以解决上述问题。


技术实现要素:

6.本发明针对现有技术的问题,提供一种混合cpu构架大规模集群容器的启动提速方法及系统,所采用的技术方案为:一种混合cpu构架大规模集群容器的启动提速方法,所述的方法具体步骤如下:
7.s1根据节点的cpu架构,构建对应架构的镜像;
8.s2将镜像推送到镜像仓库;
9.s3 kubelet在节点上发起拉取镜像和创建容器组命令到容器运行时;
10.s4容器运行时从镜像仓库拉取镜像;
11.s5容器运行时创建沙箱和容器组。
12.所述s3 kubelet在节点上发起拉取镜像和创建容器组命令到容器运行时,基于镜像分层技术的分布式下载网络,具体步骤如下:
13.s301将文件分发协议嵌入到docker仓库项目中;
14.s302镜像仓库按照镜像的分层分割成多个block种子数据块,依次请求并行地发
送到多个节点。
15.所述s4容器运行时从镜像仓库拉取镜像的具体步骤如下:
16.s401通过每个节点拉取部分镜像层文件;
17.s402在镜像拉取时,节点间对外分享已下载的数据块,镜像仓库记录下载情况用于指引后续下载请求;
18.s403根据镜像的拉取机制,将镜像文件组成完整的镜像用于创建容器。
19.所述s5容器运行时创建沙箱和容器组的具体步骤如下:
20.s501在每个节点上启用容器运行时的插件,并作为守护进程运行;
21.s502转换镜像时,将所有层文件设置为可访问,并按照访问顺序对存档条目进行排序,在末尾放置一个地标文件;
22.s503根据镜像名称和tag解析得到镜像manifest的digest值;
23.s504根据镜像manifest的digest值,从仓库中下载manifest,保存在content store中;
24.s505根据manifest的内容获取镜像config的digest值,从镜像仓库中下载config,保存在content store中;
25.s506容器运行时生成rootfs目录为当前层准备文件系统,并从镜像仓库挂载到本地,再执行文件系统中的逻辑。
26.一种混合cpu构架大规模集群容器的启动提速系统,所述的系统具体包括镜像构件模块、镜像推送模块、拉取创建模块、镜像拉取模块和运行创建模块:
27.镜像构件模块:根据节点的cpu架构,构建对应架构的镜像;
28.镜像推送模块:将镜像推送到镜像仓库;
29.拉取创建模块:kubelet在节点上发起拉取镜像和创建容器组命令到容器运行时;
30.镜像拉取模块:容器运行时从镜像仓库拉取镜像;
31.运行创建模块:容器运行时创建沙箱和容器组。
32.所述拉取创建模块kubelet在节点上发起拉取镜像和创建容器组命令到容器运行时,基于镜像分层技术的分布式下载网络,拉取创建模块具体包括文件嵌入模块和数据分割模块:
33.文件嵌入模块:将文件分发协议嵌入到docker仓库项目中;
34.数据分割模块:镜像仓库按照镜像的分层分割成多个block种子数据块,依次请求并行地发送到多个节点。
35.所述镜像拉取模块具体包括文件拉取模块、数据指引模块和镜像组成模块:
36.文件拉取模块:通过每个节点拉取部分镜像层文件;
37.数据指引模块:在镜像拉取时,节点间对外分享已下载的数据块,镜像仓库记录下载情况用于指引后续下载请求;
38.镜像组成模块:根据镜像的拉取机制,将镜像文件组成完整的镜像用于创建容器。
39.所述运行创建模块具体包括插件启用模块、文件访问模块、镜像处理模块、第一镜像运算模块、第二镜像运算模块和容器处理模块:
40.插件启用模块:在每个节点上启用容器运行时的插件,并作为守护进程运行;
41.文件访问模块:转换镜像时,将所有层文件设置为可访问,并按照访问顺序对存档
条目进行排序,在末尾放置一个地标文件;
42.镜像处理模块:根据镜像名称和tag解析得到镜像manifest的digest值;
43.第一镜像运算模块:根据镜像manifest的digest值,从仓库中下载manifest,保存在content store中;
44.第二镜像运算模块:根据manifest的内容获取镜像config的digest值,从镜像仓库中下载config,保存在content store中;
45.容器处理模块:容器运行时生成rootfs目录为当前层准备文件系统,并从镜像仓库挂载到本地,再执行文件系统中的逻辑。
46.本发明的有益效果为:,本发明方法能够提升大规模集群场景中容器的启动速度,并将其复杂度降至o(1);通过使用本发明方法,可以便捷地管理上千节点容器的构建和创建,支持基于混合操作系统运行容器,并且提供了一套适配混合cpu架构的容器管理工具,提升了容器的启动效率,满足了函数计算、超算等对容器启动性能要求极高的场景需求。
附图说明
47.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
48.图1是本发明方法实施例实现流程图;图2是本发明实施例的容器云分布式下载拉取镜像示意图;图3是本发明实施例的容器启动镜像加载过程示意图;
49.图4是本发明实施例的容器创建时间优化前后对比图。
具体实施方式
50.下面结合附图和具体实施例对本发明作进一步说明,以使本领域的技术人员可以更好地理解本发明并能予以实施,但所举实施例不作为对本发明的限定;
51.实施例一:
52.一种混合cpu构架大规模集群容器的启动提速方法,所述的方法具体步骤如下:
53.s1根据节点的cpu架构,构建对应架构的镜像;
54.s2将镜像推送到镜像仓库;
55.s3 kubelet在节点上发起拉取镜像和创建容器组命令到容器运行时;
56.s4容器运行时从镜像仓库拉取镜像;
57.s5容器运行时创建沙箱和容器组;
58.传统的容器管理工具无法满足大规模集群的使用需求和性能要求,本发明中使用的容器运行时兼顾易用性和效率,提供了大规模集群下的镜像构建、推送以及运行时创建等功能,实现过程如图1所示,其中镜像的构建使用了混合cpu架构的交叉编译技术,该技术基于c、go等语言,编译出多cpu架构的二进制文件,制作为相应cpu架构的容器镜像,使用镜像仓库的混合cpu架构元数据,最终保存为不同架构的镜像文件;在容器产品发出拉取镜像指令后,将cpu架构信息发送给镜像仓库,镜像仓库返回对应cpu架构的镜像;
59.进一步的,所述s3 kubelet在节点上发起拉取镜像和创建容器组命令到容器运行
时,基于镜像分层技术的分布式下载网络,具体步骤如下:
60.s301将文件分发协议嵌入到docker仓库项目中;
61.s302镜像仓库按照镜像的分层分割成多个block种子数据块,依次请求并行地发送到多个节点;
62.为了提升大规模集群中镜像的拉取速度,该发明使用了基于镜像分层技术的分布式下载网络,功能示意图如图2所示;
63.针对docker镜像分层的特点以及镜像层大小分布,将文件分发协议嵌入到docker仓库项目中,允许不同的host之间共享镜像,集群中的节点形成分布式下载网络;
64.镜像仓库按照镜像的分层分割成多个block种子数据块,一旦一个数据块被请求,那么接下来相同分片的子分片则会被依次请求,将一个分片的请求并行地发送到多个节点;
65.进一步的,所述s4容器运行时从镜像仓库拉取镜像的具体步骤如下:
66.s401通过每个节点拉取部分镜像层文件;
67.s402在镜像拉取时,节点间对外分享已下载的数据块,镜像仓库记录下载情况用于指引后续下载请求;
68.s403根据镜像的拉取机制,将镜像文件组成完整的镜像用于创建容器;
69.每个节点只负责拉取部分镜像层文件,有效地降低镜像仓库的压力,同时也提升了镜像下载速度,保证集群拉取镜像时间约等于单个节点拉取镜像时间;镜像拉取过程中,节点间对外共享已下载的数据块,镜像仓库记录下载情况,用于指引后续下载请求;当一个节点拥有了镜像后,就可以作为种子节点为其他节点分发镜像;在容器创建过程中,拉取镜像的策略可以配置为always、never和ifnotpresent;当拉取策略为ifnotpresent时,如果节点上已存在容器镜像,则跳过镜像拉取环节,加速容器的启动;根据镜像的拉取机制,最终将镜像文件组成完整的镜像用于创建容器;以上流程保证了大规模集群中拉取镜像的时间复杂度为o(1);
70.再进一步的,所述s5容器运行时创建沙箱和容器组的具体步骤如下:
71.s501在每个节点上启用容器运行时的插件,并作为守护进程运行;
72.s502转换镜像时,将所有层文件设置为可访问,并按照访问顺序对存档条目进行排序,在末尾放置一个地标文件;
73.s503根据镜像名称和tag解析得到镜像manifest的digest值;
74.s504根据镜像manifest的digest值,从仓库中下载manifest,保存在content store中;
75.s505根据manifest的内容获取镜像config的digest值,从镜像仓库中下载config,保存在content store中;
76.s506容器运行时生成rootfs目录为当前层准备文件系统,并从镜像仓库挂载到本地,再执行文件系统中的逻辑;
77.为了提升容器的启动速度,本发明实现了容器启动镜像按需下载的功能,具体实现如图3所示:
78.在每个节点上启用容器运行时的插件,并作为守护进程运行;
79.转换镜像时,将所有层文件设置为可访问,并且按照访问顺序对存档条目进行排
序,并在末尾放置一个地标文件;在运行容器前,通过单个http范围请求预取和预缓存此范围,这有利于提升工作负载的缓存命中率,减轻容器运行时的开销;
80.根据镜像名称和tag解析得到镜像manifest的digest值;
81.根据镜像manifest的digest值,从仓库中下载manifest,保存在content store中;
82.根据manifest的内容获取镜像config的digest值,从镜像仓库中下载config,保存在content store中;
83.容器运行时生成rootfs目录为当前层准备文件系统,并从镜像仓库挂载到本地,再执行文件系统中的逻辑;
84.当有拉取镜像的操作发生时,解析镜像中的每一层,镜像层采用一种高效的压缩文件格式,用于有选择地查找存档和提取文件条目,而无需扫描整个blob;该文件格式通过地标文件将镜像层中的文件分为运行时最有可能用到的和可能用不到的文件;这样后台任务会优先缓存容器运行时需要的文件,增加本地缓存的命中率,从而加速容器的启动速度;
85.所有镜像层解析完后会保存镜像的元数据;容器启动时,根据容器元数据挂载远端镜像层文件到节点,后续层在容器使用时,按需加载,无需等到镜像全部下载完再启动,大大提升了容器启动速度;
86.本发明方法在单节点和大规模集群的对比测试结果如图4所示,容器启动过程,主要耗时在于镜像的拉取过程;其中单节点拉取镜像需要5s,大规模集群(1000节点)在未优化情况下拉取需要32秒,结合分布式下载网络后1000节点的大规模集群拉取镜像则仅需6秒;在大规模集群上,优化后拉取镜像速度基本和单节点保持一致,本发明大大地提升了大规模集群场景中容器的启动速度,并将其复杂度降至o(1);通过使用本发明方法,可以便捷地管理上千节点容器的构建和创建,支持基于混合操作系统运行容器,并且提供了一套适配混合cpu架构的容器管理工具,提升了容器的启动效率,满足了函数计算、超算等对容器启动性能要求极高的场景需求。
87.实施例二:
88.一种混合cpu构架大规模集群容器的启动提速系统,所述的系统具体包括镜像构件模块、镜像推送模块、拉取创建模块、镜像拉取模块和运行创建模块:
89.镜像构件模块:根据节点的cpu架构,构建对应架构的镜像;
90.镜像推送模块:将镜像推送到镜像仓库;
91.拉取创建模块:kubelet在节点上发起拉取镜像和创建容器组命令到容器运行时;
92.镜像拉取模块:容器运行时从镜像仓库拉取镜像;
93.运行创建模块:容器运行时创建沙箱和容器组;
94.进一步的,所述拉取创建模块kubelet在节点上发起拉取镜像和创建容器组命令到容器运行时,基于镜像分层技术的分布式下载网络,拉取创建模块具体包括文件嵌入模块和数据分割模块:
95.文件嵌入模块:将文件分发协议嵌入到docker仓库项目中;
96.数据分割模块:镜像仓库按照镜像的分层分割成多个block种子数据块,依次请求并行地发送到多个节点;
97.进一步的,所述镜像拉取模块具体包括文件拉取模块、数据指引模块和镜像组成
模块:
98.文件拉取模块:通过每个节点拉取部分镜像层文件;
99.数据指引模块:在镜像拉取时,节点间对外分享已下载的数据块,镜像仓库记录下载情况用于指引后续下载请求;
100.镜像组成模块:根据镜像的拉取机制,将镜像文件组成完整的镜像用于创建容器;
101.再进一步的,所述运行创建模块具体包括插件启用模块、文件访问模块、镜像处理模块、第一镜像运算模块、第二镜像运算模块和容器处理模块:
102.插件启用模块:在每个节点上启用容器运行时的插件,并作为守护进程运行;
103.文件访问模块:转换镜像时,将所有层文件设置为可访问,并按照访问顺序对存档条目进行排序,在末尾放置一个地标文件;
104.镜像处理模块:根据镜像名称和tag解析得到镜像manifest的digest值;
105.第一镜像运算模块:根据镜像manifest的digest值,从仓库中下载manifest,保存在content store中;
106.第二镜像运算模块:根据manifest的内容获取镜像config的digest值,从镜像仓库中下载config,保存在content store中;
107.容器处理模块:容器运行时生成rootfs目录为当前层准备文件系统,并从镜像仓库挂载到本地,再执行文件系统中的逻辑。
108.最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
再多了解一些

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

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

相关文献