镜像管理方法、计算机设备及服务器集群与流程

未命名 07-22 阅读:74 评论:0


1.本技术涉及容器镜像技术领域,尤其涉及一种镜像管理方法、计算机设备及服务器集群。


背景技术:

2.当前,容器镜像通常存储在第三方镜像仓库,由于容器管理系统与第三方镜像仓库为不同的应用程序,因此,容器管理系统无法管理第三方镜像仓库中的容器镜像,这就导致容器镜像只能由第三镜像仓库进行管理。
3.相关技术中,为了能够管理容器镜像,容器管理系统通常配置了内置镜像仓库(image registry)模块,这样,容器管理系统就可以通过指针指向内置镜像仓库中的容器镜像,从而实现通过容器管理系统管理内置镜像仓库中的容器镜像。
4.然而,这种镜像管理方式,在配置内置镜像仓库模块时,需要新增存储设备用于存储容器镜像,导致管理成本较高,并且配置内置镜像仓库模块的操作也较复杂,导致管理难度比较大。


技术实现要素:

5.本技术实施例提供一种镜像管理方法、计算机设备及服务器集群,能够通过容器管理系统管理第三方镜像仓库中容器镜像,降低了容器镜像的管理成本和管理难度。
6.为达到上述目的,本技术的实施例采用如下技术方案:
7.第一方面,提供了一种镜像管理方法,应用于服务器集群,服务器集群配置有容器管理系统,容器管理系统支持的资源类型包括融合镜像资源类型,融合镜像资源类型定义了创建融合镜像实例的配置内容;该方法包括:确定目标容器镜像已上传至镜像仓库;响应于该确定,根据融合镜像资源类型,创建与目标容器镜像对应的第一融合镜像实例;该第一融合镜像实例包括目标容器镜像在镜像仓库的镜像地址。
8.该方案中,在确定目标容器镜像上传至镜像仓库的情况下,服务器集群基于容器管理系统所支持的融合镜像资源类型,自动为容器管理系统创建第一融合镜像实例,该第一融合镜像实例包括目标容器镜像在镜像仓库上的镜像地址。由于容器镜像具有唯一的镜像地址,换言之,不同容器镜像具有不同的镜像地址,因此,通过设置第一融合镜像实例包括目标容器镜像的镜像地址,可以建立第一融合镜像实例与目标容器镜像之间的对应关系,从而实现将目标容器镜像映射为容器管理系统上的资源实例,也即,第一融合镜像实例相当于是镜像仓库中的目标容器镜像在容器管理系统上的映射对象,从而也就建立了镜像仓库中的目标容器镜像与容器管理系统中的第一融合镜像实例之间的对应关系。基于此,可以建立镜像仓库中的多个容器镜像与容器管理系统中的多个融合镜像实例之间的一一对应关系,这样,就可以通过管理容器管理系统中的多个融合镜像实例,实现管理镜像仓库中的多个容器镜像。
9.例如,用户通过服务器集群查询容器管理系统上的第一融合镜像实例所包括的内
容时,可以根据第一融合镜像中的镜像地址确定第一融合镜像实例所对应的是目标容器镜像,进而确定第一融合镜像实例所包括内容是目标容器镜像的镜像信息,而非其他容器镜像的镜像信息,从而实现通过容器管理系统查询镜像仓库中任意一个指定容器镜像的镜像信息。用户通过删除容器管理系统上的第一融合镜像实例时,服务器集群可以通过第一融合镜像实例包括的镜像地址,请求镜像仓库删除该镜像地址所指示的目标容器镜像,而非删除其他容器镜像,从而通过删除容器管理系统上的融合镜像实例,实现删除镜像仓库中任意一个指定容器镜像。
10.另外,该方案通过预先为容器管理系统创建融合镜像资源类型,即可以实现自动创建目标容器镜像在容器管理系统上的映射对象(即第一融合镜像实例),操作难度低,因此,有助于降低容器管理系统管理容器镜像时的管理难度。并且,由于不需要配置内置镜像仓库模块,即可通过管理容器管理系统中的融合镜像实例,实现管理镜像仓库中的容器镜像,因此,有助于降低通过容器管理系统管理容器镜像时的管理成本。
11.在一种可能的实现方式中,融合镜像实例的镜像类型包括容器镜像或虚拟机镜像,第一融合镜像实例的镜像类型为容器镜像;该方法还包括:获取镜像上传指令;镜像上传指令指示了上传目标虚拟机镜像;响应于镜像上传指令,根据融合镜像资源类型,创建与目标虚拟机镜像对应的第二融合镜像实例;第二融合镜像实例包括目标虚拟机镜像的存储地址,存储地址指示的存储空间用于存储目标虚拟机镜像,第二融合镜像实例的镜像类型为虚拟机镜像。
12.该实现方式中,通过设置融合镜像实例的镜像类型包括虚拟机镜像或容器镜像,这样,服务器集群便可以基于容器管理系统所支持的一个资源类型创建两种不同镜像类型的融合镜像实例,从而实现通过一个资源类型对虚拟机镜像和容器镜像进行统一管理,进而实现通过一套接口同时管理两种不同类型的镜像,提高了镜像管理的便利性,以及容器管理系统的镜像管理能力。
13.另一种可能的实现方式中,确定目标容器镜像已上传至镜像仓库,包括:接收镜像仓库发送的通知信息;通知信息用于通知目标容器镜像已上传至镜像仓库。
14.该实现方式中,在用户将目标容器镜像上传至镜像仓库后,镜像仓库向服务器集群发送通知信息,服务器集群通过接收到的通知信息实现确定目标容器镜像已上传至镜像仓库,确定过程简单、方便,无需用户操作,有助于提高用户的使用体验。
15.另一种可能的实现方式中,确定目标容器镜像已上传至镜像仓库,包括:获取镜像推送指令,镜像推送指令指示了目标容器镜像已上传至镜像仓库。
16.该实现方式中,在用户将目标容器镜像上传至镜像仓库后,向服务器集群发送镜像推送指令,服务器集群通过接收到的镜像推送指令确定目标容器镜像已上传至镜像仓库,有助于提高服务器集群确定目标容器镜像已上传至镜像仓库的准确性。
17.另一种可能的实现方式中,目标容器镜像属于镜像仓库上的目标镜像目录,创建与目标容器镜像对应的第一融合镜像实例,包括:创建属于目标命名空间的第一融合镜像实例;目标命名空间与目标镜像目录相对应。
18.该实现方式中,在目标容器镜像属于目标镜像目录时,服务器集群为容器管理系统创建属于目标命名空间的第一融合镜像实例。这样,服务器集群可以通过容器管理系统支持的rbac机制,为目标命名空间设置管理权限,这样,有助于提高容器镜像管理的灵活
性。
19.另一种可能的实现方式中,创建属于目标命名空间的第一融合镜像实例之前,该方法还包括:若监听到目标命名空间的创建事件,向镜像仓库发送目录创建请求;目录创建请求用于请求创建目标镜像目录。
20.该实现方式中,若服务器集群监听到容器管理系统上的目标命名空间的创建事件,则自动向镜像仓库发送目标创建请求,以请求镜像仓库创建与目标命名空间相对应的目标镜像目录,从而使得镜像仓库上的镜像目录与容器管理系统上的命名空间一一对应。这样,有助于提高容器管理系统的管理能力和管理范围。
21.另一种可能的实现方式中,目标命名空间中的融合镜像实例与目标镜像目录中的容器镜像一一对应;该方法还包括:若监听到目标命名空间的删除事件,向镜像仓库发送目录删除请求;目录删除请求用于请求删除目标镜像目录。
22.该实现方式中,若服务器集群监听到容器管理系统上的目标命名空间的删除事件,则自动向镜像仓库发送目录删除请求,以请求镜像仓库删除与目标命名空间相对应的目标镜像目录。这样,有助于提高容器管理系统的管理范围和管理效率。
23.另一种可能的实现方式中,创建与目标容器镜像对应的第一融合镜像实例之后,该方法还包括:从镜像仓库获取目标容器镜像的镜像信息;目标容器镜像的镜像信息包括目标容器镜像的病毒扫描结果、漏洞扫描结果和签名信息中的至少一项;更新第一融合镜像实例,以使更新后的第一融合镜像实例包括目标容器镜像的镜像信息。
24.该实现方式中,通过获取目标容器镜像的病毒扫描结果、漏洞扫描结果和签名信息等信息,并记录在第一融合镜像实例中,这样,有助于用户通过容器管理系统了解目标容器镜像的镜像信息。
25.另一种可能的实现方式中,创建与目标虚拟机镜像对应的第二融合镜像实例之后,方法还包括:创建与第二融合镜像实例关联的目标持久性卷;获取目标虚拟机镜像,并将目标虚拟机镜像上传至目标持久性卷;更新第二融合镜像实例,以使更新后的第二融合镜像实例包括目标持久性卷的标识,目标持久性卷的标识为存储地址。
26.该实现方式中,通过更新第二融合镜像实例,以使得更新后的第二融合镜像实例包括目标持久性卷的标识,从而实现通过目标持久性卷建立第二融合镜像实例与目标虚拟机镜像之间的映射关系,这样,有助于保证第二融合镜像实例与目标虚拟机镜像之间唯一对应,进而有助于提高虚拟机镜像的管理准确性。
27.另一种可能的实现方式中,该方法还包括:确定目标虚拟机镜像的上传结果;上传结果包括上传成功、上传失败和上传进度中的至少一项;更新第二融合镜像实例,以使更新后的第二融合镜像实例包括上传结果。
28.该实现方式中,通过更新第二融合镜像实例,以使得更新后的第二融合镜像实例包括目标虚拟机镜像的上传结果,这样,用户就可以通过查询第二融合镜像的信息,实现获知与第二融合镜像实例对应的目标虚拟机镜像的上传结果,有助于提高虚拟机镜像的管理便利性。
29.另一种可能的实现方式中,获取镜像上传指令,包括:显示第一界面;第一界面用于输入待上传镜像的镜像信息;基于第一界面,生成镜像上传指令;镜像上传指令包括目标虚拟机镜像的镜像信息。
30.该实现方式中,服务器集群通过显示第一界面,实现为用户提供输入待上传镜像的镜像信息的可视化界面,从而使得用户可以通过该可视化界面上传虚拟机镜像,有助于降低上传虚拟机镜像的操作难度。
31.另一种可能的实现方式中,该方法还包括:响应于目标操作,显示第二界面,所述第二界面包括至少一个融合镜像实例的镜像信息;所述至少一个融合镜像实例包括所述第一融合镜像实例和所述第二融合镜像实例;一个融合镜像实例的镜像信息包括该一个融合镜像实例的名称、镜像类型、命名空间名称、创建时间、更新时间、上传结果和镜像状态中的至少一项,所述上传结果包括上传进度或上传失败,所述镜像状态包括已占用、空闲中或不可用。
32.该实现方式中,服务器集群通过响应于用户的目标操作,显示第二界面,从而实现显示容器管理系统上已创建的至少一个融合镜像实例的镜像信息。一方面,实现了可视化显示融合镜像实例的镜像信息,且操作简单,另一方面,用户通过容器管理系统即可查询到容器镜像和虚拟机镜像的部分信息,如上传结果、镜像状态等,提高了容器镜像以及虚拟机镜像的管理便利性。
33.另一种可能的实现方式中,该方法还包括:响应于对第二界面上的目标融合镜像实例的触发操作,显示第三界面;第三界面包括目标融合镜像实例的镜像详情信息;若目标融合镜像实例为第一融合镜像实例,目标融合镜像实例的镜像详情信息包括镜像名称、镜像类型、命名空间名称、创建时间、更新时间、镜像状态、镜像地址、病毒扫描结果、漏洞扫描结果和签名信息中的至少一项;若目标融合镜像实例为第二融合镜像实例,目标融合镜像实例的镜像详情信息包括镜像名称、镜像类型、命名空间名称、创建时间、更新时间、镜像状态、镜像文件名称、目标持久性卷的名称和镜像文件大小中的至少一项。
34.该实现方式中,在用户触发容器管理系统上的目标融合镜像实例时,服务器集群为用户显示该目标融合镜像实例的镜像详情信息,这样,有助于用户了解该目标融合镜像实例所对应的容器镜像或虚拟机镜像的详细信息,从而使得用户可以通过容器管理系统可以查询到容器镜像和虚拟机镜像的更多信息,有助于进一步提高容器镜像以及虚拟机镜像的管理便利性。
35.另一种可能的实现方式中,该方法还包括:响应于对第二界面上的目标融合镜像实例的删除操作,删除目标融合镜像实例以及与目标融合镜像实例对应的虚拟机镜像或容器镜像;目标融合镜像实例为第一融合镜像实例或第二融合镜像实例。
36.该实现方式中,在用户指示删除容器管理系统上的目标融合镜像实例时,服务器集群不仅删除容器管理系统上的目标融合镜像实例,还会删除与目标融合镜像实例所对应的容器镜像或虚拟机镜像。基于此,一方面,用户可以通过删除容器管理系统上的融合镜像实例,实现删除镜像仓库中的容器镜像,提高了容器镜像的管理便利性。另一方面,服务器集群通过为用户提供可视化的删除操作界面,提高了容器镜像以及虚拟机镜像删除操作的便利性,降低了删除操作的难度。
37.另一种可能的实现方式中,若目标融合镜像实例为第一融合镜像实例;删除与目标融合镜像实例对应的容器镜像,包括:向镜像仓库发送镜像删除请求;镜像删除请求用于请求删除目标容器镜像,删除请求包括目标容器镜像在镜像仓库上的镜像地址。
38.该实现方式中,由于镜像地址指示了唯一的镜像,因此,通过向镜像仓库发送携带
镜像地址的删除请求,有助于提高删除操作的准确性。
39.另一种可能的实现方式中,若目标融合镜像实例为第二融合镜像实例,删除与目标融合镜像实例对应的虚拟机镜像,包括:删除存储地址指示的存储空间。
40.该实现方式中,在存储地址指示的存储空间仅用于存储目标虚拟机镜像时,通过删除地址指示的持久性卷,可以实现删除目标虚拟机镜像。
41.另一种可能的实现方式中,该方法还包括:获取第一部署模板;所述第一部署模板用于记载部署目标容器所需的部署信息,所述第一部署模板包括所述第一融合镜像实例的名称;获取与所述第一融合镜像实例对应的所述目标容器镜像在所述镜像仓库上的镜像地址;生成第二部署模板;所述第二部署模板包括所述目标容器镜像在所述镜像仓库上的镜像地址,所述第二部署模板用于部署所述目标容器。
42.该实现方式中,用户在部署目标容器的部署模板中指明要使用的融合镜像实例,服务器集群便可以自动为容器管理系统生成记载有目标容器镜像在镜像仓库上的镜像地址的部署模板,并基于该部署模板部署目标容器,提高容器部署的便利性。这样,用户就不必记住繁琐的镜像地址,只需了解容器镜像对应的融合镜像的名称即可,有助于提高用户对容器管理系统的使用体验。
43.另一种可能的实现方式中,生成第二部署模板,包括:若第一融合镜像实例还包括病毒扫描结果、且病毒扫描结果满足预设条件,生成第二部署模板;和/或若第一融合镜像实例还包括漏洞扫描结果、且漏洞扫描结果满足预设条件,生成第二部署模板;和/或若第一融合镜像实例还包括签名信息、且签名信息满足预设条件,生成第二部署模板。
44.该实现方式中,通过设置目标容器镜像的安全性满足条件,如,病毒扫描结果满足预设条件、漏洞扫描结果满足预设条件、签名信息满足预设条件等,生成第二部署模板,这样,有助于保证目标容器镜像的安全性,进而有助于保证目标容器的安全性。
45.另一种可能的实现方式中,该方法还包括:获取第三部署模板;第三部署模板用于记载部署目标虚拟机所需的部署信息,第三部署模板包括第二融合镜像实例的名称;获取与第二融合镜像实例对应的目标虚拟机镜像的目标地址;生成第四部署模板;第二部署模板包括目标虚拟机镜像的目标地址,第二部署模板用于部署目标虚拟机。
46.该实现方式中,用户只需在部署目标虚拟机的第三部署模板中指明要使用的融合镜像实例,服务器集群便可以自动为容器管理系统生成第四部署模板,由于该第四部署模板记载有存储目标虚拟机镜像的目标持久性卷的标,因此,服务器集群可以自动基于该第四部署模板为容器管理系统部署目标虚拟机,提高虚拟机部署的便利性。
47.第二方面,提供了一种镜像管理装置,该装置包括:用于执行第一方面提供的任意一种方法的功能单元,各个功能单元所执行的动作通过硬件实现或通过硬件执行相应的软件实现。例如,镜像管理装置可以包括:确定单元和创建单元;确定单元,用于确定目标容器镜像已上传至镜像仓库;创建单元,用于响应于该确定,根据融合镜像资源类型,创建与目标容器镜像对应的第一融合镜像实例;第一融合镜像实例包括目标容器镜像在镜像仓库的镜像地址。
48.第三方面,提供了一种服务器集群,服务器集群配置有容器管理系统,容器管理系统支持的资源类型包括融合镜像资源类型,融合镜像资源类型定义了创建融合镜像实例的配置内容。服务器集群包括控制节点和/或工作节点;控制节点和/或工作节点,用于确定目
标容器镜像已上传至镜像仓库;根据融合镜像资源类型,创建与目标容器镜像对应的第一融合镜像实例;该第一融合镜像实例包括目标容器镜像在镜像仓库的镜像地址。
49.需要说明的,在第三方面,控制节点和/或工作节点还可以用于执行上述第一方面中任意一种可能的实现方式,此处不再赘述。
50.第四方面,提供了一种计算机设备,该计算机设备,用于确定目标容器镜像已上传至镜像仓库;响应于该确定,根据融合镜像资源类型,创建与目标容器镜像对应的第一融合镜像实例;该第一融合镜像实例包括目标容器镜像在镜像仓库的镜像地址。
51.需要说明的,在第四方面,该计算机设备还可以用于执行上述第一方面中任意一种可能的实现方式,此处不再赘述。
52.第五方面,提供了一种计算机设备,包括:处理器和存储器,处理器与存储器连接。存储器用于存储计算机执行指令,处理器执行存储器存储的计算机执行指令,从而实现第一方面提供的任意一种方法。
53.第六方面,提供了一种芯片,芯片包括:处理器和接口电路;接口电路,用于接收代码指令并传输至处理器;处理器,用于运行代码指令以执行上述第一方面提供的任意一种方法。
54.第七方面,提供了一种计算机可读存储介质,存储有计算机执行指令,当计算机执行指令在计算机上运行时,使得计算机执行上述第一方面提供的任意一种方法。
55.第八方面,提供了一种计算机程序产品,包括计算机执行指令,当计算机执行指令在计算机上运行时,使得计算机执行上述第一方面提供的任意一种方法。
56.其中,第二方面至第八方面中任一种实现方式所带来的技术效果可参见第一方面中不同实现方式所带来的技术效果,此处不再赘述。
附图说明
57.图1为本技术实施例提供的一种服务器集群的架构图;
58.图2为本技术实施例提供的一种融合镜像控制器和镜像仓库控制器的工作原理图;
59.图3为本技术实施例提供的一种创建容器镜像对应的融合镜像实例的方法的流程图;
60.图4为本技术实施例提供的一种创建容器镜像对应的融合镜像实例的工作原理图;
61.图5为本技术实施例提供的一种第一界面的示意图;
62.图6为本技术实施例提供的一种创建虚拟机镜像对应的融合镜像实例的方法的流程图;
63.图7为本技术实施例提供的一种创建虚拟机镜像对应的融合镜像实例的工作原理图;
64.图8为本技术实施例提供的另一种第一界面的示意图;
65.图9为本技术实施例提供的一种查询融合镜像实例的流程图;
66.图10为本技术实施例提供的一种查询融合镜像实例的工作原理图;
67.图11为本技术实施例提供的一种第二界面的示意图;
registry service,cirs)的应用程序,可以同时管理多个容器镜像。一个镜像仓库通常包括多个镜像目录(或称之为project),每个镜像目录拥有独立的权限控制配置。
87.镜像存储库(repository):相同名称的一系列容器镜像的统称。镜像存储库通常包括镜像目录和镜像名称,中间用斜杠(即“/”)分割。
88.镜像标签(tag):用于标注镜像的版本,一个镜像标签通常会指向一个镜像摘要(digest)。
89.其中,镜像仓库中的任意一个容器镜像都具有唯一的镜像地址,镜像地址的格式与统一资源定位符(uniform resource locator,url)的格式相同。
90.在一个示例中,镜像地址的格式可以是http://docker.io/library/nginx:v1.0。其中,docker.io用于指示镜像仓库,library用于指示镜像目录,v1.0用于指示镜像标签。
91.在另一个示例中,镜像地址的格式可以是http://docker.io/library/nginx@sha256:xxx。其中,library/nginx用于指示镜像存储库,sha256:xxx用于指示镜像摘要。
92.基于角色的访问控制(role-based access control,rbac):是指对系统操作的各种权限不是直接授予具体的用户,而是在用户集合与权限集合之间建立一个角色集合(角色集合也即权限集合),并通过为用户关联一个角色,使得用户拥有该一个角色所具有的操作权限。其中,不同的角色具有不同的权限,不同的权限代表不同的可操作动作。
93.在容器管理系统的中,基于rbac机制,可以设置命名空间级别的角色和集群级别的角色。其中,命名空间级别的角色的作用范围是命名空间,集群级别的角色的作用范围是整个容器管理系统。换言之,在容器管理系统中,可以为不同的命名空间设置不同的操作权限。
94.网络钩子(web hook):是一种应用程序编程接口(application programming interface,api),它允许给定的全球广域网(world wide web,web)应用程序在发生预定义事件时将数据发送到另一个应用程序。
95.以下,对本技术实施例的应用场景进行示例性介绍。
96.当前,容器镜像通常存储在第三方镜像仓库,由于容器管理系统与第三方镜像仓库为不同的应用程序,因此,由于容器管理系统无法管理第三方镜像仓库中的容器镜像,这就导致容器镜像只能由第三镜像仓库进行管理。
97.在相关技术中,内存存储数据的原理是使用指针用存储内存地址,内存地址指向的内存空间存储数据,因此,通过指针可以指向一个内存空间中的数据。基于该原理,为了能够管理容器镜像,容器管理系统通常配置了内置镜像仓库(image registry)模块,由于内置镜像仓库模块为容器管理系统的一个功能模块,这样,容器管理系统就可以通过指针指向内置镜像仓库模块中的容器镜像,从而实现通过容器管理系统管理内置镜像仓库中的容器镜像。
98.然而,这种镜像管理方式,在配置内置镜像仓库模块时,需要新增存储设备用于存储容器镜像,导致管理成本较高,并且配置内置镜像仓库的操作也较复杂,导致管理难度比较大。
99.有鉴于此,本技术实施例提供了一种镜像管理方法,在目标容器镜像上传至镜像仓库的情况下,则服务器集群基于容器管理系统所支持的融合镜像资源类型,自动为容器管理系统创建第一融合镜像实例,该第一融合镜像实例包括目标容器镜像在镜像仓库上的
镜像地址。由于容器镜像具有唯一的镜像地址,换言之,不同容器镜像具有不同的镜像地址,因此,通过设置第一融合镜像实例包括目标容器镜像的镜像地址,可以建立第一融合镜像实例与目标容器镜像之间的对应关系,从而实现将目标容器镜像映射为容器管理系统上的资源实例,也即,第一融合镜像实例相当于是镜像仓库中的目标容器镜像在容器管理系统上的映射对象,从而也就建立了镜像仓库中的目标容器镜像与容器管理系统中的第一融合镜像实例之间的对应关系。基于此,可以建立镜像仓库中的多个容器镜像与容器管理系统中的多个融合镜像实例之间的一一对应关系,这样,就可以通过容器管理系统管理多个融合镜像实例,实现管理镜像仓库中的多个容器镜像。
100.例如,用户通过服务器集群查询容器管理系统上的第一融合镜像实例所包括的内容时,就可以根据第一融合镜像中的镜像地址确定第一融合镜像实例所对应是的目标容器镜像,进而确定第一融合镜像实例所包括内容是目标容器镜像的镜像信息,而非其他容器镜像的镜像信息,从而实现通过容器管理系统查询镜像仓库中任意一个指定容器镜像的镜像信息。用户通过服务器集群删除容器管理系统上的第一融合镜像实例时,容器管理系统可以通过第一融合镜像实例中的镜像地址,请求镜像仓库删除该镜像地址所指示的目标容器镜像,而非删除其他容器镜像,从而实现通过容器管理系统删除镜像仓库中任意一个指定容器镜像。
101.另外,该方案通过预先为容器管理系统创建融合镜像资源类型,即可以实现自动创建目标容器镜像在容器管理系统上的映射对象(即第一融合镜像实例),操作难度低,因此,有助于降低容器管理系统管理容器镜像时的管理难度。并且,由于不需要配置内置镜像仓库模块,即可通过管理容器管理系统上的融合镜像实例,实现管理镜像仓库中的容器镜像,因此,有助于降低容器管理系统管理容器镜像时的管理成本。
102.以下,对本技术实施例的系统架构进行示例性介绍。
103.本技术实施例提供的镜像管理方法,适用于服务器集群,该服务器集群配置有容器管理系统。
104.其中,容器管理系统用于对容器进行编排、管理和调度。示例性的,容器管理系统可以是kubernetes(简称k8s),docker swarm,apache mesos等。
105.需要说明的,本技术实施例对容器管理系统的类型不做限制,以上仅为示例性说明。以下,仅以容器管理系统为k8s为例进行说明。
106.以下,对容器管理系统的相关概念进行示例性介绍。
107.控制节点(master):是容器管理系统的控制平面,负责整个容器管理系统的管理和控制。
108.工作节点(node):是容器管理系统的数据平面,负责为容器或虚拟机提供运行环境。
109.存储系统:用于存储容器管理系统的全部数据,如,各种资源实例的信息等。其中,api组件为存储系统的唯一入口,换言之,api组件可以直接访问该存储系统,进行数据读取或数据存储,容器管理系统上的其他组件或控制器则需通过api组件访问存储系统。
110.api组件:是容器管理系统的唯一入口,用于接收指示容器管理系统执行的操作指令等。
111.控制器(controller):用于实现用户对资源的实例的管理策略,以使得资源的实
例的状态与用户的期望状态一致。可以理解的,容器管理系统支持用户自定义控制器,换言之,用户可以为容器管理系统新增控制器。示例性的,本技术实施例中的融合镜像控制器、镜像仓库控制器、目标控制器等即为用户创建的自定义控制器。
112.例如,pod的控制器(replicaset,简称rs)负责维护集群中运行的pod数量。node的控制器负责监控节点的状态,并在节点出现故障时及时做出响应。通常,容器管理系统上,每个控制器只负责某种资源类型对应的实例的管理。
113.自定义资源的定义(custom resource definition,crd):是容器管理系统内置的一种资源类型,用于描述用户创建的资源类型应该包括哪些内容,换言之,crd定义了创建资源类型的配置内容。用户基于crd,可以为容器管理系统增加新的资源类型。示例性的,本技术实施例中的融合镜像资源类型,即为用户基于crd,为容器管理系统增加的新的资源类型。
114.自定义资源(custom resource,cr):是指用户为容器管理系统新增的资源。在容器管理系统中,所有内容都被抽象为“资源”,如,容器组(pod)、工作节点(node)等。示例性的,本技术实施例中的融合镜像资源类型即可用于创建融合镜像资源。
115.其中,“资源”的实例是指持久化的实体,也称为“对象”,如某个具体的pod,某个具体的node等。示例性的,本技术实施例中的融合镜像实例即为“融合镜像资源”的实例。
116.可以理解的,“资源”是对容器管理系统中的内容的抽象描述。“实例/对象”是指容器管理系统中一个具体的内容。
117.命名空间(namespace):用于隔离pod的运行环境。可以理解,容器管理系统支持用户自定义命名空间,换言之,用户可以为容器管理系统新增命名空间。
118.容器化数据导入器(containerized-data-importer,cdi):是一种持久性存储管理插件,提供了自动生成持久性卷声明(persisten volume claim,pvc),并基于该持久性卷声明,自动向容器管理系统申请用于存储虚拟机镜像的持久性卷(persisten volume,pv)的方法。
119.命令行工具(kuberctl):用于输入用户需要容器管理系统执行的操作指令。
120.容器引擎(docker):负责工作节点上的容器的各种操作。
121.代理组件(kubelet):负责维护容器的生命周期,如,通过控制容器引擎实现创建、更新、销毁容器等。
122.在一些实施例中,服务器集群包括多个控制节点(master)和多个工作节点(node)。在另一些实施例中,服务器集群包括一个控制节点和至少一个工作节点。其中,容器管理系统部署于控制节点和/或工作节点上。在又一些实施例中,服务器集群仅包括一个控制节点。其中,容器管理系统部署于控制节点上。换言之,该控制节点既是容器管理系统的控制平面,又是容器管理系统的数据平面。
123.示例性的,控制节点、工作节点可以是计算机设备或虚拟机。
124.需要说明的,本技术实施例对服务器集群的控制节点、工作节点的数量不做限制,以上仅为示例性说明。
125.以下,仅以服务器集群包括一个控制节点和至少一个工作节点对容器管理系统进行说明。
126.如图1所示,为一种服务器集群的架构图。该服务器集群包括控制节点和工作节
点。其中,控制节点、工作节点与部署镜像仓库的目标计算机设备通信连接。需要说明的,镜像仓库可以部署于服务器集群的节点上,或者,也可以部署于服务器集群外的其他计算机设备。换言之,目标计算机设备可以服务器集群的节点,或者,也可以是该其他计算机设备。
127.在一些实施例中,控制节点包括主机设备和显示设备,主机设备与显示设备连接。
128.其中,主机设备用于执行操作指令。显示设备用于显示命令行工具(kuberctl)的界面、镜像管理界面等。
129.示例性的,镜像管理界面可以是下述实施例中第一界面、第二界面、第三界面等。
130.需要说明的,工作节点也可以包括主机设备和显示设备,工作节点的主机设备和显示设备的相关说明可以参考上述内容,此处不再赘述。
131.可选地,容器管理系统包括存储系统,如,etcd存储系统。
132.示例性的,存储系统可以部署于控制节点上,或者,该存储系统也可以部署于控制节点之外的存储设备上,此时,该其他存储设备与控制节点通信连接。
133.需要说明的,本技术实施例对存储系统的部署位置不做限制,以上仅为示例性说明。以下,仅以存储系统部署于控制节点为例进行说明。
134.可选地,容器管理系统包括api组件、代理组件和容器引擎。其中。api组件所执行的动作由控制节点实现或控制节点执行相应的软件程序实现。代理组件、容器引擎所执行的动作由工作节点实现或工作节点执行相应的软件程序实现。
135.可选地,容器管理系统还包括镜像管理模块。其中,镜像管理模块用于控制显示设备显示镜像管理界面。本技术实施例对实现镜像管理模块所执行动作的节点不做限制,图1以镜像管理模块所执行的动作由控制节点为例进行说明。
136.可选地,容器管理系统还包括融合镜像控制器(fusionimage controller)。其中,融合镜像控制器所执行的动作将在后续实施例中结合图2进行说明,此处不再赘述。
137.需要说明的,本技术实施例对实现融合镜像控制器所执行动作的节点不做限制,图1以融合镜像控制器所执行的动作由控制节点实现为例进行说明。
138.可选地,容器管理系统还包括镜像仓库控制器(registry controller)。其中,镜像仓库控制器的所执行的动作将在后续实施例中结合图2进行说明,此处不再赘述。
139.需要说明的,本技术实施例对实现镜像仓库控制器所执行动作的节点不做限制,图1以镜像仓库控制器所执行的动作由控制节点实现为例进行说明。
140.可以理解的,融合镜像控制器、镜像仓库控制器所执行的动作可以由相同的节点(控制节点、工作节点等)实现,或者,也可以由不同的节点实现,本技术实施例对此不做限制。
141.可选地,容器管理系统还包括目标控制器,该目标控制器用于执行融合镜像控制器以及镜像仓库控制器所执行的操作,换言之,目标控制器不仅能够实现融合镜像控制器所实现功能,也可以实现镜像仓库控制器所实习的功能。
142.同理的,本技术实施例对实现目标控制器所执行动作的节点也不做限制,示例性的,目标控制器所执行的动作可以由控制节点实现,或者,也可以由工作节点实现。
143.需要说明的,以下仅以容器管理系统包括融合镜像控制器和镜像仓库控制器为例,对本技术实施例进行示例性说明。
144.如图2所示,为融合镜像控制器和镜像仓库控制器的工作原理图。
145.在一些实施例中,融合镜像控制器可以用于监听数据卷的更新事件,并将数据卷的更新内容更新到与数据卷对应的融合镜像实例中。
146.其中,融合镜像控制器还可以用于上传虚拟机镜像、基于融合镜像资源类型创建与虚拟机镜像对应的融合镜像实例、创建与融合镜像实例对应的数据卷(data volume,dv),从而实现触发cdi创建持久性卷声明以及根据持久性卷声明申请目标持久性卷。
147.其中,融合镜像控制器还可以用于管理融合镜像实例,如,查询融合镜像实例的镜像信息、删除融合镜像实例等。
148.其中,融合镜像控制器还可以用于监控融合镜像实例的创建事件、更新事件、删除事件等,以及根据融合镜像实例的镜像类型获取新创建的融合镜像实例的镜像信息,并将获取到的镜像信息更新到该新创建的融合镜像实例中。
149.在一些实施例中,镜像仓库控制器可以用于监听命名空间的创建事件、删除事件等,以及在镜像仓库中创建镜像目录和删除镜像目录,以使容器管理系统上的命名空间与镜像仓库上的镜像目录一一对应。
150.其中,镜像仓库控制器还可以用于监听镜像仓库上的容器镜像推送事件,以及在镜像仓库有新推送的容器镜像时,基于融合镜像资源类型创建与该容器镜像对应的融合镜像实例。
151.需要说明的,本技术实施例描述的系统架构以及应用场景是为了更加清楚的说明本技术实施例的技术方案,并不构成对于本技术实施例提供的技术方案的限定,本领域普通技术人员可知,随着系统架构的演变和新业务场景的出现,本技术实施例提供的技术方案对于类似的技术问题,同样适用。
152.为了便于理解,以下结合附图对本技术提供的镜像管理方法进行示例性介绍。该方法适用于图1所示的服务器集群。
153.本技术以下实施例将分成三个部分对镜像管理方法的方案进行示例性介绍。
154.第一部分,结合图3至图8,介绍服务器集群基于容器管理系统所支持的融合镜像资源类型,创建容器镜像对应的融合镜像,以及虚拟机镜像对应的融合镜像的过程。
155.第二部分,结合图9至图16,介绍服务器集群基于容器管理系统上的融合镜像实例(如第一融合镜像、第二融合镜像)管理(如查询、删除等)容器镜像、虚拟机镜像的过程。
156.第三部分,结合图17至图19,介绍服务器集群基于容器管理系统上的融合镜像(如第一融合镜像、第二融合镜像)部署容器、虚拟机的过程。
157.首先,结合图3至图5,对本技术实施例的第一部分中,服务器集群基于容器管理系统所支持的融合镜像资源类型,创建容器镜像对应的融合镜像的过程进行示例性介绍。
158.图3是根据一示例性实施例示出的一种创建容器镜像对应的融合镜像实例的方法的流程图。示例性的,该方法包括s301-s304。
159.可选地,容器管理系统支持的资源类型包括融合镜像资源类型。其中,融合镜像资源类型定义了创建融合镜像实例的配置内容,换言之,融合镜像资源类型描述了基于该资源类型所创建的资源实例包括哪些内容。
160.可以理解的,融合镜像资源类型为用户基于crd,创建的自定义资源类型。对于融合镜像资源类型的创建过程,可以参考相关技术中基于crd创建资源类型的过程,此处不再赘述。
161.可选地,本技术实施例可以由控制节点实现,或者,也可以由工作节点实现。以下,仅以本技术实施例由控制节点实现为例进行说明。
162.s301:控制节点确定目标容器镜像上传至镜像仓库。
163.其中,目标容器镜像是镜像仓库上任意一个新增的容器镜像,或者,目标容器镜像为新增容器镜像或已上传容器镜像等。
164.在一些实施例中,该镜像仓库为第三方镜像仓库,如harbor,quay等。其中,该镜像仓库的类型可以私有镜像仓库,或者,也可以是共有镜像仓库。
165.需要说明的,第三方镜像仓库可以部署于服务器集群内的节点上,或者,也可以部署于服务器集群外的计算机设备上,如,镜像仓库系统的节点上。另外,在第三方镜像仓库部署于服务器集群外时,部署第三方镜像仓库的计算机设备与服务器集群通信连接。
166.可选地,s301具体包括:控制节点接收镜像仓库发送的通知信息,该通知信息用于通知目标容器镜像已上传至镜像仓库。
167.在一些实施例中,镜像仓库中发生容器镜像推送事件时,镜像仓库所在的目标计算机设备向控制节点发送通知信息,用于通知容器镜像已上传至镜像仓库。控制节点基于接收到的通知信息,可以确定镜像仓库新增了容器镜像。
168.可选地,镜像仓库配置有第一网络钩子(webhook),用于在镜像仓库发生容器镜像推送事件时,向服务器集群发送通知信息,以通知服务器集群上的容器管理系统,镜像仓库有新增的容器镜像。
169.如图4所示,为创建容器镜像对应的融合镜像实例的工作原理图。
170.在一些实施例中,参见图4,s301的实现过程包括:第一网络钩子监控到目标容器镜像推送到镜像仓库后,向镜像仓库控制器发送通知信息,以通知目标容器镜像已上传至镜像仓库,该通知信息包括目标容器镜像在镜像仓库上的镜像地址。
171.可选地,s301具体包括:控制节点获取镜像推送指令,该镜像推送指令指示了目标容器镜像已上传至镜像仓库。
172.在一些实施例中,镜像推送指令还包括镜像类型标识,该镜像类型标识指示了容器镜像。
173.在一些实施例中,镜像推送指令还包括目标容器镜像在镜像仓库中的镜像地址。
174.在一些实施例中,获取镜像推送指令的实现过程包括:用户通过镜像管理模块提供的可视化界面(即第一界面),向api组件发送推送指令。
175.示例性的,该第一界面可以是如图5所示的界面。其中,“推送镜像到当前镜像目录”用于指示镜像地址,例如,镜像地址可以是“docker push source_image[:tag]
……”

