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

创建容器的方法、装置、电子设备及介质与流程

2021-11-05 20:42:00 来源:中国专利 TAG:


1.本公开涉及计算机技术领域,尤其涉及一种创建容器的方法、装置、电子设备及介质。


背景技术:

2.随着云计算和云存储服务的发展,更多企业了解到采用混合云(hybrid cloud)和多云模式(multi

cloud)的好处,混合云指云计算在多个不同的传输层中的垂直使用,多云在本质上是在单个传输层中使用多个云服务,但是确保软件在不同环境之间迁移时能够稳定运行则成为了一大挑战。容器技术是通过将应用程序机器所有组件打包成为单个可便携的包来解决前述难题。应用容器化是一个分布式的应用程序部署模式,多个隔离环境(即所谓的容器)可共享同一个操作系统内核而不是在单个控制主机上运行。与传统的虚拟化技术相比,容器化可实现内存、cpu和存储等资源的更高效。
3.在实现本公开构思的过程中,发明人发现相关技术中至少存在如下技术问题:在基于容器编排工具进行容器的创建时,容器编排工具向应用容器引擎(简称为容器引擎)传递的参数具有局限性,只能传递并配置容器编排工具和容器引擎共同支持的一些容器启动参数,针对一些用户需要个性化设置的容器启动参数,无法通过容器编排工具进行配置。


技术实现要素:

4.为了解决上述技术问题或者至少部分地解决上述技术问题,本公开的实施例提供了一种创建容器的方法、装置、电子设备及介质。
5.第一方面,本公开的实施例提供了一种创建容器的方法。上述方法包括:获取注解中携带的配置信息,上述配置信息包括用户配置的自定义启动参数的信息;解析上述配置信息,得到上述自定义启动参数的解析信息;以及根据启动参数信息来创建容器,上述启动参数信息包括上述解析信息。
6.根据本公开的实施例,上述获取注解中携带的配置信息,包括:接收用户在容器编排工具的注解中配置的自定义启动参数的信息;以及将配置好的注解以标签形式传入至上述容器编排工具所调用的容器引擎中,以在上述容器引擎中得到上述注解中携带的配置信息。
7.根据本公开的实施例,上述解析上述配置信息,得到上述自定义启动参数的解析信息,包括:识别上述配置信息中的前缀;基于上述前缀,定位至上述前缀后的键

值对;以及解析上述键

