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

容器资源管控的方法、装置、电子设备及存储介质与流程

2022-04-30 09:18:13 来源:中国专利 TAG:


1.本发明涉及计算机技术领域,具体涉及容器资源管控的方法、装置、电子设备及存储介质。


背景技术:

2.容器技术在双系统方案、安卓兼容方案等方面发挥着重要的作用。由于放入容器的系统或者系统框架大都采取整体搬移以及尽量少的修改的原则,使得利用容器后容器内系统的移植变得简单。但是,大多放入容器的系统或者框架原本都是独自拥有整个硬件资源的独立系统,如安卓系统,于是,容器内的系统就会根据独占的思路来使用整个硬件资源,而不关心容器外的资源情况,尤其当运行的容器是个超级权限容器的情况下,对整个容器的资源控制就是个棘手的问题。
3.控制容器资源的常规做法就是利用cgroup机制对容器内进程群进行整体的资源控制。但前提是容器不能是具备超级权限的容器,因为,超级权限容器本身就可以操作cgroup机制,使得自身的资源可以随时扩大,于是,容器的管理者对容器施加的资源管控就形同虚设。
4.综上,目前亟需一种容器资源管控的方法,用于解决上述现有技术存在的问题。


技术实现要素:

5.由于现有方法存在上述问题,本发明提出容器资源管控的方法、装置、电子设备及存储介质。
6.第一方面,本发明提供了一种容器资源管控的方法,包括:
7.获取目标进程组;所述目标进程组包含所述目标进程组的标识;
8.通过资源控制组件对所述目标进程组进行资源限制;
9.通过调用进程控制接口为所述目标进程组设置安全计算环境;
10.通过所述目标进程组启动容器;
11.根据所述安全计算环境对所述容器进行资源管控。
12.进一步地,所述通过cgroup机制对所述目标进程组进行资源限制,包括:
13.在资源控制组件的接口封装文件系统的层级树上创建新层级;
14.在所述新层级中设置所述资源限制;
15.将所述目标进程组的标识放入所述新层级。
16.进一步地,所述安全计算环境采用过滤模式。
17.进一步地,所述容器为超级权限容器。
18.进一步地,所述通过调用进程控制接口为所述目标进程组设置安全计算环境,包括:
19.根据预设的过滤类型确定过滤进程;
20.根据所述过滤进程设置安全计算环境。
21.进一步地,所述预设的过滤类型为cgroupfs。
22.第二方面,本发明提供了一种容器资源管控的装置,包括:
23.获取模块,用于获取目标进程组;所述目标进程组包含所述目标进程组的标识;
24.处理模块,用于通过资源控制组件对所述目标进程组进行资源限制;通过调用进程控制接口为所述目标进程组设置安全计算环境;通过所述目标进程组启动容器;根据所述安全计算环境对所述容器进行资源管控。
25.进一步地,所述处理模块具体用于:
26.在资源控制组件的接口封装文件系统的层级树上创建新层级;
27.在所述新层级中设置所述资源限制;
28.将所述目标进程组的标识放入所述新层级。
29.进一步地,所述处理模块具体用于:
30.所述安全计算环境采用过滤模式。
31.进一步地,所述处理模块具体用于:
32.所述容器为超级权限容器。
33.进一步地,所述处理模块具体用于:
34.根据预设的过滤类型确定过滤进程;
35.根据所述过滤进程设置安全计算环境。
36.进一步地,所述处理模块具体用于:
37.所述预设的过滤类型为cgroupfs。
38.第三方面,本发明还提供了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如第一方面所述的容器资源管控的方法。
39.第四方面,本发明还提供了一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如第一方面所述的容器资源管控的方法。
40.由上述技术方案可知,本发明提供的容器资源管控的方法、装置、电子设备及存储介质,通过令创建出的容器在安全计算环境中运行,使得容器无法突破安全计算的环境边界,从而无法随意扩大自身资源。
附图说明
41.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些图获得其他的附图。
42.图1为本发明提供的容器资源管控的方法的系统框架;
43.图2为本发明提供的容器资源管控的方法的流程示意图;
44.图3为本发明提供的容器资源管控的装置的结构示意图;
45.图4为本发明提供的电子设备的结构示意图。
具体实施方式
46.下面结合附图,对本发明的具体实施方式作进一步描述。以下实施例仅用于更加清楚地说明本发明的技术方案,而不能以此来限制本发明的保护范围。
47.本发明实施例提供的容器资源管控的方法,可以适用于如图1所示的系统架构中,该系统架构包括服务器100、容器200。
48.具体的,服务器100用于获取目标进程组。
49.需要说明的是,目标进程组包含目标进程组的标识。
50.服务器100用于通过资源控制组件对目标进程组进行资源限制;
51.通过调用进程控制接口为目标进程组设置安全计算环境;
52.通过目标进程组启动容器200;
53.根据安全计算环境对容器200进行资源管控。
54.需要说明的是,图1仅是本发明实施例系统架构的一种示例,本发明对此不做具体限定。
55.基于上述所示意的系统架构,图2为本发明实施例提供的一种容器资源管控的方法所对应的流程示意图,如图2所示,该方法包括:
56.步骤201,获取目标进程组。
57.需要说明的是,目标进程组包含目标进程组的标识。
58.步骤202,通过资源控制组件对目标进程组进行资源限制。
59.在一种可能的实施方式中,资源控制组件为cgroup机制。
60.本发明实施例对cgroup机制介绍如下:
61.cgroup:控制组。
62.需要说明的是,它提供了一套机制用于控制一组特定进程对资源的使用。cgroup绑定一个进程组到一个或多个子系统上。
63.subsystem:子系统,一个通过cgroup提供的工具和接口来管理进程组的模块。
64.具体的,一个子系统就是一个典型的“资源控制器”,用来调度资源或者控制资源使用的上限。其实每种资源就是一个子系统。子系统可以是以进程为单位的任何东西,比如虚拟化子系统、内存子系统。
65.hierarchy:层级树,多个cgroup的集合,这些集合构成的树叫hierarchy。
66.需要说明的是,可以认为这是一个资源树,附着在这上面的进程可以使用的资源上限必须受树上节点cgroup的控制。hierarchy上的层次关系通过cgroupfs虚拟文件系统显示。系统允许多个hierarchy同时存在,每个hierachy包含系统中的部分或者全部进程集合。
67.cgroupfs:是用户管理操纵cgroup的主要接口。
68.最初情况下,系统内的所有进程形成一个进程组即根进程组,根据系统对资源的需求,这个根进程组将被进一步细分为子进程组,子进程组内的进程是根进程组内进程的子集。而这些子进程组很有可能继续被进一步细分,最终,系统内所有的进程组形成一颗具有层次等级关系的层级树。
69.本发明实施例中,通过在cgroupfs文件系统中创建目录,实现cgroup的创建。
70.需要说明的是,资源控制组件还可以为deployment、satefulset等,本发明实施例
对此不做具体限定。
71.进一步地,通过向目录下的属性文件写入内容,设置cgroup对资源的控制。
72.具体的,在资源控制组件的接口封装文件系统的层级树上创建新层级;
73.在一种可能的实施方式中,在cgroupfs文件系统的层级树上创建新层级。
74.在新层级中设置资源限制;
75.将目标进程组的标识放入新层级。
76.本发明实施例中,向task属性文件写入目标进程组的标识。
77.举例来说,向task属性文件写入目标进程组的id,将目标进程组绑定到新层级的cgroup。
78.需要说明的是,也可以列出cgroup包含的目标进程组pid,本发明实施例对此不做具体限定。
79.进一步地,从目标进程组外部,利用cgroup机制为目标进程组创建cgroupfs层级,将id放入层级中,并设置资源限制,例如,为目标进程组设置内存限制命令如下:
80.#mount