[0176]
需要说明的,若目标节点为工作节点,获取镜像推送指令的实现过程还包括:api组件向融合镜像控制器转发该镜像推送指令。
[0177]
s302:控制节点响应于该确定,根据融合镜像资源类型,创建与目标容器镜像对应的第一融合镜像实例。
[0178]
其中,第一融合镜像实例包括目标容器镜像在镜像仓库上的镜像地址。该镜像地址指示了镜像仓库上唯一的容器镜像(即目标容器镜像)。
[0179]
可选地,第一融合镜像实例还包括目标容器镜像的名称。这样,可以建立第一融合镜像实例与目标容器镜像之间的映射关系,且有助于包括第一融合镜像实例对应唯一的容
器镜像(即目标容器镜像)。
[0180]
可选地,第一融合镜像实例的名称与目标容器镜像的名称相同。这样,可以建立第一融合镜像实例与目标容器镜像之间的映射关系,且有助于包括第一融合镜像实例对应唯一的容器镜像(即目标容器镜像)。
[0181]
在一些实施例中,通知信息包括目标容器镜像在镜像仓库上的镜像地址,控制节点接收到通知信息后,解析该通知信息,得到目标容器镜像的镜像地址。基于此,控制节点创建第一融合镜像实例时,可以配置第一融合镜像实例包括目标容器镜像在镜像仓库上的镜像地址。
[0182]
在另一些实施例中,镜像推送指令包括目标容器镜像在镜像仓库上的镜像地址。控制节点接收到镜像推送指令后,解析该镜像推送指令,得到目标容器镜像的镜像地址。基于此,控制节点创建第一融合镜像实例时,可以配置第一融合镜像实例包括目标容器镜像在镜像仓库上的镜像地址。
[0183]
在一些实施例中,参见图4,s302的实现过程包括:镜像仓库控制器向api组件发送融合镜像创建指令,以指示api组件创建第一融合镜像实例,该融合镜像创建指令包括目标容器镜像在镜像仓库上的镜像地址。
[0184]
api组件接收到融合镜像创建指令后,根据融合镜像资源类型所定义的配置内容,自动创建与目标容器镜像对应的第一融合镜像实例。api组件创建第一融合镜像实例后,将第一融合镜像实例存储至存储系统。
[0185]
在另一些实施例中,s302的实现过程包括:镜像仓库控制器根据融合镜像资源类型所定义的配置内容,自动创建与目标容器镜像对应的第一融合镜像实例。
[0186]
其中,镜像仓库控制器在创建第一融合镜像之后,向api发送存储指令,该存储包括第一融合镜像实例,用于指示api组件将第一融合镜像存储至存储系统。
[0187]
需要说明的,基于融合镜像资源类型创建融合镜像实例的过程,可以参考相关技术中基于资源类型创建资源实例(也可以称为资源对象)的过程,二者原理相同,此处不再赘述。
[0188]
示例性的,融合镜像资源类型的核心架构如下所示:
[0189]
[0190]
[0191][0192]
...
[0193]
可选地,融合镜像资源类型包括容器镜像的镜像地址。换言之,在基于融合镜像资源类型创建与容器镜像对应的融合镜像实例时,应指明容器镜像的镜像地址。
[0194]
示例性的,上述核心架构中“url:(此处填写容器镜像的镜像地址);description:'容器镜像的url,格式为xxx@sha256:xxx'”用于指明容器镜像的镜像地址。
[0195]
可选地,融合镜像资源类型还包括镜像文件的大小、通过摘要值拉取镜像的命令、镜像标签信息、标签名称、最近一次拉取时间、最近一次推送时间、通过标签拉取镜像的命令、病毒扫描信息、漏洞扫描信息、签名信息中的至少一项。
[0196]
示例性的,上述核心架构中“size:(此处填写镜像文件的大小);description:'镜像的大小'”指明容器镜像的镜像文件的大小。“pullcommand:(此处填写拉取命令);description:'通过摘要值拉取该镜像的命令'”指明通过摘要值拉取镜像的命令。“tags:(此处填写镜像标签信息);description:'镜像tag信息'”指明镜像标签信息。“name:(此处填写标签名称);description:'tag名称'”指明标签名称。“pulltime:(此处填写拉取时间);description:'最近一次pull的时间'”用于指明最近一次拉取时间。“pushtime:(此处填写推送时间);description:'最近一次push的时间'”用于指明最近一次推送时间。“pullcommand:(此处填写拉取命令);description:'通过tag拉取该镜像的命令'”用于指明标签拉取镜像的命令。
[0197]
上述实施例中,在目标容器镜像上传至镜像仓库的情况下,则服务器集群基于容器管理系统所支持的融合镜像资源类型,自动创建第一融合镜像实例,该第一融合镜像实例包括目标容器镜像在镜像仓库上的镜像地址。由于容器镜像具有唯一的镜像地址,换言之,不同容器镜像具有不同的镜像地址,因此,通过设置第一融合镜像实例包括目标容器镜像的镜像地址,可以建立第一融合镜像实例与目标容器镜像之间的对应关系,从而实现将目标容器镜像映射为容器管理系统上的资源实例,也即,第一融合镜像实例相当于是镜像
仓库中的目标容器镜像在容器管理系统上的映射对象,从而也就建立了镜像仓库中的目标容器镜像与容器管理系统中的第一融合镜像实例之间的对应关系。基于此,可以建立镜像仓库中的多个容器镜像与容器管理系统中的多个融合镜像实例之间的一一对应关系,这样,就可以通过容器管理系统管理多个融合镜像实例,实现管理镜像仓库中的多个容器镜像。
[0198]
示例性的,用户通过服务器集群查询容器管理系统上的第一融合镜像实例所包括的内容时,就可以根据第一融合镜像中的镜像地址确定第一融合镜像实例所对应的是目标容器镜像,进而确定第一融合镜像实例所包括内容是目标容器镜像的镜像信息,而非其他容器镜像的镜像信息,从而实现通过容器管理系统查询镜像仓库中任意一个指定容器镜像的镜像信息。用户通过服务器集群删除容器管理系统上的第一融合镜像实例时,服务器集群可以通过第一融合镜像实例中的镜像地址,请求镜像仓库删除该镜像地址所指示的目标容器镜像,而非删除其他容器镜像,从而实现通过容器管理系统删除镜像仓库中任意一个指定容器镜像。
[0199]
另外,该方案通过预先为容器管理系统创建融合镜像资源类型,即可以实现自动创建目标容器镜像在容器管理系统上的映射对象(即第一融合镜像实例),操作难度低,因此,有助于降低容器管理系统管理容器镜像时的管理难度。并且,由于不需要配置内置镜像仓库模块,用户便可以通过管理容器管理系统上的融合镜像实例,实现管理镜像仓库中的容器镜像,因此,有助于降低容器管理系统管理容器镜像时的管理成本。
[0200]
可选地,在执行s301之前,创建容器镜像对应的融合镜像实例的方法还包括以下s201至s202。
[0201]
s201:控制节点若监听到目标命名空间的创建事件,向镜像仓库发送目录创建请求;该目录创建请求用于请求创建目标镜像目录。
[0202]
其中,目标创建请求包括目标镜像目录的名称,目标镜像目录的名称与目标命名空间的名称相同。通过设置目标镜像目录的名称与目标命名空间的名称相同,这样,有助于建立目标镜像目录与目标命名空间之间的对应关系。
[0203]
在一些实施例中,用户需要在容器管理系统上创建目标命名空间,或,需要在镜像仓库上创建目标镜像目录是,可以通过命令行工具(kuberctl)向api组件发送空间创建指令,该空间创建指令包括目标命名空间的名称(目标命名空间的名称与目标镜像目录的名称相同),用于指示api组件创建目标命名空间。api组件创建目标命名后,控制节点则会监听到目标命名空间的创建时间。
[0204]
在一些实施例中,控制节点监听到目标命名空间的创建事件后,则向镜像仓库发送目录创建请求,以请求镜像仓库创建与目标命名空间相对应的目标镜像目录。
[0205]
在另一些实施例中,控制节点监听到目标命名空间的创建事件后,向镜像仓库发送目录查询请求,以请求查询镜像仓库上是否存在目标镜像目录,换言之,请求查询是否存在与目标命名空间的名称相同的镜像目录。若镜像仓库不存在目标镜像目录,则向镜像仓库发送目录创建请求,以请求镜像仓库创建目标镜像目录。反之,不发送目标创建请求。
[0206]
在一个示例中,参见图4,s201的实现过程包括:镜像仓库控制器监听api组件执行的命名空间的创建事件。基于此,api组件创建目标命名空间后,向镜像仓库控制器发送第二通知信息,该第二通知信息包括目标命名空间的名称,用于通知目标命名空间创建成功。
[0207]
镜像仓库控制器接收到第二通知信息后,向镜像仓库发送目录创建请求,该目标创建请求包括目标镜像目录的名称,用于请求创建目标镜像目录。
[0208]
上述实施例中,服务器集群若监听到容器管理系统上的目标命名空间的创建事件,则自动向镜像仓库发送目录创建请求,以请求镜像仓库创建与目标命名空间相对应的目标镜像目录。一方面,用户需要在镜像仓库创建镜像目录时,可以通过为容器管理系统创建命名空间实现,提高了容器管理系统的管理能力。另一方面,通过创建相对应的目标命名空间和目标镜像目录,这样,可以通过管理容器管理系统上的命名空间实现管理镜像仓库上的镜像目录,提高了容器管理系统的管理范围。
[0209]
s202:控制节点接收镜像仓库返回的目录创建结果,该目录创建结果包括创建成功或创建失败。
[0210]
可以理解的,若创建结果为创建失败,控制节点可以重新向镜像仓库发送目录创建请求。这样,有助于提高目标镜像目录的创建成功率。
[0211]
在一些实施例中,目录创建结果还包括创建失败原因。例如,若镜像仓库上已存在目标镜像目录,则镜像仓库无法成功创建目标镜像目录。
[0212]
可以理解的,若创建失败的原因为镜像仓库已存在目标镜像目录,则无论目标节点向镜像仓库发送多少次目标创建请求,创建的结果都会是创建失败。因此,通过设置目标创建结果还包括创建失败原因,有助于避免目标节点在非必要的情况下重复发送目录创建请求。
[0213]
在一个示例中,如图4所示,s202的实现过程包括:镜像仓库执行完目标镜像目录的创建动作后,确定目标镜像目录的创建结果,并向镜像仓库控制器返回该目录创建结果。基于此,镜像仓库控制器接收镜像仓库返回的目录创建结果。
[0214]
上述实施例中,通过接收镜像仓库返回的目录创建结果,有助于服务器集群了解目标镜像目录的创建情况,这样,可以在创建失败的情况下,重新发送目标创建请求,有助于提高目标镜像目录的创建成功率。
[0215]
可选地,目标容器镜像属于镜像仓库上的目标镜像目录。
[0216]
s302具体包括:控制节点创建属于目标命名空间的第一融合镜像实例。
[0217]
其中,目标命名空间是容器管理系统上与目标镜像目录唯一对应的命名空间。
[0218]
在一些实施例中,控制节点可以通过目标容器镜像的镜像地址,确定目标容器镜像所属的镜像目录为目标镜像目录。基于此,可以在用于创建第一融合镜像实例的配置文件中指明第一融合镜像实例所属的命名空间的名称(即目标命名空间的名称,也即,目标镜像目录的名称),从而实现创建属于目标命名空间的第一融合镜像实例。
[0219]
需要说明的,创建属于目标命名空间的第一融合镜像实例的具体实现过程,可以参考相关技术中容器管理系统创建属于特定命名空间的资源实例,二者原理相同,此处不再赘述。
[0220]
上述实施例中,在目标容器镜像属于目标镜像目录时,服务器集群为容器管理系统创建属于目标命名空间的第一融合镜像实例,从而使得目标容器镜像与第一融合镜像相对应,且目标容器镜像所属的镜像目录(即目标镜像目录)与第一融合镜像所属的命名空间(即目标命名空间)相对应,这样,服务器集群可以通过容器管理系统的rbac机制,为目标命名空间设置管理权限,从而实现为属于目标命名空间的融合镜像设置管理权限,进而实现
为目标镜像目录中的容器镜像设置管理权限,这样,有助于提高容器镜像管理的灵活性。
[0221]
可选地,该镜像管理方法还包括:控制节点若监听到目标命名空间的删除事件,向镜像仓库发送目录删除请求;目录删除请求用于请求删除目标镜像目录。
[0222]
其中,目录删除请求包括目标命名空间的名称,换言之,目标删除请求包括目标镜像目录的名称。
[0223]
在一些实施例中,用户需要删除镜像仓库中属于目标镜像目录的全部容器镜像时,可以通过命令行工具向api组件发送空间删除指令,该空间删除指令包括目标命名空间的名称(目标命名空间的名称与目标镜像目录的名称相同),用于指示api组件删除目标命名空间。
[0224]
在一些实施例中,控制节点监听目标命名空间的删除事件的实现过程包括:镜像仓库控制器监听api组件执行的命名空间的删除事件。基于此,api组件删除目标命名空间后,向镜像仓库控制器发送第三通知信息,该第三通知信息包括目标命名空间的名称,用于通知目标命名空间已删除。
[0225]
镜像仓库控制器接收到第三通知信息后,则向镜像仓库发送目录删除请求,该目录删除请求包括目标命名空间的名称(也即目标镜像目录的名称),用于请求镜像仓库删除与目标命名空间相对于的目标镜像目录。
[0226]
上述实施例中,服务器集群若监听到容器管理系统的目标命名空间的删除事件,则自动向镜像仓库发送目录删除请求,以请求镜像仓库删除与目标命名空间相对应的目标镜像目录。一方面,用户需要删除镜像仓库上的镜像目录时,可以通过删除容器管理系统上的命名空间实现,提高了容器管理系统的管理范围。另一方面,通过设置目标命名空间中的融合镜像实例与目标镜像目录中的容器镜像一一对应,这样,若用户删除目标镜像目录中的全部容器镜像时,不必逐一删除容器管理系统中与每个容器镜像对应的融合镜像实例,而是可以通过向删除容器管理系统的目标命名空间,从而实现通过自动删除镜像仓库上的目标镜像目录中的全部容器镜像,有助于提高容器镜像的管理效率。
[0227]
可选地,第一融合镜像实例包括目标容器镜像的镜像信息。这样,用户通过查询容器管理系统上的第一融合镜像实例所包括的内容,即可了解目标容器镜像的镜像信息,有助于提高容器镜像管理的便利性。
[0228]
在一些实施例中,镜像仓库所在的目标计算机设备向控制节点发送的通知信息包括目标容器镜像的镜像信息,或者,镜像推送指令包括目标容器镜像的镜像信息。
[0229]
在另一些实施例中,服务器集群创建第一融合镜像实例后,向镜像仓库所在的目标计算机设备获取目标容器镜像的镜像信息。基于此,创建容器镜像对应的融合镜像实例的方法还可以包括以下s303-s304。
[0230]
(可选地)s303:控制节点从镜像仓库获取目标容器镜像的镜像信息。
[0231]
可选地,目标容器镜像的镜像信息包括目标容器镜像的病毒扫描结果、漏洞扫描结果和签名信息中的至少一项。
[0232]
可选地,目标容器镜像的镜像信息还可以包括目标容器镜像的上传时间(也可以称为创建时间)、镜像名称、镜像状态、更新时间、适用的处理器架构信息中的至少一项。这样,通过将目标容器镜像的镜像信息更新至第一融合镜像实例中,有助于用户通过第一融合镜像实例,了解目标容器镜像的详细信息。
[0233]
可选地,目标容器镜像的镜像信息还可以包括镜像文件的大小、通过摘要值拉取镜像的命令、镜像标签信息、标签名称、最近一次拉取时间、最近一次推送时间、通过标签拉取镜像的命令、病毒扫描信息、漏洞扫描信息、签名信息中的至少一项。
[0234]
在一些实施例中,参见图4,s303的实现过程包括:融合镜像控制器监听api组件是否执行了融合镜像创建事件。基于此,api创建第一融合镜像实例或接收到镜像仓库控制器发送的第一融合镜像实例后,向融合镜像控制器发送第一通知信息,该第一通知信息包括与第一融合镜像实例对应的目标容器镜像的镜像地址,用于通知已创建第一融合镜像实例。
[0235]
融合镜像控制器接收到第一通知信息后,向镜像仓库发送获取请求,该获取请求包括目标容器镜像的镜像地址,用于请求获取目标容器镜像的镜像信息。镜像仓库接收到获取请求后,向融合镜像控制器返回获取请求中的镜像地址所指示的容器镜像(即目标容器镜像)的镜像信息,融合镜像控制器接收镜像仓库发送的目标容器镜像的镜像信息。
[0236]
(可选地)s304:控制节点更新第一融合镜像实例,以使更新后的第一融合镜像实例包括目标容器镜像的镜像信息。
[0237]
在一些实施例中,s304的实现过程包括:融合镜像控制器向api组件发送融合镜像更新指令,该融合镜像更新指令包括目标容器镜像的镜像信息和第一融合镜像实例的名称,用于指示api组件将目标容器镜像的镜像信息更新至第一融合镜像实例中。
[0238]
api组件接收到融合镜像更新指令后,从存储系统中获取第一融合镜像实例,并将目标容器镜像的镜像信息写入第一融合镜像实例中,以对第一融合镜像实例进行更新,这样,得到的更新后的第一融合镜像实例就包括了目标容器镜像的镜像信息。之后,api组件将更新后第一融合镜像实例存储至存储系统中。另外,api组件还可以在更新后的第一融合镜像实例中写入更新时间,这样,有助于用户了解不同版本的第一融合镜像实例的生成时间。
[0239]
需要说明的,融合镜像实例(如第一融合镜像实例、第二融合镜像实例)的更新过程后续不再赘述。
[0240]
上述实施例中,通过获取目标容器镜像的病毒扫描结果、漏洞扫描结果和签名信息等镜像信息,并将这些镜像信息记录在第一融合镜像实例中,这样,有助于用户通过容器管理系统了解目标容器镜像的镜像信息,例如,用户可以向服务器集群发送第一融合镜像实例的查询指令,实现获知目标容器镜像的病毒扫描结果、漏洞扫描结果和签名信息等镜像信息。
[0241]
另外,容器管理系统在需要使用目标容器镜像部署容器时,可以通过目标容器镜像的病毒扫描结果、漏洞扫描结果和签名信息等信息,确定目标容器镜像的安全性,以便在目标容器镜像的安全性满足要求时,才使用目标容器镜像部署容器,这样,有助于保证基于目标容器镜像部署的容器的运行稳定性和安全性。
[0242]
以下,结合图6至图8,对本技术实施例的第一部分中,服务器集群基于容器管理系统所支持的融合镜像资源类型,为容器管理系统创建虚拟机镜像对应融合镜像实例的过程进行示例性介绍。
[0243]
需要说明的,创建虚拟机镜像对应融合镜像实例的过程,与创建容器镜像对应的融合镜像的过程,在执行顺序上不分先后。
[0244]
图6是根据一示例性实施例示出的一种创建虚拟机镜像对应的融合镜像实例的方法的流程图。示例性的,该方法包括s601-s607。
[0245]
可选地,融合镜像实例的镜像类型包括容器镜像或虚拟机镜像。其中,第一融合镜像实例的镜像类型为容器镜像。
[0246]
其中,若融合镜像实例的镜像类型为容器镜像,则该融合镜像实例是容器镜像在容器管理系统上的映射对象。若融合镜像实例的镜像类型为虚拟机镜像,则该融合镜像实例是虚拟机镜像在容器管理系统上的映射对象。
[0247]
可选地,融合镜像资源类型定义的创建融合镜像实例的配置内容包括镜像类型。示例性的,上述融合镜像资源类型的核心架构中的“type:(此处填写镜像类型);description:'镜像的类型,dockerimage(容器镜像)或vmimage(虚拟机镜像)'”用于指明镜像类型。这样,在基于融合镜像资源类型创建融合镜像实例时,便可以自动指明创建的融合镜像实例的镜像类型,有助于提高融合镜像实例的镜像类型的确定便利性。
[0248]
s601:控制节点获取镜像上传指令,该镜像上传指令指示了上传目标虚拟机镜像。
[0249]
其中,镜像上传指令包括镜像类型标识,该镜像类型标识指示的镜像类型为虚拟机镜像。
[0250]
其中,目标虚拟机镜像是待上传至容器管理系统的任意一个虚拟机镜像,或者,目标虚拟机镜像为待上传虚拟机镜像等。
[0251]
可选地,镜像上传指令包括目标虚拟机镜像的镜像信息。这样,在响应于该镜像上传指令,创建第二融合镜像实例时,可以将目标虚拟机镜像的镜像信息记载到第二融合镜实例中,以使得第二融合镜像实例可以包括目标虚拟机镜像的镜像信息,从而使得用户可以通过查询第二融合镜像实例,获知目标虚拟机镜像的镜像信息,有助于提高虚拟机镜像管理的便利性。
[0252]
在一些实施例中,s601的实现过程包括:用户通过命令行工具向api组件发送镜像上传指令,该镜像上传指令包括目标虚拟机镜像的镜像信息,用于指示上传目标虚拟机镜像。
[0253]
需要说明的,若目标节点为工作节点,s601的实现过程还包括:api组件获取到镜像上传指令后,向融合镜像控制器转发该镜像上传指令。
[0254]
在另一些实施例中,s601的实现过程包括:用户通过镜像管理模块提供的可视化界面(如第一界面)上传虚拟机镜像。基于此,s601具体包括以下s601a-s602b。
[0255]
s601a:控制节点显示第一界面,该第一界面用于输入待上传镜像的镜像信息。
[0256]
其中,待上传镜像的镜像信息包括待上传镜像的镜像类型标识。
[0257]
如图7所示,为创建虚拟机镜像对应的融合镜像实例的工作原理图。
[0258]
在一些实施例中,参见图7,s601a的实现过程包括:镜像管理模块控制显示设备显示控制(console)界面,console界面包括镜像上传按钮,用户点击镜像上传按钮,镜像管理模块响应于该点击操作,控制显示设备显示第一界面(即镜像上传界面)。之后,用户可以在该第一界面上输入待上传镜像的镜像信息(即目标虚拟机镜像的镜像信息)。
[0259]
如图8所示,为一种第一界面的示意图。
[0260]
可选地,待上传镜像的镜像信息包括待上传镜像的镜像类型。
[0261]
参见图8,其中,“虚拟机镜像”用于指示待上传镜像的镜像类型为虚拟机镜像。“容
器镜像”用于指示待上传镜像的镜像为容器镜像。
[0262]
可选地,待上传镜像的镜像信息还包括待上传镜像的名称、所属的命名空间、存储位置、镜像描述等。这样,有助于提高目标虚拟机镜像的信息完整性,提高上传成功率。
[0263]
参见图8,其中,“命名空间”用于指示待上传镜像所属的命名空间,例如,命名空间可以是默认(default)。“镜像名称”用于指示待上传镜像的名称。“存储位置”用于指示存储待上传镜像的存储类(storag eclass)的名称,例如,存储类可以是san存储管理器(storage manager for sans)。“镜像描述”用于指示待上传镜像的其他说明信息。
[0264]
其中,“镜像描述”的输入区域还可以包括镜像描述的字符数量要求,如,0/300用于指示镜像描述最多可以输入300个字符。
[0265]
可以理解的,通过指明存储位置,有助于cdi自动为待上传镜像创建持久性卷。关于cdi如何根据存储位置自动创建持久性卷,可以参考相关技术,此处不再赘述。
[0266]
可选地,待上传镜像的镜像信息还包括待上传镜像的镜像文件的获取地址。
[0267]
在一些实施例中,待上传镜像的镜像文件存储在外部网络,获取地址为镜像文件在外部网络的url地址。
[0268]
在另一些实施例中,待上传镜像的镜像文件存储在服务器集群的节点上,获取地址为镜像文件在该节点上的存储地址。
[0269]
s601b:控制节点基于第一界面,生成镜像上传指令。
[0270]
其中,该镜像上传指令包括目标虚拟机镜像的镜像信息,因此,该镜像上传指令指示了上传目标虚拟机镜像。
[0271]
在一些实施例中,s601b实现过程包括:用户在第一界面上输入待上传镜像的镜像信息(即目标虚拟机镜像的镜像信息)后,对第一界面执行触发操作,例如,点击第一界面上的确定按钮。镜像管理模块响应该触发操作,生成镜像上传指令(即目标虚拟机镜像的上传指令),并向api组件发送该镜像上传指令,该镜像上传指令包括目标虚拟机镜像的镜像信息。
[0272]
需要说明的,若目标节点为工作节点,s601b的实现过程还包括:api组件向融合镜像控制器转发该镜像上传指令。
[0273]
上述实施例中,服务器集群通过显示第一界面,实现为用户提供输入待上传镜像的镜像信息的可视化界面,从而使得用户可以通过该可视化界面上传虚拟机镜像,有助于降低上传虚拟机镜像的操作难度。
[0274]
s602:控制节点响应于该镜像上传指令,根据融合镜像资源类型,创建与目标虚拟机镜像对应的第二融合镜像实例。
[0275]
其中,第二融合镜像实例的镜像类型为虚拟机镜像。
[0276]
可选地,第二融合镜像实例包括存储地址,该存储地址指示的存储空间中存储的镜像为目标虚拟机镜像。
[0277]
在一些实施例中,目标虚拟机镜像存储于服务器集群,该存储地址指示的持久性卷存储了唯一的虚拟机镜像(即目标虚拟机镜像)。示例性的,目标虚拟机镜像存储于服务器集群的目标持久性卷中,该存储地址为目标持久性卷的标识。
[0278]
可选地,第二融合镜像实例还包括目标虚拟机镜像的名称。这样,可以建立第二融合镜像实例与目标虚拟机镜像之间的映射关系,且有助于包括第一融合镜像实例对应唯一
的虚拟机镜像(即目标虚拟机镜像)。
[0279]
可选地,第二融合镜像实例的名称与目标虚拟机镜像的名称相同。这样,可以建立第二融合镜像实例与目标虚拟机镜像之间的映射关系,且有助于包括第一融合镜像实例对应唯一的虚拟机镜像(即目标虚拟机镜像)。
[0280]
可选地,第二融合镜像实例包括目标虚拟机镜像的镜像信息。
[0281]
在一些实施例中,镜像上传指令包括目标虚拟机镜像的镜像信息。控制节点基于目标虚拟机镜像的镜像信息创建第二融合镜像实例,以使第二融合镜像实例包括目标虚拟机镜像的镜像信息。
[0282]
在另一些实施例中,在创建第二融合镜像实例之后,创建容器镜像对应的融合镜像实例的方法还包括:根据目标虚拟机镜像的镜像信息,更新第二融合镜像实例,以使更新后的第二融合镜像实例包括目标虚拟机镜像的镜像信息。
[0283]
可选地,融合镜像资源类型还包括:虚拟机镜像的源信息、虚拟机镜像的源地址、虚拟机镜像所对应的容器组、虚拟机镜像的文件大小和虚拟机镜像的存储位置中的至少一个。
[0284]
示例性的,上述融合镜像资源类型的核心架构中,“source:(此处填写虚拟机镜像的源信息);description:'镜像的源信息'”用于指明虚拟机镜像的源信息。“http:(此处填写镜像源地址);description:'镜像源地址'”用于指明镜像源地址。“url:(此处填写地址的终点);description:'the http(s)endpoint'”用于指明虚拟机镜像所对应的endpoint(endpoint是容器管理系统中的一个资源对象,存储在存储系统中,用来记录一个虚拟机镜像对应的所有pod的访问地址)。“size:(此处填写镜像文件的大小);description:'镜像的大小'”用于指明镜像的大小。“storageclassname:(此处填写用于存储待上传镜像的存储类(storageclass)的名称);description:'存储待上传镜像用的storageclass名称'”用于指明虚拟机镜像的类的名称。
[0285]
在一些实施例中,参见图7,s602的实现过程包括:api组件获取镜像管理模块发送的镜像上传指令,并基于该指令携带的镜像信息中的镜像类型(即虚拟机镜像)以及融合镜像资源类型,创建第二融合镜像实例,该第二融合镜像实例的镜像类型为虚拟机镜像。
[0286]
在另一些实施例中,s602的实现过程包括:api组件获取镜像管理模块发送的镜像上传指令后,向融合镜像控制器发送该镜像上传指令。之后,融合镜像控制器基于该指令携带的镜像信息中的镜像类型(即虚拟机镜像)以及融合镜像资源类型,创建第二融合镜像实例,该第二融合镜像实例的镜像类型为虚拟机镜像。
[0287]
需要说明的,融合镜像控制器或api组件创建第二融合镜像实例的相关说明,参考上述s302中,融合镜像控制器或api组件创建第一融合镜像实例的相关说明,此处不再赘述。
[0288]
上述实施例中,通过设置融合镜像实例的镜像类型包括虚拟机镜像和容器镜像,在服务器集群在获取到镜像上传指令时,若该镜像上传指令中的镜像类型标识指示的镜像类型为虚拟机镜像,则根据融合镜像资源类型,创建第二融合镜像实例,并配置第二融合镜像实例的镜像类型为虚拟机镜像。这样,服务器集群便可以基于容器管理系统所支持的一个资源类型(即融合镜像资源类型),为容器管理系统创建两种不同镜像类型的融合镜像实例,从而实现通过一个资源类型对虚拟机镜像和容器镜像进行统一管理,进而实现通过一
套接口同时管理两种不同类型的镜像,提高了镜像管理的便利性,以及容器管理系统的镜像管理能力。
[0289]
此外,由于存储地址指示的存储空间仅存储了目标虚拟机镜像,因此,通过设置第二融合镜像实例包括该存储地址,从而使得第二融合镜像实例可以指向唯一的虚拟机镜像(即目标虚拟机镜像),这样,第二融合镜像实例就相当于目标虚拟机镜像在容器管理系统上的映射对象,从而使得可以通过容器管理系统管理融合镜像实例,实现管理虚拟机镜像。
[0290]
需要说明的,为容器管理系统创建与目标虚拟机镜像对应的第二容器镜像实例的其他技术效果,可以参考为容器管理系统创建与目标容器镜像对应的第一融合镜像实例的技术效果,二者原理相同,即将目标虚拟机镜像映射为容器管理系统上的资源实例,从而通过容器管理系统管理该映射的资源实例,实现管理目标虚拟机镜像,如查询、删除等。
[0291]
(可选地)s603:控制节点创建与第二融合镜像实例关联的目标持久性卷。
[0292]
其中,目标持久性卷用于存储目标虚拟机镜像。
[0293]
在一些实施例中,目标持久性卷中存储的镜像为目标虚拟机镜像。换言之,目标持久性卷仅用于存储目标虚拟机镜像。
[0294]
在一些实施例中,参见图7,s603的实现过程包括:api组件创建第二融合镜像实例,或,接收到融合镜像控制器发送的第二融合镜像实例后,向融合镜像控制器发送第四通知信息,该第四通知信息包括第二融合镜像实例的镜类型,用于通知第二融合镜像实例创建成功。
[0295]
其中,融合镜像控制器接收到第四通知信息后,向api组件发送数据卷创建指令,用于指示创建目标数据卷。api组件创建目标数据卷之后,向cdi发送第五通知信息,该第五通知信息包括目标数据卷的标识和目标虚拟机镜像的存储位置,用于通知已创建目标数据卷。cdi接收到第五通知信息后,根据目标虚拟机镜像的存储位置,创建持久性卷声明,并通过该持久性卷声明创建目标持久性卷。
[0296]
其中,融合镜像控制器向api组件发送数据卷创建指令后,还可以更新第二融合镜像实例,以使更新后的第二融合镜像实例包括目标数据卷的标识,从而建立第二融合镜像实例与目标数据卷之间的关联关系。这样,用户就可以通过查询第二融合镜像实例的镜像信息,获知与第二融合镜像实例关联的目标数据卷。
[0297]
需要说明的,融合镜像控制器更新第二融合镜像实例的过程,可以参考第一融合镜像实例的更新过程,二者原理相同,后续不再赘述。
[0298]
需要说明的,cdi创建目标持久性卷的原理,可以参考相关技术中cdi创建持久性卷的过程,二者原理相同,此处不再赘述。
[0299]
(可选地)s604:控制节点获取目标虚拟机镜像,并将目标虚拟机镜像上传至目标持久性卷。
[0300]
在一些实施例中,s604的实现过程包括:cdi创建目标持久性卷后,启动一个临时的数据导入的容器组(pod),用于获取目标虚拟机镜像的镜像文件。在获取到目标虚拟机镜像的镜像文件后,将该镜像文件转换成磁盘映像(disk.img)文件,并将磁盘映像文件上传至目标持久性卷,从而实现将目标虚拟机镜像上传至目标持久性卷。
[0301]
示例性的,第五通知信息包括目标虚拟机镜像的获取地址,通过该获取地址可以获取目标虚拟机镜像的镜像文件。其中,该获取地址即为用户在第一界面上输入的目标虚
拟机镜像的获取地址。
[0302]
需要说明的,s604的实现过程,可以参考相关技术中cdi将虚拟机镜像上传至持久性卷的过程,二者原理相同,此处不再赘述。
[0303]
在一些实施例中,将目标虚拟机镜像上传至目标持久性卷后,cdi更新目标数据卷的状态,以使更新的目标数据卷包括目标持久性卷的标识,从而可以通过查询目标数据卷的信息,获知存储目标虚拟机镜像的持久性卷的标识。
[0304]
上述实施例中,在创建第二融合镜像实例之后,创建与第二融合镜像实例关联的目标持久性卷,并将目标虚拟机镜像上传至目标持久性卷,从而使得第二融合镜像可以指向唯一的目标持久性卷,换言之,不同的融合镜像会指向不同的持久性卷,这样,就可以通过不同的持久性卷存储不同的虚拟机镜像,进而使得目标虚拟机镜像具有唯一的存储地址。
[0305]
(可选地)s605:控制节点更新第二融合镜像实例,以使更新后的第二融合镜像实例包括目标持久性卷的标识。
[0306]
其中,目标持久性卷的标识为存储地址。
[0307]
在一些实施例中,参见图7,s605的实现过程包括:融合镜像控制器向api组件发送数据卷查询指令,该查询指令包括目标数据卷的标识,用于查询目标数据卷的信息。api组件接收到该查询指令后,向融合镜像控制器返回目标数据卷的信息,其中,目标数据卷的信息包括目标持久性卷的标识。融合镜像控制器接收到api组件返回的目标数据卷的信息后,根据目标持久性卷的标识,更新第二融合镜像实例。
[0308]
上述实施例中,通过更新第二融合镜像实例,以使得更新后的第二融合镜像实例包括目标持久性卷的标识,从而实现通过目标持久性卷建立第二融合镜像实例与目标虚拟机镜像之间的映射关系,由于目标持久性卷仅用于存储目标虚拟机镜像,换言之,目标持久性卷与目标虚拟机镜像之间唯一对应,因此,有助于保证第二融合镜像实例与目标虚拟机镜像之间唯一对应,进而有助于提高虚拟机镜像的管理准确性。
[0309]
(可选地)s606:控制节点确定目标虚拟机镜像的上传结果。
[0310]
其中,上传结果包括上传成功、上传失败和上传进度中的至少一项。
[0311]
在一些实施例中,s606的实现过程包括:cdi向目标持久性卷上传目标虚拟机镜像后,更新目标数据卷的状态,以使更新的目标数据卷包括目标虚拟机镜像的上传结果。融合镜像控制器向api组件发送数据卷查询指令,以获取标虚拟机镜像的上传结果。
[0312]
(可选地)s607:控制节点更新第二融合镜像实例,以使更新后的第二融合镜像实例包括上传结果。
[0313]
在一些实施例中,s607的实现过程包括:融合镜像控制器根据获取到的上传结果,更新第二融合镜像实例,以使得更新后的第二融合镜像实例包括该上传结果。
[0314]
上述实施例中,通过更新第二融合镜像实例,以使得更新后的第二融合镜像实例包括目标虚拟机镜像的上传结果,这样,用户就可以通过查询第二融合镜像的信息,实现获知与第二融合镜像实例对应的目标虚拟机镜像的上传结果,有助于提高虚拟机镜像的管理便利性。
[0315]
以上,为本技术实施例的第一部分。以下,结合图9至图16,介绍本技术实施例的第二部分。
[0316]
首先,结合图9至图15,对本技术实施例的第二部分中,通过查询容器管理系统中的融合镜像实例,以实现查询容器镜像的镜像信息、虚拟机镜像的镜像信息过程进行示例性说明。
[0317]
需要说明的,本技术实施例的第二部分,在第一部分之后执行。
[0318]
图9是根据一示例性实施例示出的一种融合镜像实例的查询方法的流程图。示例性的,该方法包括s901-s903。
[0319]
s901:控制节点响应于目标操作,显示第二界面,该第二界面包括至少一个融合镜像实例的镜像信息。
[0320]
其中,一个融合镜像实例的镜像信息包括该一个融合镜像实例的名称、镜像类型、命名空间名称、创建时间、更新时间、上传结果和镜像状态中的至少一项。上传结果包括上传进度或上传失败,镜像状态包括已占用、空闲中或不可用。
[0321]
其中,上传结果为该一个融合镜像实例所对应的容器镜像或虚拟机镜像的上传结果,该上传结果包括上传进度或上传失败。镜像状态为该一个融合镜像实例所对应的容器镜像或虚拟机镜像的镜像状态,该镜像状态包括已占用、空闲中或不可用。
[0322]
可以理解的,已占用用于表征容器镜像已用于启动容器或虚拟机镜像已用于启动虚拟机,空闲中用于表征容器镜像未用于启动容器或虚拟机镜像未用于启动虚拟机,不可用用于表征容器镜像不可以用于启动容器或虚拟机镜像不可以用于启动虚拟机。
[0323]
其中,至少一个融合镜像实例包括容器管理系统已创建的全部融合镜像实例。基于此,该至少一个融合镜像实例包括第一融合镜像实例和第二融合镜像实例。
[0324]
如图10所示,为一种查询融合镜像实例的工作原理图。
[0325]
在一些实施例中,参见图10,s901的实现过程包括:镜像管理模块控制显示设备显示目标界面,用户对目标界面执行目标操作,该目标操作用于指示查询已创建的至少一个融合镜像实例。镜像管理模块响应于目标操作,向api组件发送融合镜像查询指令,用于指示查询至少一个融合镜像实例的镜像信息。api组件从存储系统中获取已创建的至少一个融合镜像实例的镜像信息,并返回给镜像管理模块,镜像管理模块控制显示设备显示第二界面。
[0326]
在一个示例中,在目标界面的部分区域上显示第二界面。在另一个示例中,停止显示目标界面,并显示第二界面。换言之,第二界面不占用目标界面的任何区域。
[0327]
在另一些实施例中,用户通过目标节点的命令行工具调用api组件,以从存储系统中获取已创建的至少一个融合镜像实例的镜像信息,并显示第二界面。
[0328]
如图11所示,为一种第二界面的示意图。
[0329]
在一些实施例中,参见图11,至少一个融合镜像实例以列表形式进行显示。其中,上传进度通过百分数表示。命名空间用于表征融合镜像实例所属的命名空间。
[0330]
上述实施例中,通过响应于用户的目标操作,显示第二界面,从而实现显示容器管理系统上已创建的至少一个融合镜像实例的镜像信息。一方面,实现了可视化显示融合镜像实例的镜像信息,且操作简单,另一方面,用户通过容器管理系统即可查询到容器镜像和虚拟机镜像的部分信息,如上传结果、镜像状态等,提高了容器镜像以及虚拟机镜像的管理便利性。(可选地)s902:控制节点响应于对第二界面上的目标融合镜像实例的触发操作,显示第三界面,该第三界面包括目标融合镜像实例的镜像详情信息。
[0331]
其中,目标融合镜像实例包括第一融合镜像实例或第二融合镜像实例。
[0332]
在一些实施例中,参见图10,s902的实现过程包括:用户想查看目标融合镜像实例的详细信息是,可以触发该目标融合镜像实例,如,点击该目标融合镜像实例的名称。在用户点击该目标融合镜像实例的名称后,镜像管理模块响应于该触发操作,向api组件发送目标融合镜像实例的查询指令,以请求查询该目标融合镜像实例的镜像详情信息。api组件从存储系统中获取目标融合镜像实例的镜像详情信息,并返回给镜像管理模块,镜像管理模块显示第三界面。
[0333]
如图12所示,为一种第三界面的示意图。
[0334]
可选地,第一融合镜像实例的镜像详情信息包括基本信息。
[0335]
示例性的,参见图12,第一融合镜像实例的基本信息包括:镜像名称、镜像状态、镜像类型、命名空间名称、创建时间、更新时间和描述信息中的至少一项。
[0336]
如图13所示,为另一种第三界面的示意图。
[0337]
可选地,第一融合镜像实例的镜像详情信息包括标签信息。
[0338]
示例性的,参见图13,第一融合镜像实例的标签信息包括:版本号(也即镜像名称)、拉取命令、最近拉取时间、最近推送时间、镜像摘要、操作系统类型/处理器类型、签名信息、扫描信息(如病毒扫描信息、漏洞扫描信息等)和文件大小等。
[0339]
其中,签名信息包括已签名或未签名。扫描信息包括已扫描或未扫描。文件大小为57.97兆(mb)。镜像摘要包括sha256:de2c32949oq2c32949oq。操作系统类型/处理器类型包括linux/arm64。版本号为1.0。拉取命令包括docker pull 10.32.6.4/jieooajgjkdkaoo。最近拉取时间为2022年02月24日12点。最近推送时间为2022年02月24日12点。
[0340]
如图14所示,为又一种第三界面的示意图。
[0341]
在一些实施例中,第一融合镜像实例的标签信息还可以包括作者、处理器类型(architecture)、目标容器镜像的配置信息(config)、创建时间、构建历史信息等。
[0342]
示例性的,参见图14,作者为admin。architecture为arm64。创建时间为2022年07月09日12点33分。构建历史信息包括创建历史时间和创建命令等。
[0343]
如图15所示,为另一种第三界面的示意图。其中,图15所示的第三界面包括第二融合镜像实例的镜像详情信息。
[0344]
示例性的,参见图15,第二融合镜像实例的镜像详情信息包括镜像名称、镜像类型、镜像状态、命名空间名称、镜像文件名称、存储位置、镜像文件大小、创建时间、更新时间和目标持久性卷的标识中的至少一项。
[0345]
上述实施例中,在用户触发容器管理系统中的目标融合镜像实例时,服务器集群为用户显示该目标融合镜像实例的镜像详情信息,这样,有助于用户了解该目标融合镜像实例所对应的容器镜像或虚拟机镜像的详细信息,从而使得用户可以通过容器管理系统可以查询到容器镜像和虚拟机镜像的更多信息,有助于进一步提高容器镜像以及虚拟机镜像的管理便利性。
[0346]
以下,结合图16,对本技术实施例的第二部分中,通过删除容器管理系统中融合镜像实例,以实现删除容器镜像、虚拟机镜像的过程进行示例性说明。
[0347]
(可选地)s903:控制节点响应于对第二界面上的目标融合镜像实例的删除操作,删除目标融合镜像实例以及与目标融合镜像实例对应的虚拟机镜像或容器镜像。
[0348]
其中,目标融合镜像实例为第一融合镜像实例或第二融合镜像实例。
[0349]
在一些实施例中,用户若想删除目标融合镜像实例,则可以对该目标融合镜像实例执行删除操作。控制节点响应于该删除操作,不仅删除目标融合镜像实例,还会删除容器管理中存储的与目标融合镜像实例对应的虚拟机镜像,或删除镜像仓库中与目标融合镜像实例对应的容器镜像。
[0350]
可选地,第二界面还包括至少一个删除控件,其中,至少一个删除控件与至少一个融合镜像实例一一对应。用户通过触发一个融合镜像实例对应的删除控件,实现对该一个融合镜像实例执行删除操作。
[0351]
如图16所示,为删除融合镜像实例的工作原理图。
[0352]
在一些实施例中,参见图16,s903的实现过程包括:用户触发目标融合镜像实例的删除控件,镜像管理模块响应该触发操作,向api组件发送目标融合镜像实例的删除指令,用于指示删除目标融合镜像实例。api组件响应于该删除指令,删除目标融合镜像实例。
[0353]
需要说明的,若目标节点为工作节点,s903的实现过程包括:用户触发目标融合镜像实例的删除控件,镜像管理模块响应该触发操作,向api组件发送目标融合镜像实例的删除指令,用于指示删除目标融合镜像实例。api接收到该删除指令后,向融合镜像控制器转发该删除指令。融合镜像控制器响应于该删除指令,调用api组件,删除目标融合镜像实例。
[0354]
上述实施例中,在用户对目标融合镜像实例执行删除操作时,服务器集群响应于用户的删除操作,不仅删除容器管理系统中的目标融合镜像实例,还会删除目标融合镜像实例所对应的容器镜像或虚拟机镜像。基于此,一方面,用户就可以通过删除容器管理系统上的融合镜像实例,实现删除镜像仓库中的容器镜像,提高了容器镜像的管理便利性。另一方面,服务器集群通过为用户提供可视化的删除操作界面,提高了容器镜像以及虚拟机镜像删除操作的便利性,降低了删除操作的难度。
[0355]
可选地,目标融合镜像实例为第一融合镜像实例。删除与目标融合镜像实例对应的容器镜像,包括:目标节点向镜像仓库发送镜像删除请求;镜像删除请求用于请求删除目标容器镜像,删除请求包括目标容器镜像在镜像仓库上的镜像地址。
[0356]
在一些实施例中,由于与第一融合镜像实例对应的是目标容器镜像,而目标容器镜像存储于镜像仓库。
[0357]
基于此,参见图16,在目标融合镜像实例为第一融合镜像实例时,融合镜像控制器向镜像仓库发送镜像删除请求,该镜像删除请求包括目标容器镜像在镜像仓库的镜像地址,用于请求镜像仓库删除目标容器镜像,从而实现了删除与目标融合镜像对应的容器镜像。
[0358]
可选地,目标融合镜像实例为第二融合镜像实例,删除与目标融合镜像实例对应的虚拟机镜像,包括:目标节点删除存储地址指示的存储空间。
[0359]
在一些实施例中,由于与第二融合镜像实例对应的是目标虚拟机镜像,而目标虚拟机镜像存储于服务器集群的目标持久性卷中,目标持久性卷的标识为存储地址。换言之,存储地址指示的存储空间为目标持久性卷。
[0360]
基于此,参见图16,在目标融合镜像实例为第二融合镜像实例时,镜像仓库控制器向api组件发送数据卷删除指令,该数据卷删除指令包括目标数据卷的标识,用于请求删除目标数据卷。api组件删除目标数据卷之后,向cdi发送第六通知信息,该第六通知信息包括
目标数据卷的标识,用于通知目标数据卷已删除。cdi接收到第六通知信息后,若目标持久性卷未被其他资源实例关联,则删除目标持久性卷,这样,也就删除了目标持久性卷中存储的目标虚拟机镜像,从而实现了删除与目标融合镜像实例对应的虚拟机镜像。
[0361]
以上,为本技术实施例的第二部分。以下,结合图17至图19,介绍本技术实施例的第三部分。
[0362]
首先,结合图17至图18,对本技术实施例的第三部分中,服务器集群基于容器管理系统上的融合镜像实例,部署容器的过程进行示例性介绍。
[0363]
图17是根据一示例性实施例示出的一种部署容器的方法的流程图。示例性的,该方法包括:s1701-s1703。
[0364]
s1701:控制节点获取第一部署模板。
[0365]
其中,第一部署模板用于记载创建目标容器所需的部署信息。该第一部署模板包括第一融合镜像实例的名称。
[0366]
在一些实施例中,s1701的实现过程包括:用户需要部署目标容器时,通过命令行工作向api组件发送第一部署模板。
[0367]
需要说明的,若目标节点为工作节点,s170还包括:api组件接收到第一部署模板后,向工作节点的代理组件转发该第一部署模板,用于指示基于第一部署模板部署目标容器。
[0368]
示例性的,第一部署模板包括以下内容:
[0369]
apiversion:v1
[0370]
kind:pod
[0371]