值对,得到自定义启动参数及对应参数值。
8.根据本公开的实施例,上述方法还包括:将上述自定义启动参数的解析信息添加至容器初始配置文件中,上述容器初始配置文件中包含有预定义启动参数信息;其中,上述根据启动参数信息来创建容器包括:根据上述自定义启动参数的解析信息和上述预定义启动参数信息来创建容器。
9.根据本公开的实施例,上述方法还包括:接收具有配置权限的用户在上述容器引
擎中设置的预定义启动参数信息;以及根据上述预定义启动参数信息来生成容器初始配置文件。
10.根据本公开的实施例,上述方法还包括:更新上述预定义启动参数信息;其中,上述根据上述预定义启动参数信息来生成容器初始配置文件,包括:根据更新后的预定义启动参数信息来生成容器初始配置文件。
11.根据本公开的实施例,上述自定义启动参数包括以下参数至少之一:容器的共享内存的大小、保留容器的监听端口、控制对特定设备的读写速度参数、控制对特定设备的访问权限、容器内的进程数量限制、容器中的内核参数、容器的虚拟内存的大小。
12.第二方面,本公开的实施例提供了一种用于创建容器的装置。上述装置包括:信息获取模块、解析模块和容器创建模块。上述信息获取模块用于获取注解中携带的配置信息,上述配置信息包括用户配置的自定义启动参数的信息。上述解析模块用于解析上述配置信息,得到自定义启动参数的解析信息。上述容器创建模块用于根据启动参数信息来创建容器,上述启动参数信息包括上述解析信息。
13.第三方面,本公开的实施例提供了一种电子设备。上述电子设备包括处理器、通信接口、存储器和通信总线,其中,处理器、通信接口和存储器通过通信总线完成相互间的通信;存储器,用于存放计算机程序;处理器,用于执行存储器上所存放的程序时,实现如上所述的创建容器的方法。
14.第四方面,本公开的实施例提供了一种计算机可读存储介质。上述计算机可读存储介质上存储有计算机程序,上述计算机程序被处理器执行时实现如上所述的创建容器的方法。
15.本公开实施例提供的上述技术方案与现有技术相比至少具有如下优点的部分或全部:
16.通过注解形式来携带用户配置的自定义启动参数的配置信息,对上述配置信息进行解析后得到自定义启动参数的解析信息,从而可以根据上述自定义启动参数的解析信息来创建容器,克服了容器编排工具向应用容器传递的参数具有局限性的技术缺陷,使得容器编排工具能够以注解形式传递自身不支持但是用户需要在容器引擎中创建容器时个性化设置的容器启动参数,拓展了的容器启动参数种类的设置范围,提升了设置的灵活性。
附图说明
17.此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。
18.为了更清楚地说明本公开实施例或现有技术中的技术方案,下面将对实施例或相关技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
19.图1示意性示出了适用于本公开实施例的创建容器的方法和装置的系统架构;
20.图2示意性示出了根据本公开一实施例的创建容器的方法的流程图;
21.图3示意性示出了根据本公开实施例的操作s201的详细实施流程图;
22.图4示意性示出了根据本公开实施例的操作s202的详细实施流程图;
23.图5示意性示出了根据本公开另一实施例的创建容器的方法的流程图;
24.图6示意性示出了根据本公开又一实施例的创建容器的方法的流程图;
25.图7示意性示出了根据本公开再一实施例的创建容器的方法的流程图;
26.图8示意性示出了根据本公开实施例的用于创建容器的装置的结构框图;以及
27.图9示意性示出了本公开实施例提供的电子设备的结构框图。
具体实施方式
28.相关技术中,在基于容器编排工具进行容器的创建时,容器编排工具向应用容器传递的参数具有局限性,只能传递并配置容器编排工具和容器引擎共同支持的一些容器启动参数,以容器编排工具为kubernetes(简称为k8s)和容器引擎为docker为例,通过k8s yaml文件创建容器时,k8s支持的大多是控制资源的参数,诸如memory参数、cpu参数、mounts参数等,传递的容器启动参数有限。针对一些用户需要个性化设置的容器启动参数,无法通过容器编排工具进行配,例如,无法通过k8s yaml文件来配置容器的很多其他的启动参数,诸如容器的共享内存(shmsize)、容器内的进程数量限制(pidslimit)、容器的虚拟内存的大小(memoryswappiness)、容器中的内核参数(sysctl)等启动参数。
29.有鉴于此,本公开的实施例提供了一种创建容器的方法、装置、电子设备及介质,上述方法包括:获取注解中携带的配置信息,上述配置信息包括用户配置的自定义启动参数的信息;解析所述配置信息,得到自定义启动参数的解析信息;以及根据启动参数信息来创建容器,所述启动参数信息包括所述解析信息。
30.为使本公开实施例的目的、技术方案和优点更加清楚,下面将结合本公开实施例中的附图,对本公开实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本公开的一部分实施例,而不是全部的实施例。基于本公开中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本公开保护的范围。
31.图1示意性示出了适用于本公开实施例的创建容器的方法和装置的系统架构。
32.参照图1所示,适用于本公开实施例的创建容器的方法和装置的系统架构100包括:终端设备101、102、103,网络104和服务器105。网络104用以在终端设备101、102、103和服务器105之间提供通信链路的介质。网络104可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。
33.用户可以使用终端设备101、102、103通过网络104与服务器105交互,以接收或发送消息等。终端设备101、102、103上可以安装有各种类型的通讯客户端应用,例如购物类应用、网页浏览器应用、搜索类应用、即时通信工具、邮箱客户端、社交平台软件等(仅为示例)。
34.终端设备101、102、103可以是具有显示屏并且支持网页浏览的各种电子设备,例如电子设备包括但不限于智能手机、平板电脑、笔记本电脑、台式计算机、智能手表等等。
35.服务器105可以是提供各种服务的服务器,例如对用户利用终端设备101、102、103所浏览的网站提供支持的后台管理服务器(仅为示例)。后台管理服务器可以对接收到的用户请求等数据进行分析等处理,并将处理结果(例如根据用户请求获取或生成的网页、信息、或数据等)反馈给终端设备。
36.需要说明的是,本公开实施例所提供的创建容器的方法一般可以由终端设备101、102、103或者服务器105来执行。相应地,本公开实施例所提供的用于创建容器的装置一般
可以设置于终端设备101、102、103中或者服务器105中。本公开实施例所提供的创建容器的方法也可以由不同于服务器105且能够与终端设备101、102、103和/或服务器105通信的服务器或服务器集群执行。相应地,本公开实施例所提供的创建容器的装置也可以设置于不同于服务器105且能够与终端设备101、102、103和/或服务器105通信的服务器或服务器集群中。
37.应该理解,图1中的终端设备、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和服务器。
38.本公开的第一个示例性实施例提供了一种创建容器的方法。
39.图2示意性示出了根据本公开一实施例的创建容器的方法的流程图。
40.参照图2所示,本公开实施例提供的创建容器的方法,包括以下操作:s201、s202和s203。示例性的,上述操作s201~s203可以由终端设备执行或者服务器执行。
41.在操作s201,获取注解中携带的配置信息,上述配置信息包括用户配置的自定义启动参数的信息。
42.上述注解(annotation)是用户可以任意定义的“附加”信息,可以包括标签(label)不允许使用的字符,应该理解的是,注解也可以包含标签允许使用的字符。用户配置的自定义启动参数的信息可以是用户配置的自定义启动参数和对应的参数值。该操作s201只是获取到上述配置信息,上述配置信息里面的具体内容将于后续的操作s202中解析得到。
43.在操作s202,解析上述配置信息,得到上述自定义启动参数的解析信息。
44.通过对配置信息进行解析后,能够得到配置信息中携带的自定义启动参数及对应参数值这一解析信息。
45.在操作s203,根据启动参数信息来创建容器,上述启动参数信息包括上述解析信息。
46.在上述操作s203中,可以根据自定义启动参数的解析信息来创建容器。
47.在已知启动参数的情况下,可以基于启动参数来创建容器,例如容器引擎可以根据已经解析得到的自定义启动参数的解析信息(对应为自定义启动参数及对应参数值)来创建容器。
48.基于上述操作s201~s203,通过注解形式来携带用户配置的自定义启动参数的配置信息,对上述配置信息进行解析后得到自定义启动参数的解析信息,从而可以根据自定义启动参数的解析信息来创建容器,克服了容器编排工具向应用容器传递的参数具有局限性的技术缺陷,使得容器编排工具能够以注解形式传递自身不支持但是用户需要在容器引擎中创建容器时个性化设置的容器启动参数,拓展了的容器启动参数种类的设置范围,提升了设置的灵活性。
49.根据本公开的实施例,上述自定义启动参数包括但不限于以下参数至少之一:容器的共享内存(shmsize,简称shm)的大小、保留容器的监听端口、控制对特定设备的读写速度参数(例如为device

read

bps、device

read

iops、device

write

bps、device

write

iops等)、控制对特定设备的访问权限(device

cgroup

rule)、容器内的进程数量限制(pids

limit)、容器中的内核参数(sysctl)、容器的虚拟内存的大小等。
50.图3示意性示出了根据本公开实施例的操作s201的详细实施流程图。
51.根据本公开的实施例,参照图3所示,上述获取注解中携带的配置信息的操作s201包括以下子操作:s2011和s2012。
52.在子操作s2011,接收用户在容器编排工具的注解中配置的自定义启动参数的信息。
53.在子操作s2012,将配置好的注解以标签形式传入至上述容器编排工具所调用的容器引擎中,以在上述容器引擎中得到上述注解中携带的配置信息。
54.示例性的,上述子操作s2011~s2012由终端设备执行时,该终端设备上安装有容器编排工具,容器编排工具例如可以是k8s,该容器编排工具可以管理一个容器引擎的集群,例如k8s能够通过调用docker集群中的一个或多个docker来创建容器。
55.在子操作s2011的实施场景中,用户在注解中配置自定义启动参数的信息的途径可以是:用户在容器编排工具的注解字段输入待配置的自定义启动参数的信息,以实现自定义启动参数的信息配置。由终端设备的容器编排工具接收用户配置的自定义启动参数的信息,由于容器引擎具有标签并没有注解,因此需要将容器编排工具配置好的注解以标签的形式传入至容器编排工具所调用的容器引擎中,这样一来,在容器引擎中获得了注解中携带的配置信息,这里对于终端设备而言,只是获得了配置信息,配置信息的具体内容需要在后续的操作s202中进行解析得到。
56.以一具体实施例进行示例,例如,用户想要配置的自定义启动参数为:容器的共享内存(shmsize)的大小和保留容器的监听端口,则用户可以在容器编排工具的注解中输入的待配置的自定义启动参数,实现自定义启动参数的信息配置。
57.示例性的,用户在注解中配置容器的共享内存(shmsize)的大小和保留容器的监听端口的输入形式为(这里不表示实际代码中的全角和半角表示方式,实际代码需要符合对应的半角形式):
58.annotations:
59.jdcloud.com.shmsize:“1048576”60.jdcloud.com.reservedport:“8818”61.那么在终端设备上对应接收到用户在容器编排工具的注解中配置的自定义启动参数的信息也呈现上述形式。
62.上述示例形式中,annotation表示注解,注解是key