t cgroup

o memory none/sys/fs/cgroup/memory;
81.#mkdir/sys/fs/cgroup/memory/container_android;
82.上述命令行作用为创建层级。
83.#echo10g》/sys/fs/cgroup/memory/container_android/memory.max_usage_in_bytes;
84.上述命令作用为内存限制。
85.#echoid》/sys/fs/cgroup/memory/container_android/tasks;
86.上述命令作用为将目标进程组pid放入层级中
87.由以上步骤,就完成了对目标进程组及其后代的内存使用的限制。
88.需要说明的是,资源控制组件的使用要点在于创建资源控制组件的接口封装文件系统,一旦有机会创建该文件系统,就可以通过读写该文件系统中设置的层级资源限制,从而随意扩大进程组的资源限制,更有甚者可以删除层级限制。这些操作仅限于超级权限才能做到。
89.步骤203,通过调用进程控制接口为目标进程组设置安全计算环境;
90.需要说明的是,设置安全计算环境即为目标进程组添加安全计算限制,目标进程组就是被设置了系统调用的限制。
91.进一步地,目标进程组运行后续的一个或者多个任务,任务包括启动容器,目标进程组的所有后代进程或者任务都不能脱离最初设置的安全计算环境的限制。
92.本发明实施例中,目标进程组通过prctl()系统调用设置安全计算环境。
93.步骤204,通过目标进程组启动容器。
94.在一种可能的实施方式中,容器为超级权限容器。
95.上述方案,通过目标进程组启动容器,即使是超级权限容器,也无法突破创建的安全计算环境,从而无法随意控制改变容器本身的资源的限制。
96.步骤205,根据安全计算环境对容器进行资源管控。
97.上述方案,通过令创建出的容器在安全计算环境中运行,使得容器无法突破安全计算的环境边界,从而无法随意扩大自身资源。
98.进一步地,本发明实施例在步骤203中,安全计算环境采用过滤模式。
99.本发明实施例对安全计算介绍如下:
100.安全计算原本的初衷是对不信任的进程设置安全运行的环境,该环境下运行的进程只能使用有限的系统调用,比如读read、写write、sigreturn等,其他所有的系统调用都被禁止,一旦在安全计算环境中运行的进程触碰了禁止的系统调用,进程就会收到kill信号而被终止。
101.上述就是最早期的安全计算机制,其意在令程序只是单纯的做本地计算,只有有限的输入输出。后期的安全计算机制在原来的基础上扩展了灵活性,不仅仅限于以上几种系统调用可以使用,而是通过制定过滤程序的方式,过滤部分系统调用的同时放行部分系统调用。
102.需要说明的是,安全计算的早期版本称为严格模式,可扩展的版本称为过滤模式。安全计算环境特点在于即使环境中运行的是超级权限的程序,也不能打破预先设置好的安全计算环境,一旦违反就会被内核阻止。
103.进一步地,由于目标进程组要启动功能丰富的容器系统,所以,所设置的安全计算环境是过滤模式而非严格模式。
104.进一步地,根据预设的过滤类型确定过滤进程;
105.根据过滤进程设置安全计算环境。
106.具体的,设置的语句形式如下:
107.prctl(pr_set_seccomp,seccomp_mode_filter,filter_prog);
108.需要说明的是,pr_set_seccomp和seccomp_mode_filter两个参数都是有系统内核预先定义,seccomp_mode_filter表示安全计算环境采用过滤模式,filter_prog为本发明实施例预设的过滤进程,该过滤进程会在prctl()运行成功之后安装到系统内核中,作用于目标进程组以后所有的系统调用,其功能就是过滤掉禁止的系统调用方式。
109.本发明实施例预设的过滤类型为cgroupfs,filter_prog就是过滤掉类型为cgroupfs的mount()系统调用的运行,其他的系统调用放行。由此,prctl()调用成功后,目标进程组及其后代程序都无法挂载类型为cgroupfs的文件系统。
110.上述方案,通过预设的过滤类型为cgroupfs,由此关闭了cgroup机制的接口,通过安全计算机制限制了超级容器不能使用cgroupfs接口,从而限制了超级容器的资源占用,使得容器无法通过cgroupfs随意控制资源的限制。
111.基于同一发明构思,图3示例性的示出了本发明实施例提供的一种容器资源管控的装置,该装置可以为一种容器资源管控的方法的流程。
112.所述装置,包括:
113.获取模块301,用于获取目标进程组;所述目标进程组包含所述目标进程组的标识;
114.处理模块302,用于通过资源控制组件对所述目标进程组进行资源限制;通过调用进程控制接口为所述目标进程组设置安全计算环境;通过所述目标进程组启动容器;根据所述安全计算环境对所述容器进行资源管控。
115.进一步地,所述处理模块302具体用于:
116.在资源控制组件的接口封装文件系统的层级树上创建新层级;
117.在所述新层级中设置所述资源限制;
118.将所述目标进程组的标识放入所述新层级。
119.进一步地,所述处理模块302具体用于:
120.所述安全计算环境采用过滤模式。
121.进一步地,所述处理模块302具体用于:
122.所述容器为超级权限容器。
123.进一步地,所述处理模块302具体用于:
124.根据预设的过滤类型确定过滤进程;
125.根据所述过滤进程设置安全计算环境。
126.进一步地,所述处理模块302具体用于:
127.所述预设的过滤类型为cgroupfs。
128.基于相同的发明构思,本发明又一实施例提供了一种电子设备,参见图4,所述电子设备具体包括如下内容:处理器401、存储器402、通信接口403和通信总线404;
129.其中,所述处理器401、存储器402、通信接口403通过所述通信总线404完成相互间的通信;所述通信接口403用于实现各设备之间的信息传输;
130.所述处理器401用于调用所述存储器402中的计算机程序,所述处理器执行所述计算机程序时实现上述容器资源管控的方法的全部步骤,例如,所述处理器执行所述计算机程序时实现下述步骤:获取目标进程组;所述目标进程组包含所述目标进程组的标识;通过资源控制组件对所述目标进程组进行资源限制;通过调用进程控制接口为所述目标进程组设置安全计算环境;通过所述目标进程组启动容器;根据所述安全计算环境对所述容器进行资源管控。
131.基于相同的发明构思,本发明又一实施例提供了一种非暂态计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器执行时实现上述容器资源管控的方法的全部步骤,例如,所述处理器执行所述计算机程序时实现下述步骤:获取目标进程组;所述目标进程组包含所述目标进程组的标识;通过资源控制组件对所述目标进程组进行资源限制;通过调用进程控制接口为所述目标进程组设置安全计算环境;通过所述目标进程组启动容器;根据所述安全计算环境对所述容器进行资源管控。
132.此外,上述的存储器中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,容器资源管控的装置,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-only memory)、随机存取存储器(ram,random access memory)、磁碟或者光盘等各种可以存储程序代码的介质。
133.以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本发明实施例方案的目的。本领域普通技术人员在不付出创
造性的劳动的情况下,即可以理解并实施。
134.通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,容器资源管控的装置,或者网络设备等)执行各个实施例或者实施例的某些部分所述的容器资源管控的方法。
135.此外,在本发明中,诸如“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。在本发明的描述中,“多个”的含义是至少两个,例如两个,三个等,除非另有明确具体的限定。
136.此外,在本发明中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
137.此外,在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
138.最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
再多了解一些

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

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

相关文献