容器创建方法及装置、计算机可读存储介质与流程

文档序号:31717820发布日期:2022-10-04 22:25阅读:47来源:国知局
容器创建方法及装置、计算机可读存储介质与流程

1.本公开涉及云计算技术领域,特别涉及容器创建方法及装置、计算机可读存储介质。


背景技术:

2.在云服务技术中,容器是轻量化的技术,相对于物理机和虚拟机而言,在等量资源的基础上能创建出更多的容器实例。容器需要接受管理并有序接入外部环境,从而实现调度、负载均衡以及分配等任务,kubernetes是谷歌推出的一个工业级的容器编排平台,允许自动化部署、管理和扩容容器化应用,现在已成为容器编排的事实标准。
3.随着arm以及开源risc-v等cpu架构的不断发展以及国产cpu的研发,越来越多的应用需要同时适配多种架构的cpu。如果要求应用能够支持多种cpu架构,那么在开发应用时,就应当在多种cpu架构上进行测试,因此,需要准备不同cpu架构的服务器资源。随着应用逐渐容器化,可以在kubernetes的节点上创建容器,以实现应用的开发和测试。


技术实现要素:

4.根据本公开的第一方面,提供了一种容器创建方法,由工作节点执行,包括:接收主节点生成的容器创建信息,其中,容器创建信息包括用户指定的镜像的信息;根据用户指定的镜像的信息,确定用户指定的cpu架构类型;从所述工作节点具有的cpu架构模拟器中,选择与用户指定的cpu架构类型对应的模拟器;利用与用户指定的cpu架构类型对应的模拟器,创建容器。
5.在一些实施例中,所述容器创建方法还包括:将所述工作节点具有的cpu架构模拟器的类型发送给主节点。
6.在一些实施例中,所述容器创建方法还包括:根据所述工作节点的文件目录下的cpu架构模拟器的文件,确定所述工作节点具有的cpu架构模拟器的类型。
7.在一些实施例中,所述根据用户指定的镜像的信息,确定用户指定的cpu架构类型,包括:
8.根据用户指定的镜像的信息,获取用户指定的镜像的元数据;
9.根据用户指定的镜像的元数据,确定用户指定的cpu架构类型。
10.在一些实施例中,所述利用与用户指定的cpu架构类型对应的模拟器,创建容器,包括:
11.将所述工作节点的文件目录下的模拟器的二进制文件映射到容器的文件目录中。
12.在一些实施例中,所述利用与用户指定的cpu架构类型对应的模拟器,创建容器,包括:
13.根据容器创建信息和与用户指定的cpu架构类型对应的模拟器,生成容器启动的参数列表,其中,容器启动的参数列表包括与用户指定的cpu架构类型对应的模拟器的名称;
14.根据容器启动的参数列表,创建容器。
15.在一些实施例中,所述用户指定的镜像的信息包括用户指定的镜像的地址。
16.根据本公开的第二方面,提供了一种容器创建方法,由主节点执行,包括:
17.接收用户的容器创建请求,其中,容器创建请求包括用户指定的镜像的信息;
18.根据用户指定的镜像的信息,确定用户指定的cpu架构类型;
19.接收多个工作节点具有的cpu架构模拟器的类型;
20.根据用户指定的cpu架构类型和多个工作节点具有的cpu架构模拟器的类型,从多个工作节点中选择目标工作节点;
21.根据用户的容器创建请求,生成容器创建信息,其中,容器创建信息指示目标工作节点创建容器。
22.在一些实施例中,所述根据用户指定的cpu架构类型和多个工作节点具有的cpu架构模拟器的类型,从多个工作节点中选择目标工作节点,包括:
23.从具有与用户指定的cpu架构类型对应的cpu架构模拟器的工作节点中,选择目标工作节点。
24.在一些实施例中,所述从具有与用户指定的cpu架构类型对应的cpu架构模拟器的工作节点中,选择目标工作节点,包括:
25.根据预设的过滤条件,选择目标工作节点。
26.在一些实施例中,所述预设的过滤条件包括工作节点的cpu型号、内存大小和剩余资源的至少一个。
27.根据本公开的第三方面,提供了一种容器创建装置,部署在工作节点上,包括:
28.接收模块,被配置为接收主节点生成的容器创建信息,其中,容器创建信息包括用户指定的镜像的信息;
29.确定模块,被配置为根据用户指定的镜像的信息,确定用户指定的cpu架构类型;
30.选择模块,被配置为从所述工作节点具有的cpu架构模拟器中,选择与用户指定的cpu架构类型对应的模拟器;
31.创建模块,被配置为利用与用户指定的cpu架构类型对应的模拟器,创建容器。
32.根据本公开的第四方面,提供了一种容器创建装置,部署在主节点上,包括:
33.第一接收模块,被配置为接收用户的容器创建请求,其中,容器创建请求包括用户指定的镜像的信息;
34.确定模块,被配置为根据用户指定的镜像的信息,确定用户指定的cpu架构类型;
35.第二接收模块,被配置为接收多个工作节点具有的cpu架构模拟器的类型;
36.选择模块,被配置为根据用户指定的cpu架构类型和多个工作节点具有的cpu架构模拟器的类型,从多个工作节点中选择目标工作节点;
37.生成模块,被配置为根据用户的容器创建请求,生成容器创建信息,其中,容器创建信息指示目标工作节点创建容器。
38.根据本公开的第五方面,提供了一种集群系统,包括根据本公开任一实施例的工作节点和主节点。
39.根据本公开的第六方面,提供了一种容器创建装置,包括:
40.存储器;以及
41.耦接至所述存储器的处理器,所述处理器被配置为基于存储在所述存储器的指令,执行根据任一实施例所述的容器创建方法。
42.根据本公开的第七方面,提供了一种计算机可存储介质,其上存储有计算机程序指令,该指令被处理器执行时,实现根据本公开任一实施例所述的容器创建方法。
附图说明
43.构成说明书的一部分的附图描述了本公开的实施例,并且连同说明书一起用于解释本公开的原理。
44.参照附图,根据下面的详细描述,可以更加清楚地理解本公开,其中:
45.图1示出了根据本公开一些实施例的容器创建方法的流程图;
46.图2示出了根据本公开另一些实施例的容器创建方法的流程图;
47.图3示出了根据本公开另一些实施例的容器创建方法的示意图;
48.图4示出根据本公开一些实施例的容器创建装置的框图
49.图5示出根据本公开另一些实施例的容器创建装置的框图;
50.图6示出了根据本公开一些实施例的集群系统的框图;
51.图7示出了根据本公开另一些实施例的容器创建装置的框图;
52.图8示出用于实现本公开一些实施例的计算机系统的框图。
具体实施方式
53.现在将参照附图来详细描述本公开的各种示例性实施例。应注意到:除非另外具体说明,否则在这些实施例中阐述的部件和步骤的相对布置、数字表达式和数值不限制本公开的范围。
54.同时,应当明白,为了便于描述,附图中所示出的各个部分的尺寸并不是按照实际的比例关系绘制的。
55.以下对至少一个示例性实施例的描述实际上仅仅是说明性的,决不作为对本公开及其应用或使用的任何限制。
56.对于相关领域普通技术人员已知的技术、方法和设备可能不作详细讨论,但在适当情况下,所述技术、方法和设备应当被视为说明书的一部分。
57.在这里示出和讨论的所有示例中,任何具体值应被解释为仅仅是示例性的,而不是作为限制。因此,示例性实施例的其它示例可以具有不同的值。
58.应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步讨论。
59.相关技术中,kubernetes在一个worker(工作)节点只能创建同一种cpu架构的容器,并且容器的cpu架构和worker节点的物理cpu架构要保持一致。如果要求应用能够适配多种cpu架构,则在应用的开发和测试过程中,就需要准备多种cpu硬件资源,这造成了巨大的成本压力和资源浪费。
60.本公开提出了一种容器创建方法及装置、计算机可读存储介质,实现了在kubernetes的单个worker节点上,创建与该worker节点的物理架构不同的容器。
61.图1示出了根据本公开一些实施例的容器创建方法的流程图。
62.如图1所示,容器创建方法包括步骤s110-s140,由工作节点执行。
63.在步骤s110中,接收主节点生成的容器创建信息,其中,容器创建信息包括用户指定的镜像的信息。
64.例如,监听容器创建信息对应的数据库,当监听数据库中创建信息的新增或改变时,获取新的容器创建信息和主节点指示本工作节点创建容器的信息。
65.在一些实施例中,用户指定的镜像的信息包括用户指定的镜像的地址。
66.在一些实施例中,容器创建方法还包括将本工作节点具有的cpu架构模拟器的类型发送给主节点。
67.例如,在工作节点上部署多种类型的cpu架构的模拟器。在上报本工作节点的物理cpu架构类型的基础上,工作节点还新增了本节点的cpu架构模拟器的类型的上报。
68.各工作节点利用qemu(quick emulator,快速仿真器)提供的cpu架构模拟器,来启动不同于worker节点cpu架构的容器,每一种cpu架构对应一种模拟器。为了让主节点的调度器知道该工作节点支持的cpu架构类型,各个工作节点都将本节点支持的cpu架构类型(即,本工作节点具有的cpu架构模拟器的类型),上报给主节点。
69.主节点根据各工作节点具有的cpu架构模拟器的类型,和用户指定的镜像的信息,确定由哪一个工作节点作为目标节点,来创建容器。
70.在一些实施例中,容器创建方法还包括根据工作节点的文件目录下的cpu架构模拟器的文件,确定工作节点具有的cpu架构模拟器的类型。
71.例如,将cpu架构的模拟器作为二进制文件保存在工作节点标准目录下。工作节点通过查询文件目录(例如,/usr/bin/),确认本节点包含哪些cpu架构的模拟器。
72.本公开通过在工作节点上部署cpu架构模拟器,解耦了kubernetes worker节点代理与容器cpu架构的绑定关系。由工作节点上报本节点具有的cpu架构模拟器类型,而不仅仅是上报本节点的物理cpu架构类型,能够为主节点的调度提供更多选择。
73.在步骤s120中,根据用户指定的镜像的信息,确定用户指定的cpu架构类型。
74.例如,工作节点代理解析出用户指定的容器镜像对应的cpu架构的类型。
75.在一些实施例中,根据用户指定的镜像的信息,确定用户指定的cpu架构类型,包括:根据用户指定的镜像的信息,获取用户指定的镜像的元数据;根据用户指定的镜像的元数据,确定用户指定的cpu架构类型。
76.例如,工作节点根据用户指定的镜像的地址,从镜像仓库下载用户指定的镜像的元数据,然后通过docker inspect命令查看用户指定的镜像的元数据,从而确定用户指定的cpu架构类型,确定应该用本节点的哪个模拟器模拟镜像对应的cpu架构。
77.在步骤s130中,从工作节点具有的cpu架构模拟器中,选择与用户指定的cpu架构类型对应的模拟器。
78.例如,用户指定的cpu架构类型为x86,则选择x86架构的模拟器来创建容器。
79.通过解析用户选择的容器镜像对cpu架构要求,按需选择对应的cpu架构模拟器,进而能够实现用cpu架构模拟器创建出对应cpu架构的容器。
80.在步骤s140中,利用与用户指定的cpu架构类型对应的模拟器,创建容器。
81.在一些实施例中,利用与用户指定的cpu架构类型对应的模拟器,创建容器,包括将工作节点的文件目录下的模拟器的二进制文件映射到容器的文件目录中。
82.例如,如果需要创建的容器类型和worker节点的物理cpu架构类型不同,就需要使用模拟器。在启动容器时,需要通过文件映射方式将对应的模拟器映射到容器中,因此其启动参数会有变化,本公开对容器启动参数进行调整,保证将cpu架构模拟器文件正确映射到容器中。如果需要在物理架构为x86的工作节点上创建arm架构的容器,则使用以下命令:
83.docker run-itd
‑‑
privileged-v/usr/bin/qemu-arm-static:/usr/bin/qemu-arm-static ioft/armhf-ubuntu:trusty/bin/bash
84.其中,-v/usr/bin/qemu-arm-static:/usr/bin/qemu-arm-static为在原有创建容器的命令的基础上,新增的内容,即将工作节点的文件目录下的模拟器的二进制文件映射到容器的文件文件目录。
85.本公开通过用cpu架构模拟器创建容器,解耦了工作节点的物理cpu架构与节点可以创建的容器的cpu架构的绑定关系。
86.在一些实施例中,利用与用户指定的cpu架构类型对应的模拟器,创建容器,包括:根据容器创建信息和与用户指定的cpu架构类型对应的模拟器,生成容器启动的参数列表,其中,容器启动的参数列表包括与用户指定的cpu架构类型对应的模拟器的名称;根据容器启动的参数列表,创建容器。
87.例如,在容器启动的参数列表中,新增与用户指定的cpu架构类型对应的模拟器的名称,将修改后的容器启动参数传递给容器运行时接口。根据与用户指定的cpu架构类型对应的模拟器的名称等参数,通过容器运行时接口(container runtime interface,cri)调用容器运行引擎(container engine)实现容器的创建。
88.本公开通过cpu架构的模拟器调度并创建容器,使得工作节点不仅仅支持在本节点上创建与本节点的物理cpu架构相同的cpu架构的容器,还能够支持在本节点上创建与本节点的物理cpu架构不同的容器,从而使得一个工作节点能支持创建多种不同类型cpu架构的容器,不再受限于本节点的物理cpu架构,提高了创建容器的灵活性。
89.此外,通过模拟器解耦了工作节点的物理cpu架构与节点可以创建的容器的cpu架构的绑定关系,支持在一个工作节点上,创建多个不同cpu架构类型的容器,而不需要多个不同cpu架构的硬件资源,降低了应用开发测试的成本。
90.图2示出了根据本公开另一些实施例的容器创建方法的流程图。
91.如图2所示,容器创建方法包括步骤s210-s250,由主节点执行。
92.在步骤s210中,接收用户的容器创建请求,其中,容器创建请求包括用户指定的镜像的信息,用户指定的镜像的信息包括用户指定的镜像的地址。
93.例如,由用户选择镜像,并发送容器创建请求给主节点,并指定要求的cpu架构类型。
94.在步骤s220中,根据用户指定的镜像的信息,确定用户指定的cpu架构类型。
95.例如,根据用户指定的镜像的信息中,用户指定的镜像的地址,在镜像仓库中查询,得到用户指定的镜像的信息对应的cpu架构类型。
96.在步骤s230中,接收多个工作节点具有的cpu架构模拟器的类型。
97.例如,接收各个工作节点通过查询后上报的,本节点具有的cpu架构模拟器的类型。
98.在步骤s240中,根据用户指定的cpu架构类型和多个工作节点具有的cpu架构模拟
器的类型,从多个工作节点中选择目标工作节点
99.例如,如果一个工作节点所具有的模拟器中,有和用户指定的cpu架构类型相同的,则选择该工作节点作为目标工作节点。
100.在一些实施例中,根据用户指定的cpu架构类型和多个工作节点具有的cpu架构模拟器的类型,从多个工作节点中选择目标工作节点,包括:从具有与用户指定的cpu架构类型对应的cpu架构模拟器的工作节点中,选择目标工作节点。
101.例如,如果有多个节点都有与用户指定的cpu架构类型对应的模拟器,则从中选出一个,作为目标工作节点。
102.在一些实施例中,从具有与用户指定的cpu架构类型对应的cpu架构模拟器的工作节点中,选择目标工作节点,包括:根据预设的过滤条件,选择目标工作节点。
103.例如,如果有多个节点都有与用户指定的cpu架构类型对应的模拟器,则根据预设的策略,从中选择出目标工作节点。
104.在一些实施例中,预设的过滤条件包括工作节点的cpu型号、内存大小和剩余资源的至少一种。
105.例如,按照下面两步进行工作节点的调度。
106.1、过滤阶段:选择出满足镜像cpu架构要求的worker节点,并从满足要求的worker节点中,根据用户对容器的cpu型号、内存大小的要求,过滤出候选工作节点。
107.2、优选阶段,对候选工作节点进一步筛选,例如,选出剩余资源最多的候选节点。
108.在步骤s250中,根据用户的容器创建请求,生成容器创建信息,其中,容器创建信息指示目标工作节点创建容器。
109.例如,生成包括用户指定的镜像地址的容器创建信息,并存储到数据库中,调度目标工作节点创建容器。
110.本公开在选择目标工作节点时,根据各工作节点的cpu架构模拟器的类型,而不仅仅是根据各工作节点的物理cpu架构的类型。利用cpu架构模拟器,解决了主节点在选择目标节点时受限于工作节点的物理cpu架构的类型的问题,从而有更多的工作节点可以选择,有利于根据从中找到更合适的目标节点,而不受其物理cpu架构的限制,提高了调度的灵活性,降低了成本。
111.图3示出了根据本公开另一些实施例的容器创建方法的示意图。
112.如图3所示,首先,各worker节点探测本节点具有的一个或多个模拟器类型,然后worker节点将本节点具有的模拟器类型上报给master节点;
113.然后,用户选择镜像,通过k8s api sever发起容器创建请求。
114.调度器从容器创建请求解析镜像要求的cpu架构类型,并根据各worker节点上报的支持的cpu架构类型,选择出支持该架构的节点,结合预设的调度策略完成调度。其中,各worker节点上报的支持的cpu架构类型由各计算节点的“节点cpu架构能力上报模块”提供。
115.被调度的worker节点代理会接收到创建容器的请求信息,worker节点代理解析出容器镜像对应的cpu架构;worker节点代理根据容器创建规格等要求,以及镜像指明的cpu架构,生成对应模拟器生成容器启动的参数列表,并将对应cpu架构的模拟器的二进制文件通过-v参数的方式映射到容器中)。
116.最后,worker节点代理根据之前生成的参数通过容器运行时接口调用容器运行引
擎,完成容器创建。
117.图4示出根据本公开一些实施例的容器创建装置的框图。
118.如图4所示,容器创建装置40包括接收模块401、确定模块402、选择模块403、创建模块404。
119.接收模块401,被配置为接收主节点生成的容器创建信息,其中,容器创建信息包括用户指定的镜像的信息,例如执行如图1所示的步骤s110;
120.确定模块402,被配置为根据用户指定的镜像的信息,确定用户指定的cpu架构类型,例如执行如图2所示的步骤s120;
121.选择模块403,被配置为从工作节点具有的cpu架构模拟器中,选择与用户指定的cpu架构类型对应的模拟器,例如执行如图1所示的步骤s130;
122.创建模块404,被配置为利用与用户指定的cpu架构类型对应的模拟器,创建容器,例如执行如图1所示的步骤s140。
123.图5示出根据本公开另一些实施例的容器创建装置的框图。
124.如图5所示,容器创建装置50部署在主节点上,包括第一接收模块501、确定模块502、第二接收模块503、选择模块504、生成模块505。
125.第一接收模块501,被配置为接收用户的容器创建请求,其中,容器创建请求包括用户指定的镜像的信息,例如执行如图2所示的步骤s210。
126.确定模块502,被配置为根据用户指定的镜像的信息,确定用户指定的cpu架构类型,例如执行如图2所示的步骤s220。
127.第二接收模块503,被配置为接收多个工作节点具有的cpu架构模拟器的类型,例如执行如图2所示的步骤s230。
128.选择模块504,被配置为根据用户指定的cpu架构类型和多个工作节点具有的cpu架构模拟器的类型,从多个工作节点中选择目标工作节点,例如执行如图2所示的步骤s240。
129.生成模块505,被配置为根据用户的容器创建请求,生成容器创建信息,其中,容器创建信息指示目标工作节点创建容器,例如执行如图2所示的步骤s250。
130.图6示出了根据本公开一些实施例的集群系统的框图。
131.如图6所示,集群系统6包括工作节点4和主节点5,其中,工作节点包括根据本公开一些实例的容器创建装置,主节点包括根据本公开一些实例的容器创建装置。。
132.图7示出根据本公开另一些实施例的容器创建装置的框图。
133.如图7所示,流量预测装置7包括存储器71;以及耦接至该存储器71的处理器72,存储器71用于存储执行流量预测方法。处理器72被配置为基于存储在存储器71中的指令,执行本公开中任意一些实施例中的容器创建方法。
134.图8示出用于实现本公开一些实施例的计算机系统的框图。
135.如图8所示,计算机系统80可以通用计算设备的形式表现。计算机系统80包括存储器810、处理器820和连接不同系统组件的总线800。
136.存储器810例如可以包括系统存储器、非易失性存储介质等。系统存储器例如存储有操作系统、应用程序、引导装载程序(boot loader)以及其他程序等。系统存储器可以包括易失性存储介质,例如随机存取存储器(ram)和/或高速缓存存储器。非易失性存储介质
例如存储有执行本公开中任意一些实施例中的容器创建方法的指令。非易失性存储介质包括但不限于磁盘存储器、光学存储器、闪存等。
137.处理器820可以用通用处理器、数字信号处理器(dsp)、应用专用集成电路(asic)、现场可编程门阵列(fpga)或其它可编程逻辑设备、分立门或晶体管等分立硬件组件方式来实现。相应地,诸如判断模块和确定模块的每个模块,可以通过中央处理器(cpu)运行存储器中执行相应步骤的指令来实现,也可以通过执行相应步骤的专用电路来实现。
138.总线800可以使用多种总线结构中的任意总线结构。例如,总线结构包括但不限于工业标准体系结构(isa)总线、微通道体系结构(mca)总线、外围组件互连(pci)总线。
139.计算机系统80还可以包括输入输出接口830、网络接口840、存储接口850等。这些接口830、840、850以及存储器810和处理器820之间可以通过总线800连接。输入输出接口830可以为显示器、鼠标、键盘等输入输出设备提供连接接口。网络接口840为各种联网设备提供连接接口。存储接口850为软盘、u盘、sd卡等外部存储设备提供连接接口。
140.这里,参照根据本公开实施例的方法、装置和计算机程序产品的流程图和/或框图描述了本公开的各个方面。应当理解,流程图和/或框图的每个框以及各框的组合,都可以由计算机可读程序指令实现。
141.这些计算机可读程序指令可提供到通用计算机、专用计算机或其他可编程装置的处理器,以产生一个机器,使得通过处理器执行指令产生实现在流程图和/或框图中一个或多个框中指定的功能的装置。
142.这些计算机可读程序指令也可读存储在计算机可读存储器中,这些指令使得计算机以特定方式工作,从而产生一个制造品,包括实现在流程图和/或框图中一个或多个框中指定的功能的指令。
143.本公开可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。
144.通过上述实施例中的容器创建方法及装置、计算机可读存储介质,提高了容器创建的灵活性,降低了开发测试的成本。
145.至此,已经详细描述了根据本公开的容器创建方法及装置、计算机可读存储介质。为了避免遮蔽本公开的构思,没有描述本领域所公知的一些细节。本领域技术人员根据上面的描述,完全可以明白如何实施这里公开的技术方案。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1