[0372]
spec:
[0373]
containers:
[0374]-name:demo1
[0375]
image:default/fusionimge1
[0376]
type:fusionimage
[0377]
其中,“apiversion”用于指示api版本,例如,api的版本为v1。“kind”用于指示待创建资源实例的类型,例如,待创建资源实例的类型为容器(pod)。“name”用于指示容器的名称,例如,容器的名称为demo1。“image”用于指示用于融合镜像实例的命名空间和名称,例如,融合镜像实例的命名空间为默认(default),镜像的名称为融合镜像实例1(fusionimge1)。“type”用于指示部署容器所使用镜像的镜像类型,例如,镜像类型为融合镜像(fusionimage)。
[0378]
s1702:控制节点获取第一融合镜像实例对应的目标容器镜像在镜像仓库上的镜像地址。
[0379]
可选地,控制节点包括第二网络钩子,第二网络钩子用于基于第一部署模板,生成第二部署模板。
[0380]
如图18所示,为部署容器的工作原理图。
[0381]
在一些实施例中,参见图18,s1702的实现过程包括:第一部署模板被发送至容器组(pod)的控制器之前,先发送给第二网络钩子。第二网络钩子接收到第一部署模板后,向
api组件发送获取指令,该获取指令包括第一融合镜像实例的名称,用于指示获取第一融合镜像实例的镜像信息。api组件响应该获取指令,向第二网络钩子返回第一融合镜像实例的镜像信息。
[0382]
第二网络钩子获取到镜像信息后,解析镜像信息,得到与第一融合镜像实例对应的目标容器镜像在镜像仓库上的镜像地址,例如,该镜像地址为“xxx/xxx@sha256:xxx”。
[0383]
示例性的,第一部署模板还包括和第一融合镜像实例所属的命名空间的名称。基于此,获取指令还可以包括第一融合镜像实例所属的命名空间的名称。这样,有助于api组件快速获取第一融合镜像实例的镜像信息。
[0384]
在一些实施例中,第二网络钩子接收到第一部署模板后,根据第一部署模板中的container.type字段,判断部署容器所使用镜像的镜像类型是否为融合镜像,若判断结果为是,则从第一部署模板中container.image字段,获取融合镜像实例的命名空间和名称。
[0385]
s1703:控制节点生成第二部署模板,该第二部署模板用于部署目标容器。
[0386]
其中,第二部署模板包括目标容器镜像在镜像仓库上的镜像地址,用于从镜像仓库获取目标容器镜像。
[0387]
在一些实施例中,在获取到目标容器镜像在镜像仓库上的镜像地址后,控制节点即生成第二部署模板。
[0388]
在另一些实施例中,若目标容器镜像的安全性满足条件,则控制节点生成第二部署模板。
[0389]
对于确定安全性是否满足预设条件,包括多种实现方式,以下通过方式1至方式3进行示例性介绍。
[0390]
方式1:若第一融合镜像实例包括的病毒扫描结果满足预设条件,则目标容器镜像的安全性满足条件。
[0391]
在一些实施例中,服务器集群中预先存储有预设条件,控制节点在获取到第一融合镜像实例的镜像信息后,解析该镜像信息,得到病毒扫描结果,该病毒扫描结果为镜像仓库对目标容器镜像的病毒扫描结果。
[0392]
示例性的,预设条件具体为第一预设阈值,病毒扫描结果为分值或百分数。其中,分值或百分数越大,则目标容器镜像的安全性越高。基于此,若分值或百分数大于或等于第一预设阈值,则病毒扫描结果满足预设条件。
[0393]
可以理解的,病毒扫描结果为分值或百分数时,也可以是分值或百分数越小,则目标容器镜像的安全性越高。基于此,预设条件为第二预设阈值,若分值或百分数小于或等于第二预设阈值,则病毒扫描结果满足预设条件。
[0394]
方式2:若第一融合镜像实例包括的漏洞扫描结果满足预设条件,则目标容器镜像的安全性满足条件。
[0395]
需要说明的,方式2的实现原理与方式1的实现原理相同,因此,方式2的实现过程和相关说明,可以参见上述方式1,此处不再赘述。
[0396]
方式3:若第一融合镜像实例包括的签名信息满足预设条件,则目标容器镜像的安全性满足条件。
[0397]
在一些实施例中,签名信息包括已签名或未签名。若第一融合镜像实例包括的签名信息为已签名,则签名信息满足预设条件。若第一融合镜像实例包括的签名信息为未签
名,则签名信息不满足预设条件。
[0398]
在另一些实施例中,若签名信息验签成功,则签名信息满足预设条件。反之,签名信息不满足预设条件。
[0399]
需要说明的,签名信息的验签过程,可以参考相关技术,此处不再赘述。
[0400]
上述实施例中,通过设置目标容器镜像的安全性满足条件,生成第二部署模板,这样有助于保证目标容器镜像的安全性,进而有助于保证目标容器的安全性。
[0401]
需要说明的,上述方式1、方式2和方式3,可以单独使用,如仅使用方式1、方式2或方式3。或者,也可以结合使用,如同时使用方式1、方式2和方式3,本技术实施例对此不做限制。
[0402]
在一些实施例中,参见图18,s1703的实现过程包括:第二网络钩子将目标容器镜像在镜像仓库上的镜像地址,写入第一部署模板中的containers.image字段中,并删除containers.type字段,从而得到第二部署模板。
[0403]
示例性的,第二部署模板包括以下内容:
[0404]
apiversion:v1
[0405]
kind:pod
[0406]