value的键

值对形式,要求特殊的key形式,jdcloud.com为可由容器引擎(例如docker)识别的前缀,这个前缀可以任意定义,shmsize表示共享内存,reservedport表示保留容器的监听端口,shmsize和reservedport均为用户配置的自定义启动参数;shmsize后面的值“1024576”为共享内存这个参数的对应参数值;.reservedport后面的值“8818”为保留的监听端口所对应的端口名称。
63.由于容器引擎(例如docker)中没有annotation的概念,k8s中的annotation会作为docker的标签label传递,对应在容器编排工具中具有以下表达形式:
[0064][0065]
上述携带有容器的共享内存(shmsize)的大小和保留容器的监听端口的自定义启动参数的信息的注解(annotations)进行配置之前,在开源的容器编排工具中,还定义了与后续待配置的注解相对应的标签(labels),这样一来就可以将配置好的注解以标签形式传入至上述容器编排工具所调用的容器引擎中,以在上述容器引擎中得到上述注解中携带的配置信息。
[0066]
图4示意性示出了根据本公开实施例的操作s202的详细实施流程图。
[0067]
根据本公开的实施例,参照图4所示,上述解析上述配置信息,得到上述自定义启动参数的解析信息的操作s202包括以下子操作:s2021、s2022和s2023。
[0068]
在子操作s2021,识别上述配置信息中的前缀。
[0069]
在子操作s2022,基于上述前缀,定位至上述前缀后的键