[0407]
spec:
[0408]
containers:
[0409]-name:demo1
[0410]
image:xxx/xxx@sha256:xxx
[0411]
在一些实施例中,参见图18,第二网络钩子生成第二部署模板后,向容器组的控制器发送第二部署模板,以由容器组的控制器继续执行目标容器的部署流程。
[0412]
需要说明的,第二部署模板为相关技术中容器管理系统部署容器时所需使用的部署模板。基于此,容器组的控制器根据第二部署模板部署目标容器的过程,可以参考相关技术中容器组的控制器根据部署模板部署容器的过程,二者原理相同,此处不再赘述。
[0413]
上述实施例中,服务器集群获取到第一部署模板时,可以根据第一部署模板中的第一融合镜像实例的名称,获取到第一融合镜像实例所包括目标容器镜像在镜像仓库上的镜像地址,并为容器管理系统生成包括目标容器镜像在镜像仓库上的镜像地址的第二部署模板,该第二部署模板可以用于从镜像仓库上下载目标容器镜像,因此,第二部署模板可以直接用于部署目标容器。基于此,用户只需在部署目标容器的部署模板中指明要使用的融合镜像实例,服务器集群便可以为容器管理系统自动生成记载有目标容器镜像在镜像仓库上的镜像地址的部署模板,并基于该部署模板部署目标容器,提高容器部署的便利性。这样,用户就不必记住繁琐的镜像地址,只需了解容器镜像对应的融合镜像的名称即可,有助于提高用户对容器管理系统的使用体验。另外,由于镜像地址记载在融合镜像实例中,因此,即使容器镜像的存储位置发生变更而导致镜像地址发生变更,对用户也没有任何影响,有助于进一步提高容器部署的便利性。
[0414]
以下,结合图19,对本技术实施例的第三部分中,服务器集群基于容器管理系统上的融合镜像实例,部署虚拟机的过程进行示例性介绍。
[0415]
图19是根据一示例性实施例示出的一种部署虚拟机的方法的流程图。示例性的,
该方法包括:s1901-s1903。
[0416]
s1901:控制节点获取第三部署模板。
[0417]
其中,第三部署模板用于记载部署目标虚拟机所需的部署信息,该第三部署模板包括第二融合镜像实例的名称。
[0418]
需要说明的,s1901的实现原理与s1701的实现原理相同,因此,s1901的实现过程和相关说明,可以参考s1701的实现过程和相关说明,此处不再赘述。
[0419]
s1902:控制节点获取与第二融合镜像实例对应的目标虚拟机镜像的存储地址。
[0420]
需要说明的,s1902的实现原理与s1702的实现原理相同,因此,s1902的实现过程和相关说明,可以参考上述s1702的实现过程和相关说明,此处不再赘述。
[0421]
s1903:控制节点生成第四部署模板,该第四部署模板用于部署目标虚拟机。
[0422]
其中,第四部署模板包括存储地址,用于从存储地址指示的存储空间获取目标虚拟机镜像。
[0423]
需要说明的,s1903的实现原理与s1703的实现原理相同,因此,s1903的实现过程和相关说明,可以参考上述s1703的实现过程和相关说明,此处不再赘述。
[0424]
上述实施例中,用户只需在部署目标虚拟机的第三部署模板中指明要使用的融合镜像实例,服务器集群便可以自动为容器管理系统生成第四部署模板,由于该第四部署模板记载有存储目标虚拟机镜像的目标持久性卷的标,因此,服务器集群上容器管理系统可以自动基于该第四部署模板部署目标虚拟机,提高虚拟机部署的便利性。这样,用户就不必记住虚拟机镜像的存储地址,只需了解虚拟机镜像对应的融合镜像的名称即可,有助于提高用户对容器管理系统的使用体验。另外,由于存储地址记载在融合镜像实例中,因此,即使虚拟机镜像的存储位置发生变更而导致存储地址发生变更,对用户也没有任何影响,有助于进一步提高容器部署的便利性。
[0425]
上述主要从方法的角度对本技术实施例提供的方案进行了介绍。为了实现上述功能,镜像管理装置包含了执行各个功能相应的硬件结构和/或软件模块。本领域技术人员应该很容易意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,本技术能够以硬件或硬件和计算机软件的结合形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本技术的范围。
[0426]
本技术实施例可以根据上述方法,示例性的对镜像管理装置进行功能模块的划分,例如,镜像管理装置可以包括对应各个功能划分的各个功能模块,也可以将两个或两个以上的功能集成在一个处理模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。需要说明的是,本技术实施例中对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。
[0427]
示例性的,图20示出了上述实施例中所涉及的镜像管理装置(记为镜像管理装置2000)的一种可能的结构示意图,该镜像管理装置2000所执行的动作通过服务器集群的控制节点或工作节点实现。该服务器集群配置有容器管理系统,容器管理系统支持的资源类型包括融合镜像资源类型,融合镜像资源类型定义了创建融合镜像实例的配置内容。
[0428]
该镜像管理装置2000包括确定单元2001和创建单元2002。确定单元2001,用于确
定目标容器镜像已上传至镜像仓库。例如,图3所示的s301。创建单元2002,用于响应于该确定根据融合镜像资源类型,创建与目标容器镜像对应的第一融合镜像实例;该第一融合镜像实例包括目标容器镜像在镜像仓库的镜像地址。例如,图3所示的s302。
[0429]
可选地,融合镜像实例的镜像类型包括容器镜像或虚拟机镜像,第一融合镜像实例的镜像类型为容器镜像;创建单元2002还用于:获取镜像上传指令;镜像上传指令指示了上传目标虚拟机镜像;响应于镜像上传指令,根据融合镜像资源类型,创建与目标虚拟机镜像对应的第二融合镜像实例;第二融合镜像实例包括存储地址,存储地址指示的存储空间用于存储目标虚拟机镜像,第二融合镜像实例的镜像类型为虚拟机镜像。
[0430]
可选地,确定单元2001具体用于:接收镜像仓库发送的通知信息;通知信息用于通知目标容器镜像已上传至镜像仓库;或获取镜像推送指令,镜像推送指令指示了目标容器镜像已上传至镜像仓库。
[0431]
可选地,目标容器镜像属于镜像仓库上的目标镜像目录,创建单元2002具体用于:创建属于目标命名空间的第一融合镜像实例;目标命名空间与目标镜像目录相对应。
[0432]
可选地,创建单元2002还用于:若监听到目标命名空间的创建事件,向镜像仓库发送目录创建请求;目录创建请求用于请求创建目标镜像目录。
[0433]
可选地,该镜像管理装2000还包括删除单元2003。目标命名空间中的融合镜像实例与目标镜像目录中的容器镜像一一对应;删除单元2003用于:若监听到目标命名空间的删除事件,向镜像仓库发送目录删除请求;目录删除请求用于请求删除目标镜像目录。
[0434]
可选地,创建与目标容器镜像对应的第一融合镜像实例之后,创建单元2002还用于:从镜像仓库获取目标容器镜像的镜像信息;目标容器镜像的镜像信息包括目标容器镜像的病毒扫描结果、漏洞扫描结果和签名信息中的至少一项;更新第一融合镜像实例,以使更新后的第一融合镜像实例包括目标容器镜像的镜像信息。
[0435]
可选地,创建与目标虚拟机镜像对应的第二融合镜像实例之后,创建单元2002还用于:创建与第二融合镜像实例关联的目标持久性卷;获取目标虚拟机镜像,并将目标虚拟机镜像上传至目标持久性卷;更新第二融合镜像实例,以使更新后的第二融合镜像实例包括目标持久性卷的标识,目标持久性卷的标识为存储地址。
[0436]
可选地,创建单元2002还用于:确定目标虚拟机镜像的上传结果;上传结果包括上传成功、上传失败和上传进度中的至少一项;更新第二融合镜像实例,以使更新后的第二融合镜像实例包括上传结果。
[0437]
可选地,创建单元2002具体用于:显示第一界面;第一界面用于输入待上传镜像的镜像信息;基于第一界面,生成镜像上传指令;镜像上传指令包括目标虚拟机镜像的镜像信息。
[0438]
可选地,该镜像管理装置2000还包括查询单元2004,查询单元2004用于:响应于目标操作,显示第二界面,第二界面包括至少一个融合镜像实例的镜像信息;至少一个融合镜像实例包括第一融合镜像实例和第二融合镜像实例;其中,一个融合镜像实例的镜像信息包括该一个融合镜像实例的名称、镜像类型、命名空间名称、创建时间、更新时间、上传结果和镜像状态中的至少一项,上传结果包括上传进度或上传失败,镜像状态包括已占用、空闲中或不可用。
[0439]
可选地,查询单元2004还用于:响应于对第二界面上的目标融合镜像实例的触发
操作,显示第三界面;第三界面包括目标融合镜像实例的镜像详情信息;若目标融合镜像实例为第一融合镜像实例,目标融合镜像实例的镜像详情信息包括镜像名称、镜像类型、命名空间名称、创建时间、更新时间、镜像状态、镜像地址、病毒扫描结果、漏洞扫描结果和签名信息中的至少一项;若目标融合镜像实例为第二融合镜像实例,目标融合镜像实例的镜像详情信息包括镜像名称、镜像类型、命名空间名称、创建时间、更新时间、镜像状态、镜像文件名称、目标持久性卷的名称和镜像文件大小中的至少一项。
[0440]
可选地,删除单元2003还用于:响应于对第二界面上的目标融合镜像实例的删除操作,删除目标融合镜像实例以及与目标融合镜像实例对应的虚拟机镜像或容器镜像;目标融合镜像实例为第一融合镜像实例或第二融合镜像实例。
[0441]
可选地,若目标融合镜像实例为第一融合镜像实例,删除单元2003具体用于:向镜像仓库发送镜像删除请求;镜像删除请求用于请求删除目标容器镜像,删除请求包括目标容器镜像在镜像仓库上的镜像地址。
[0442]
可选地,若目标融合镜像实例为第二融合镜像实例,删除单元2003具体用于:删除与目标融合镜像实例对应的虚拟机镜像,包括:删除目标标识指示的持久性卷。
[0443]
可选地,该镜像管理装置还包括部署单元2005。部署单元2005用于:获取第一部署模板;第一部署模板用于记载部署目标容器所需的部署信息,第一部署模板包括第一融合镜像实例的名称;获取与第一融合镜像实例对应的目标容器镜像在镜像仓库上的镜像地址;生成第二部署模板;第二部署模板包括目标容器镜像在镜像仓库上的镜像地址,第二部署模板用于部署目标容器。
[0444]
可选地,部署单元2005具体用于:若第一融合镜像实例还包括病毒扫描结果、且病毒扫描结果满足预设条件,生成第二部署模板;和/或若第一融合镜像实例还包括漏洞扫描结果、且漏洞扫描结果满足预设条件,生成第二部署模板;和/或若第一融合镜像实例还包括签名信息、且签名信息满足预设条件,生成第二部署模板。
[0445]
可选地,部署单元2005还用于:获取第三部署模板;第三部署模板用于记载部署目标虚拟机所需的部署信息,第三部署模板包括第二融合镜像实例的名称;获取与第二融合镜像实例对应的目标虚拟机镜像的目标地址;生成第四部署模板;第二部署模板包括目标虚拟机镜像的目标地址,第二部署模板用于部署目标虚拟机。
[0446]
关于上述可选方式的具体描述可以参见前述的方法实施例,此处不再赘述。此外,上述提供的任一种镜像管理装置2000的解释以及有益效果的描述均可参考上述对应的方法实施例,不再赘述。
[0447]
本技术实施例还提供了一种计算机设备,该计算机设备包括处理器和存储器,处理器与存储器连接,存储器存储有计算机执行指令,处理器执行该计算机执行指令时实现上述实施例中的数据处理方法。本技术实施例对计算机设备的具体形式不作任何限制。例如,计算机设备具体可以是终端装置,也可以是网络设备。其中,终端装置可以被称为:终端、用户设备(user equipment,ue)、终端设备、接入终端、用户单元、用户站、移动站、远方站、远程终端、移动设备、用户终端、无线通信设备、用户代理或用户装置等。终端装置具体可以是手机、增强现实(augmented reality,ar)设备、虚拟现实(virtual reality,vr)设备、平板电脑、笔记本电脑、超级移动个人计算机(ultra-mobile personal computer,umpc)、上网本、个人数字助理(personal digital assistant,pda)等。网络设备具体可以
是服务器等。其中,服务器可以是一个物理或逻辑服务器,也可以是有两个或两个以上分担不同职责的物理或逻辑服务器、相互协同来实现服务器的各项功能。
[0448]
本技术实施例还提供了一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,当该计算机程序在计算机上运行时,使得该计算机执行上文提供的任一种计算机设备所执行的方法。
[0449]
关于上述提供的任一种计算机可读存储介质中相关内容的解释及有益效果的描述,均可以参考上述对应的实施例,此处不再赘述。
[0450]
本技术实施例还提供了一种芯片。该芯片中集成了用于实现上述计算机设备的功能的控制电路和一个或者多个端口。可选的,该芯片支持的功能可以参考上文,此处不再赘述。本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可通过程序来指令相关的硬件完成。所述的程序可以存储于一种计算机可读存储介质中。上述提到的存储介质可以是只读存储器,随机接入存储器等。上述处理单元或处理器可以是中央处理器,通用处理器、特定集成电路(application specific integrated circuit,asic)、微处理器(digital signal processor,dsp),现场可编程门阵列(field programmable gate array,fpga)或者其他可编程逻辑器件、晶体管逻辑器件、硬件部件或者其任意组合。
[0451]
本技术实施例还提供了一种包含指令的计算机程序产品,当该指令在计算机上运行时,使得计算机执行上述实施例中的任意一种方法。该计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行计算机程序指令时,全部或部分地产生按照本技术实施例的流程或功能。计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,计算机指令可以从一个网站站点、计算机、服务器或者数据中心通过有线(例如同轴电缆、光纤、数字用户线(digital subscriber line,dsl))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可以用介质集成的服务器、数据中心等数据存储设备。可用介质可以是磁性介质(例如,软盘、硬盘、磁带),光介质(例如,dvd)、或者半导体介质(例如ssd)等。
[0452]
应注意,本技术实施例提供的上述用于存储计算机指令或者计算机程序的器件,例如但不限于,上述存储器、计算机可读存储介质和通信芯片等,均具有非易失性(non-transitory)。
[0453]
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件程序实现时,可以全部或部分地以计算机程序产品的形式来实现。该计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行计算机程序指令时,全部或部分地产生按照本技术实施例的流程或功能。计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,计算机指令可以从一个网站站点、计算机、服务器或者数据中心通过有线(例如同轴电缆、光纤、数字用户线(digital subscriber line,dsl))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可以用介质集成的服务器、数据中心等数据存储设备。可用介质可
以是磁性介质(例如,软盘、硬盘、磁带),光介质(例如,dvd)、或者半导体介质(例如固态硬盘(solid state disk,ssd))等。
[0454]
尽管在此结合各实施例对本技术进行了描述,然而,在实施所要求保护的本技术过程中,本领域技术人员通过查看附图、公开内容、以及所附权利要求书,可理解并实现公开实施例的其他变化。在权利要求中,“包括”(comprising)一词不排除其他组成部分或步骤,“一”或“一个”不排除多个的情况。单个处理器或其他单元可以实现权利要求中列举的若干项功能。相互不同的从属权利要求中记载了某些措施,但这并不表示这些措施不能组合起来产生良好的效果。
[0455]
尽管结合具体特征及其实施例对本技术进行了描述,显而易见的,在不脱离本技术的精神和范围的情况下,可对其进行各种修改和组合。相应地,本说明书和附图仅仅是所附权利要求所界定的本技术的示例性说明,且视为已覆盖本技术范围内的任意和所有修改、变化、组合或等同物。显然,本领域的技术人员可以对本技术进行各种改动和变型而不脱离本技术的精神和范围。这样,倘若本技术的这些修改和变型属于本技术权利要求及其等同技术的范围之内,则本技术也意图包含这些改动和变型在内。

技术特征:
1.一种镜像管理方法,其特征在于,应用于服务器集群,所述服务器集群配置有容器管理系统,所述容器管理系统支持的资源类型包括融合镜像资源类型,所述融合镜像资源类型定义了创建融合镜像实例的配置内容;所述方法包括:确定目标容器镜像已上传至镜像仓库;响应于所述确定,根据所述融合镜像资源类型,创建与所述目标容器镜像对应的第一融合镜像实例;所述第一融合镜像实例包括所述目标容器镜像在所述镜像仓库的镜像地址。2.根据权利要求1所述的方法,其特征在于,所述融合镜像实例的镜像类型包括容器镜像或虚拟机镜像,所述第一融合镜像实例的镜像类型为容器镜像;所述方法还包括:获取镜像上传指令;所述镜像上传指令指示了上传目标虚拟机镜像;响应于所述镜像上传指令,根据所述融合镜像资源类型,创建与所述目标虚拟机镜像对应的第二融合镜像实例;所述第二融合镜像实例包括所述目标虚拟机镜像的存储地址,所述第二融合镜像实例的镜像类型为虚拟机镜像。3.根据权利要求1或2所述的方法,其特征在于,所述确定目标容器镜像已上传至镜像仓库,包括:接收所述镜像仓库发送的通知信息;所述通知信息用于通知目标容器镜像已上传至镜像仓库;或获取镜像推送指令,所述镜像推送指令指示了目标容器镜像已上传至镜像仓库。4.根据权利要求1-3中任一项所述的方法,其特征在于,所述目标容器镜像属于所述镜像仓库上的目标镜像目录,所述创建与所述目标容器镜像对应的第一融合镜像实例,包括:创建属于目标命名空间的所述第一融合镜像实例;所述目标命名空间与所述目标镜像目录相对应。5.根据权利要求4所述的方法,其特征在于,所述创建属于目标命名空间的所述第一融合镜像实例之前,所述方法还包括:若监听到所述目标命名空间的创建事件,向所述镜像仓库发送目录创建请求;所述目录创建请求用于请求创建所述目标镜像目录。6.根据权利要求4或5所述的方法,其特征在于,所述目标命名空间中的融合镜像实例与所述目标镜像目录中的容器镜像一一对应;所述方法还包括:若监听到所述目标命名空间的删除事件,向所述镜像仓库发送目录删除请求;所述目录删除请求用于请求删除所述目标镜像目录。7.根据权利要求1-6中任一项所述的方法,其特征在于,所述创建与所述目标容器镜像对应的第一融合镜像实例之后,所述方法还包括:从所述镜像仓库获取所述目标容器镜像的镜像信息;所述目标容器镜像的镜像信息包括所述目标容器镜像的病毒扫描结果、漏洞扫描结果和签名信息中的至少一项;更新所述第一融合镜像实例,以使更新后的所述第一融合镜像实例包括所述目标容器镜像的镜像信息。8.根据权利要求2所述的方法,其特征在于,所述创建与所述目标虚拟机镜像对应的第二融合镜像实例之后,所述方法还包括:创建与所述第二融合镜像实例关联的目标持久性卷;
获取所述目标虚拟机镜像,并将所述目标虚拟机镜像上传至所述目标持久性卷;更新所述第二融合镜像实例,以使更新后的所述第二融合镜像实例包括所述目标持久性卷的标识,所述目标持久性卷的标识为所述存储地址。9.根据权利要求8所述的方法,其特征在于,所述方法还包括:确定所述目标虚拟机镜像的上传结果;所述上传结果包括上传成功、上传失败和上传进度中的至少一项;更新所述第二融合镜像实例,以使更新后的所述第二融合镜像实例包括所述上传结果。10.根据权利要求2、8或9所述的方法,其特征在于,所述获取镜像上传指令,包括:显示第一界面;所述第一界面用于输入待上传镜像的镜像信息;基于第一界面,生成镜像上传指令;所述镜像上传指令包括所述目标虚拟机镜像的镜像信息。11.根据权利要求2、8-10中任一项所述的方法,其特征在于,所述方法还包括:响应于目标操作,显示第二界面,所述第二界面包括至少一个融合镜像实例的镜像信息;所述至少一个融合镜像实例包括所述第一融合镜像实例和所述第二融合镜像实例;其中,一个融合镜像实例的镜像信息包括该一个融合镜像实例的名称、镜像类型、命名空间名称、创建时间、更新时间、上传结果和镜像状态中的至少一项,所述上传结果包括上传进度或上传失败,所述镜像状态包括已占用、空闲中或不可用。12.根据权利要求11所述的方法,其特征在于,所述方法还包括:响应于对所述第二界面上的目标融合镜像实例的触发操作,显示第三界面;所述第三界面包括所述目标融合镜像实例的镜像详情信息;若所述目标融合镜像实例为所述第一融合镜像实例,所述目标融合镜像实例的镜像详情信息包括镜像名称、镜像类型、命名空间名称、创建时间、更新时间、镜像状态、镜像地址、病毒扫描结果、漏洞扫描结果和签名信息中的至少一项;若所述目标融合镜像实例为所述第二融合镜像实例,所述目标融合镜像实例的镜像详情信息包括镜像名称、镜像类型、命名空间名称、创建时间、更新时间、镜像状态、镜像文件名称、目标持久性卷的名称和镜像文件大小中的至少一项。13.根据权利要求11所述的方法,其特征在于,所述方法还包括:响应于对所述第二界面上的目标融合镜像实例的删除操作,删除所述目标融合镜像实例以及与所述目标融合镜像实例对应的虚拟机镜像或容器镜像;所述目标融合镜像实例为所述第一融合镜像实例或所述第二融合镜像实例。14.根据权利要求13所述的方法,其特征在于,若所述目标融合镜像实例为所述第一融合镜像实例;删除与所述目标融合镜像实例对应的容器镜像,包括:向所述镜像仓库发送镜像删除请求;所述镜像删除请求用于请求删除所述目标容器镜像,所述删除请求包括所述目标容器镜像在所述镜像仓库上的镜像地址;若所述目标融合镜像实例为所述第二融合镜像实例,删除与所述目标融合镜像实例对应的虚拟机镜像,包括:删除所述存储地址指示的存储空间。15.根据权利要求1-14中任一项所述的方法,其特征在于,所述方法还包括:获取第一部署模板;所述第一部署模板用于记载部署目标容器所需的部署信息,所述
第一部署模板包括所述第一融合镜像实例的名称;获取与所述第一融合镜像实例对应的所述目标容器镜像在所述镜像仓库上的镜像地址;生成第二部署模板;所述第二部署模板包括所述目标容器镜像在所述镜像仓库上的镜像地址,所述第二部署模板用于部署所述目标容器。16.根据权利要求15所述的方法,其特征在于,所述生成第二部署模板,包括:若所述第一融合镜像实例还包括病毒扫描结果、且所述病毒扫描结果满足预设条件,生成所述第二部署模板;和/或若所述第一融合镜像实例还包括漏洞扫描结果、且所述漏洞扫描结果满足预设条件,生成所述第二部署模板;和/或若所述第一融合镜像实例还包括签名信息、且所述签名信息满足预设条件,生成所述第二部署模板。17.根据权利要求2、8-14中任一项所述的方法,其特征在于,所述方法还包括:获取第三部署模板;所述第三部署模板用于记载部署目标虚拟机所需的部署信息,所述第三部署模板包括所述第二融合镜像实例的名称;获取与所述第二融合镜像实例对应的所述目标虚拟机镜像的目标地址;生成第四部署模板;所述第四部署模板包括所述目标虚拟机镜像的目标地址,所述第二部署模板用于部署所述目标虚拟机。18.一种计算机设备,其特征在于,所述计算机设备用于执行如权利要求1-17任一项所述的方法。19.一种服务器集群,其特征在于,所述服务器集群包括控制节点和/或工作节点;其中,所述控制节点和/或所述工作节点用于执行如权利要求1-17中任一项所述的方法。

技术总结
本申请提供了一种镜像管理方法、计算机设备及服务器集群,涉及容器镜像技术领域。该方法中,若镜像仓库上传了目标容器镜像,服务器集群基于容器管理系统所支持的融合镜像资源类型,自动为容器管理系统创建第一融合镜像实例,该第一融合镜像实例包括目标容器镜像在镜像仓库上的镜像地址。由于不同容器镜像具有不同的镜像地址,因此,第一融合镜像实例可以指向镜像仓库中唯一的容器镜像,从而也就建立了镜像仓库中的容器镜像与容器管理系统中的融合镜像实例之间的对应关系。基于此,就可以通过管理容器管理系统上的融合镜像实例,实现管理镜像仓库中的容器镜像。理镜像仓库中的容器镜像。理镜像仓库中的容器镜像。


技术研发人员:熊素娟
受保护的技术使用者:超聚变数字技术有限公司
技术研发日:2023.02.03
技术公布日:2023/7/20
版权声明

本文仅代表作者观点,不代表航空之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)

飞行汽车 https://www.autovtol.com/

分享:

扫一扫在手机阅读、分享本文

相关推荐