值对。
[0070]
在子操作s2023,解析上述键

值对,得到自定义启动参数及对应参数值。得到的自定义启动参数的解析信息即为:自定义启动参数及对应参数值。
[0071]
上述子操作s2021~s2023可以由终端设备执行,例如具体可以由终端设备中容器编排工具所调用的容器引擎(例如为docker)来实施。
[0072]
在上述携带有容器的共享内存(shmsize)的大小和保留容器的监听端口的自定义启动参数的信息的注解所对应的实施例中,可以通过容器引擎(例如docker)识别配置信息中的前缀:jdcloud.com。然后基于上述前缀jdcloud.com,定位至该前缀jdcloud.com后的键

值对,分别定位至键

值对:shmsize:“1048576”和键

值对reservedport:“8818”。通过解析键

值对:shmsize:“1048576”,可以得到用户配置的一个自定义启动参数的解析信息为:共享内存为1048576k;通过解析键

值对reservedport:“8818”,可以得到用户配置的另一个自定义启动参数的解析信息为:保留容器的监听端口8818。
[0073]
图5示意性示出了根据本公开另一实施例的创建容器的方法的流程图。
[0074]
参照图5所示,本公开实施例提供的创建容器的方法包括上述操作s201和s202之外,还包括根据启动参数信息来创建容器的操作s203’和操作s501:将上述自定义启动参数的解析信息添加至容器初始配置文件中,上述容器初始配置文件中包含有预定义启动参数信息。
[0075]
原先的操作s203在这里表示为操作s203’,本实施例中,启动参数信息除了包括自
tcp连接监听队列大小,系统中默认为128,在本实施例中将其参数值设置的更大一些,防止经常处理新请求的业务由于监听队列满拒绝新的请求;net.ipv4.tcp_max_syn_backlog半连接队列上限,系统默认128,在本实施例中将其参数值设置的更大一些,防止处理大量网络连接时,出现客户端连接不上的问题,以上两个默认128都比较小,考虑到目前的服务器性能很好,可以在配置预定义参数的时候,调大其参数值来处理更多的请求,实现一些优化容器运行性能的参数设置。
[0088]
图7示意性示出了根据本公开再一实施例的创建容器的方法的流程图。
[0089]
在前述包含操作s201、s202、s203’、s501、s601和s602的实施例的基础上,参照图7所示,本公开实施例提供的创建容器的方法还包括以下操作s701,更新上述预定义启动参数信息。图7中为了简化示意,仅示意了操作s701和操作s601~s602。
[0090]
上述根据上述预定义启动参数信息来生成容器初始配置文件的操作s602包括:根据更新后的预定义启动参数信息来生成容器初始配置文件。
[0091]
云服务的提供者可以对上述预定义启动参数信息进行更新,上述更新包括:增加预定义启动参数信息、删除预定义启动参数信息、修改预定义启动参数信息。容器引擎接收到上述预定义启动参数信息的更新信息之后,会根据更新后的预定义启动参数信息来生成容器初始配置文件,这样一来,形成了包含自定义启动参数的解析信息和更新后的预定义启动参数信息的容器配置文件,在根据上述自定义启动参数的解析信息和上述预定义启动参数信息来创建容器的过程中,基于更新后的容器配置文件来创建容器,实现了容器启动参数的更新和个性化设置。
[0092]
本公开的第二个示例性实施例提供了一种用于创建容器的装置。
[0093]
图8示意性示出了根据本公开实施例的用于创建容器的装置的结构框图。
[0094]
参照图8所示,本公开实施例提供的用于创建容器的装置800包括:信息获取模块801、解析模块802和容器创建模块803。
[0095]
上述信息获取模块801用于获取注解中携带的配置信息,上述配置信息包括用户配置的自定义启动参数的信息。
[0096]
上述信息获取模块801可以为设置于容器编排工具和容器引擎中的用于获取信息的功能模块或子模块,用于接收用户在容器编排工具的注解中配置的自定义启动参数的信息;并将配置好的注解以标签形式传入至上述容器编排工具所调用的容器引擎中,以在上述容器引擎中得到上述注解中携带的配置信息。
[0097]
上述解析模块802用于解析上述配置信息,得到自定义启动参数的解析信息。上述解析模块802可以是设置于容器引擎中的用于实现子操作在子操作s2021~s2023的功能模块或子模块。
[0098]
上述容器创建模块803用于根据启动参数信息来创建容器,上述启动参数信息包括上述解析信息。上述容器创建模块803可以是设置于容器引擎中的用于实现容器创建的功能模块或子模块。
[0099]
根据本公开的实施例,上述装置800除了包括上述信息获取模块801、解析模块802和容器创建模块803之外,还包括:参数添加模块。上述参数添加模块用于将上述自定义启动参数的解析信息添加至容器初始配置文件中,上述容器初始配置文件中包含有预定义启动参数信息。
[0100]
根据本公开的实施例,上述装置800还可以进一步包括:预定义启动参数信息接收模块和初始配置文件生成模块。
[0101]
上述预定义启动参数信息接收模块用于接收具有配置权限的用户在上述容器引擎中设置的预定义启动参数信息。
[0102]
上述初始配置文件生成模块用于根据上述预定义启动参数信息来生成容器初始配置文件。
[0103]
根据本公开的实施例,上述装置800还可以进一步包括:预定义启动参数信息更新模块,用于更新上述预定义启动参数信息。
[0104]
上述初始配置文件生成模块还用于根据更新后的预定义启动参数信息来生成容器初始配置文件。
[0105]
上述信息获取模块801、解析模块802和容器创建模块803中的任意多个可以合并在一个模块中实现,或者其中的任意一个模块可以被拆分成多个模块。或者,这些模块中的一个或多个模块的至少部分功能可以与其他模块的至少部分功能相结合,并在一个模块中实现。信息获取模块801、解析模块802和容器创建模块803中的至少一个可以至少被部分地实现为硬件电路,例如现场可编程门阵列(fpga)、可编程逻辑阵列(pla)、片上系统、基板上的系统、封装上的系统、专用集成电路(asic),或可以通过对电路进行集成或封装的任何其他的合理方式等硬件或固件来实现,或以软件、硬件以及固件三种实现方式中任意一种或以其中任意几种的适当组合来实现。或者,信息获取模块801、解析模块802和容器创建模块803中的至少一个可以至少被部分地实现为计算机程序模块,当该计算机程序模块被运行时,可以执行相应的功能。
[0106]
本公开的第三个示例性实施例提供了一种电子设备。
[0107]
图9示意性示出了本公开实施例提供的电子设备的结构框图。
[0108]
参照图9所示,本公开实施例提供的电子设备900包括处理器901、通信接口902、存储器903和通信总线904,其中,处理器901、通信接口902和存储器903通过通信总线904完成相互间的通信;存储器903,用于存放计算机程序;处理器901,用于执行存储器上所存放的程序时,实现如上所述的创建容器的方法。
[0109]
本公开的第四个示例性实施例还提供了一种计算机可读存储介质。上述计算机可读存储介质上存储有计算机程序,上述计算机程序被处理器执行时实现如上所述的创建容器的方法。
[0110]
该计算机可读存储介质可以是上述实施例中描述的设备/装置中所包含的;也可以是单独存在,而未装配入该设备/装置中。上述计算机可读存储介质承载有一个或者多个程序,当上述一个或者多个程序被执行时,实现根据本公开实施例的方法。
[0111]
根据本公开的实施例,计算机可读存储介质可以是非易失性的计算机可读存储介质,例如可以包括但不限于:便携式计算机磁盘、硬盘、随机访问存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、便携式紧凑磁盘只读存储器(cd

rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本公开中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
[0112]
需要说明的是,在本文中,诸如“第一”和“第二”等之类的关系术语仅仅用来将一
个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
[0113]
以上所述仅是本公开的具体实施方式,使本领域技术人员能够理解或实现本公开。对这些实施例的多种修改对本领域的技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本公开的精神或范围的情况下,在其它实施例中实现。因此,本公开将不会被限制于本文所示的这些实施例,而是要符合与本文所申请的原理和新颖特点相一致的最宽的范围。
再多了解一些

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

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

相关文献