发明内容
本发明的目的在于提供一种容器平台下基于QCOW2技术的存储空间动态供应的方法及应用,解决现有技术中不能使用QCOW2格式的文件作为容器存储的后端的问题。
为实现上述目的,本发明的实施例提供了一种容器平台下基于QCOW2技术的存储空间动态供应的方法。
在本发明的一个或多个实施方式中,所述方法包括:在所述Kubernetes集群主节点的QCOW2-CSI Controller组件接收到用户创建空间事件的配置文件时,所述QCOW2-CSIController组件根据各节点的本地可使用空间,选择和所述配置文件中空间大小匹配的节点,并将所述创建空间事件通过kube-apiserver通知所述节点的QCOW2-CSI Node组件;所述QCOW2-CSI Node组件在所述节点创建满足所述空间大小的QCOW2格式文件,将所述节点名称标记在所述配置文件对应的资源对象中,并通知QCOW2-CSI Controller组件所述事件创建成功;以及在POD使用所述QCOW2格式文件时,将所述QCOW2格式文件映射为块设备,以供所述POD使用。
在本发明的一个或多个实施方式中,所述在POD使用所述QCOW2格式文件时,将所述QCOW2格式文件映射为块设备,包括:在容器使用所述QCOW2格式文件时,将所述容器调度至所述QCOW2格式文件标记的节点名称对应的节点;以及所述QCOW2-CSI Node组件将所述QCOW2格式文件加载到NBD-Server中,并通过NBD-Client将所述NBD-Server中的QCOW2格式文件映射为所述节点的块设备;以及将所述块设备挂载至容器使用目录,以供所述POD使用。
在本发明的一个或多个实施方式中,所述方法还包括:在所述QCOW2格式文件对应的块设备未被格式化时,将所述块设备格式化为文件系统。
在本发明的一个或多个实施方式中,所述方法还包括:在主节点的QCOW2-CSIController组件接收到用户创建快照事件的配置文件时,根据所述配置文件中的QCOW2格式文件信息在所述配置文件对应的资源对象中查询所述QCOW2格式文件所在的节点;所述节点的QCOW2-CSI Node组件在收到所述创建快照事件时,在所述节点的QCOW2格式文件中使用qemu-img命令进行快照创建,并将快照创建结果返回至所述QCOW2-CSI Controller组件。
在本发明的一个或多个实施方式中,所述方法还包括:在主节点的QCOW2-CSIController组件接收到用户修改空间使用容量事件的配置文件时,根据所述配置文件中的QCOW2格式文件信息在所述配置文件对应的资源对象中查询所述QCOW2格式文件所在的节点;所述节点的QCOW2-CSI Node组件在收到所述修改空间使用容量事件时,在所述节点的QCOW2格式文件中使用qemu-img命令进行扩容,并将扩容结果返回至所述QCOW2-CSIController组件。
在本发明的另一个方面当中,提供了一种容器平台下基于QCOW2技术的存储空间动态供应的装置,其包括匹配模块、创建模块和使用模块。
匹配模块,用于在所述Kubernetes集群主节点的QCOW2-CSI Controller组件接收到用户创建空间事件的配置文件时,所述QCOW2-CSI Controller组件根据各节点的本地可使用空间,选择和所述配置文件中空间大小匹配的节点,并将所述创建空间事件通过kube-apiserver通知所述节点的QCOW2-CSI Node组件。
创建模块,用于所述QCOW2-CSI Node组件在所述节点创建满足所述空间大小的QCOW2格式文件,将所述节点名称标记在所述配置文件对应的资源对象中,并通知QCOW2-CSI Controller组件所述事件创建成功。
使用模块,用于在POD使用所述QCOW2格式文件时,将所述QCOW2格式文件映射为块设备,以供所述POD使用。
在本发明的一个或多个实施方式中,所述使用模块还用于:在容器使用所述QCOW2格式文件时,将所述容器调度至所述QCOW2格式文件标记的节点名称对应的节点;以及所述QCOW2-CSI Node组件将所述QCOW2格式文件加载到NBD-Server中,并通过NBD-Client将所述NBD-Server中的QCOW2格式文件映射为所述节点的块设备;以及将所述块设备挂载至容器使用目录,以供所述POD使用。
在本发明的一个或多个实施方式中,所述使用模块还用于:在所述QCOW2格式文件对应的块设备未被格式化时,将所述块设备格式化为文件系统。
在本发明的一个或多个实施方式中,所述创建模块还用于:在主节点的QCOW2-CSIController组件接收到用户创建快照事件的配置文件时,根据所述配置文件中的QCOW2格式文件信息在所述配置文件对应的资源对象中查询所述QCOW2格式文件所在的节点;所述节点的QCOW2-CSI Node组件在收到所述创建快照事件时,在所述节点的QCOW2格式文件中使用qemu-img命令进行快照创建,并将快照创建结果返回至所述QCOW2-CSI Controller组件。
在本发明的一个或多个实施方式中,所述创建模块还用于:在主节点的QCOW2-CSIController组件接收到用户修改空间使用容量事件的配置文件时,根据所述配置文件中的QCOW2格式文件信息在所述配置文件对应的资源对象中查询所述QCOW2格式文件所在的节点;所述节点的QCOW2-CSI Node组件在收到所述修改空间使用容量事件时,在所述节点的QCOW2格式文件中使用qemu-img命令进行扩容,并将扩容结果返回至所述QCOW2-CSIController组件。
在本发明的另一个方面当中,提供了一种电子设备,包括:至少一个处理器;以及存储器,所述存储器存储指令,当所述指令被所述至少一个处理器执行时,使得所述至少一个处理器执行如上所述的容器平台下基于QCOW2技术的存储空间动态供应的方法。
在本发明的另一个方面当中,提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如所述的容器平台下基于QCOW2技术的存储空间动态供应的方法的步骤。
与现有技术相比,根据本发明实施方式的容器平台下基于QCOW2技术的存储空间动态供应的方法及应用,其能够将QCOW2文件通过NBD方式作为容器存储空间,并通过在Kubernetes集群中部署QCOW2-CSI组件实现应用容器使用QCOW2格式文件作为存储后端,实现了容器平台下QCOW2存储的动态供应,并提高了容器平台下本地存储空间的使用率,还实现了基于QCOW2的存储空间动态分配机器快照与扩容功能。
具体实施方式
下面结合附图,对本发明的具体实施方式进行详细描述,但应当理解本发明的保护范围并不受具体实施方式的限制。
除非另有其它明确表示,否则在整个说明书和权利要求书中,术语“包括”或其变换如“包含”或“包括有”等等将被理解为包括所陈述的元件或组成部分,而并未排除其它元件或其它组成部分。
以下结合附图,详细说明本发明各实施例提供的技术方案。
实施例1
如图1至图4所示,介绍本发明的一个实施例中容器平台下基于QCOW2技术的存储空间动态供应的方法,该方法包括如下步骤。
在步骤S101中,在Kubernetes集群主节点的QCOW2-CSI Controller组件接收到用户创建空间事件的配置文件时,QCOW2-CSI Controller组件根据各节点的本地可使用空间,选择和配置文件中空间大小匹配的节点,并将创建空间事件通过kube-apiserver通知节点的QCOW2-CSI Node组件。
QCOW2存储动态供应系统由两个组件构成:(1)QCOW2-CSI Controller:部署在Kubernetes集群的主节点上,用于和Kubernetes系统中的kube-apiserver交互;负责处理来自用户的请求并管理用户使用的各个QCOW2存储块的生命周期;将用户命令选择合适节点下发。(2)QCOW2-CSI Node:部署在Kubernetes集群的各节点上,接收来自QCOW2-CSIController的命令,通过qemu-img二进制QCOW2管理工具执行QCOW2文件的增删改查操作。
如图3所示,用户想要使用一定量的QCOW2存储时,只需要创建一个部署文件,该部署文件包含需要使用空间的大小以及指定使用QCOW2-CSI进行创建即可,该配置文件提交后会在Kubernetes集群中生成一个资源对象对应这个配置文件。当用户创建完该部署文件后,QCOW2-CSI Controller会接收到该创建事件,根据各个节点的本地可使用空间,选择和部署文件中空间大小最匹配的节点,并将创建请求通过kube-apiserver通知该节点QCOW2-CSI Node组件。
kube-apiserver是Kubernetes最重要的核心之一,主要功能如下:提供集群管理的rest api接口,包括认证授权、数据校验一级集群状态变更等;提供与其他模块之间的数据交互和通信。
在步骤S102中,QCOW2-CSI Node组件在节点创建满足空间大小的QCOW2格式文件,将节点名称标记在配置文件对应的资源对象中,并通知QCOW2-CSI Controller组件事件创建成功。
由QCOW2-CSI Node组件在节点上创建出用户指定空间大小的QCOW2格式文件,将QCOW2格式文件所在节点名称标记在该配置文件对应的资源对象中,并通知QCOW2-CSIControlle组件存储空间创建成功。这样实现了QCOW2存储空间的动态供应。
由于QCOW2文件是稀疏文件格式,会随着用户数据的存放量动态扩大磁盘空间占用,因此根据本发明实施方式的容器平台下基于QCOW2技术的存储空间动态供应的方法及应用可以提高本地磁盘空间的使用率。
在步骤S103中,在POD使用QCOW2格式文件时,将QCOW2格式文件映射为块设备,以供POD使用。
如图4所示,当POD使用该QCOW2存储时,首先kube-scheduler会根据该存储空间的节点标记,调度POD到该节点。然后QCOW2-CSI Node组件将对应的QCOW2格式文件加载到NBD-Server中,通过NBD-Client将该QCOW2格式文件映射为本节点的块设备。如果该QCOW2格式文件对应的块设备未被格式化成文件系统,则对该块设备进行格式化,最后将该块设备挂载给POD使用。
NBD指的是Network Block Device,NBD让用户可以通过网络访问到某个块设备,或者设备镜像。NBD-Server:是Linux网络块设备(NBD)的服务器,用户可以将文件加载到服务器中,通过网络将文件导出作为块设备使用。NBD-Client:可以连接到运行nbd-server的服务器,从而将服务器中的磁盘空间作为本地客户端上的块设备。
实施例2
如图5至图6所示,介绍本发明的一个实施例中容器平台下基于QCOW2技术的存储空间动态供应的方法,该方法包括如下步骤。
在步骤S201中,在Kubernetes集群主节点的QCOW2-CSI Controller组件接收到用户创建空间事件的配置文件时,QCOW2-CSI Controller组件根据各节点的本地可使用空间,选择和配置文件中空间大小匹配的节点,并将创建空间事件通过kube-apiserver通知节点的QCOW2-CSI Node组件。
QCOW2存储动态供应系统由两个组件构成:(1)QCOW2-CSI Controller:部署在Kubernetes集群的主节点上,用于和Kubernetes系统中的kube-apiserver交互;负责处理来自用户的请求并管理用户使用的各个QCOW2存储块的生命周期;将用户命令选择合适节点下发。(2)QCOW2-CSI Node:部署在Kubernetes集群的各节点上,接收来自QCOW2-CSIController的命令,通过qemu-img二进制QCOW2管理工具执行QCOW2文件的增删改查操作。
用户想要使用一定量的QCOW2存储时,只需要创建一个部署文件,该部署文件包含需要使用空间的大小以及指定使用QCOW2-CSI进行创建即可,该配置文件提交后会在Kubernetes集群中生成一个资源对象对应这个配置文件。当用户创建完该部署文件后,QCOW2-CSI Controller会接收到该创建事件,根据各个节点的本地可使用空间,选择和部署文件中空间大小最匹配的节点,并将创建请求通过kube-apiserver通知该节点QCOW2-CSI Node组件。
kube-apiserver是Kubernetes最重要的核心之一,主要功能如下:提供集群管理的rest api接口,包括认证授权、数据校验一级集群状态变更等;提供与其他模块之间的数据交互和通信。
在步骤S202中,QCOW2-CSI Node组件在节点创建满足空间大小的QCOW2格式文件,将节点名称标记在配置文件对应的资源对象中,并通知QCOW2-CSI Controller组件事件创建成功。
由QCOW2-CSI Node组件在节点上创建出用户指定空间大小的QCOW2格式文件,将QCOW2格式文件所在节点名称标记在该配置文件对应的资源对象中,并通知QCOW2-CSIControlle组件存储空间创建成功。这样实现了QCOW2存储空间的动态供应。
在步骤S203中,在POD使用QCOW2格式文件时,将QCOW2格式文件映射为块设备,以供POD使用。
当POD使用该QCOW2存储时,首先kube-scheduler会根据该存储空间的节点标记,调度POD到该节点。然后QCOW2-CSI Node组件将对应的QCOW2格式文件加载到NBD-Server中,通过NBD-Client将该QCOW2格式文件映射为本节点的块设备。如果该QCOW2格式文件对应的块设备未被格式化成文件系统,则对该块设备进行格式化,最后将该块设备挂载给POD使用。
在步骤S204中,基于qemu-img QCOW2管理工具对逻辑卷进行快照。
如图6所示,在主节点的QCOW2-CSI Controller组件接收到用户创建快照事件的配置文件时触发快照创建流程,其中,创建快照事件的配置文件中包含逻辑卷信息,根据配置文件中的逻辑卷信息在配置文件对应的资源对象中找到逻辑卷所在的节点,该节点的QCOW2-CSI Node组件收到创建快照事件后找到该节点的QCOW2格式文件,使用qemu-img命令执行快照创建操作,并将结果返回给QCOW2-CSI Controller组件,用户可以通过kube-apiserver查询本次快照创建结果。
实施例3
如图7至图8所示,介绍本发明的一个实施例中容器平台下基于QCOW2技术的存储空间动态供应的方法,该方法包括如下步骤。
在步骤S301中,在Kubernetes集群主节点的QCOW2-CSI Controller组件接收到用户创建空间事件的配置文件时,QCOW2-CSI Controller组件根据各节点的本地可使用空间,选择和配置文件中空间大小匹配的节点,并将创建空间事件通过kube-apiserver通知节点的QCOW2-CSI Node组件。
QCOW2存储动态供应系统由两个组件构成:(1)QCOW2-CSI Controller:部署在Kubernetes集群的主节点上,用于和Kubernetes系统中的kube-apiserver交互;负责处理来自用户的请求并管理用户使用的各个QCOW2存储块的生命周期;将用户命令选择合适节点下发。(2)QCOW2-CSI Node:部署在Kubernetes集群的各节点上,接收来自QCOW2-CSIController的命令,通过qemu-img二进制QCOW2管理工具执行QCOW2文件的增删改查操作。
如图3所示,用户想要使用一定量的QCOW2存储时,只需要创建一个部署文件,该部署文件包含需要使用空间的大小以及指定使用QCOW2-CSI进行创建即可,该配置文件提交后会在Kubernetes集群中生成一个资源对象对应这个配置文件。当用户创建完该部署文件后,QCOW2-CSI Controller会接收到该创建事件,根据各个节点的本地可使用空间,选择和部署文件中空间大小最匹配的节点,并将创建请求通过kube-apiserver通知该节点QCOW2-CSI Node组件。
kube-apiserver是Kubernetes最重要的核心之一,主要功能如下:提供集群管理的rest api接口,包括认证授权、数据校验一级集群状态变更等;提供与其他模块之间的数据交互和通信。
在步骤S302中,QCOW2-CSI Node组件在节点创建满足空间大小的QCOW2格式文件,将节点名称标记在配置文件对应的资源对象中,并通知QCOW2-CSI Controller组件事件创建成功。
由QCOW2-CSI Node组件在节点上创建出用户指定空间大小的QCOW2格式文件,将QCOW2格式文件所在节点名称标记在该配置文件对应的资源对象中,并通知QCOW2-CSIControlle组件存储空间创建成功。这样实现了QCOW2存储空间的动态供应。
在步骤S303中,在POD使用QCOW2格式文件时,将QCOW2格式文件映射为块设备,以供POD使用。
当POD使用该QCOW2存储时,首先kube-scheduler会根据该存储空间的节点标记,调度POD到该节点。然后QCOW2-CSI Node组件将对应的QCOW2格式文件加载到NBD-Server中,通过NBD-Client将该QCOW2格式文件映射为本节点的块设备。如果该QCOW2格式文件对应的块设备未被格式化成文件系统,则对该块设备进行格式化,最后将该块设备挂载给POD使用。
在步骤S304中,基于qemu-img QCOW2管理工具对逻辑卷进行扩容。
如图8所示,在主节点的QCOW2-CSI Controller组件接收到用户修改空间使用容量事件的配置文件时触发扩容流程,其中,配置文件中包含逻辑卷的信息以及逻辑卷扩容后的空间大小,QCOW2-CSI Controller组件根据配置文件中的逻辑卷信息在配置文件对应的资源对象中查询逻辑卷所在的节点,该逻辑卷所在节点的QCOW2-CSI Node组件收到扩容请求后找到该节点的QCOW2格式文件,使用qemu-img命令执行扩容操作,并将结果返回给QCOW2-CSI Controller组件,用户可以通过kube-apiserver查询本次扩容结果。
如图9所示,介绍根据本发明具体实施方式的容器平台下基于QCOW2技术的存储空间动态供应的装置。
在本发明的实施方式中,容器平台下基于QCOW2技术的存储空间动态供应的装置包括匹配模块901、创建模块902和使用模块903。
匹配模块901,用于在Kubernetes集群主节点的QCOW2-CSI Controller组件接收到用户创建空间事件的配置文件时,QCOW2-CSI Controller组件根据各节点的本地可使用空间,选择和配置文件中空间大小匹配的节点,并将创建空间事件通过kube-apiserver通知节点的QCOW2-CSI Node组件。
创建模块902,用于QCOW2-CSI Node组件在节点创建满足空间大小的QCOW2格式文件,将节点名称标记在配置文件对应的资源对象中,并通知QCOW2-CSI Controller组件事件创建成功。
使用模块903,用于在POD使用QCOW2格式文件时,将QCOW2格式文件映射为块设备,以供POD使用。
使用模块903还用于:在容器使用QCOW2格式文件时,将容器调度至QCOW2格式文件标记的节点名称对应的节点;以及QCOW2-CSI Node组件将QCOW2格式文件加载到NBD-Server中,并通过NBD-Client将NBD-Server中的QCOW2格式文件映射为节点的块设备;以及将块设备挂载至容器使用目录,以供POD使用。
使用模块903还用于:在QCOW2格式文件对应的块设备未被格式化时,将块设备格式化为文件系统。
创建模块902还用于:在主节点的QCOW2-CSI Controller组件接收到用户创建快照事件的配置文件时,根据配置文件中的QCOW2格式文件信息在配置文件对应的资源对象中查询QCOW2格式文件所在的节点;节点的QCOW2-CSI Node组件在收到创建快照事件时,在该节点的QCOW2格式文件中使用qemu-img命令进行快照创建,并将快照创建结果返回至QCOW2-CSI Controller组件。
创建模块902还用于:在主节点的QCOW2-CSI Controller组件接收到用户修改空间使用容量事件的配置文件时,根据配置文件中的QCOW2格式文件信息在配置文件对应的资源对象中查询QCOW2格式文件所在的节点;节点的QCOW2-CSI Node组件在收到修改空间使用容量事件时,在该节点的QCOW2格式文件中使用qemu-img命令进行扩容,并将扩容结果返回至QCOW2-CSI Controller组件。
图10示出了根据本说明书的实施例的用于容器平台下基于QCOW2技术的存储空间动态供应的计算设备100的硬件结构图。如图10所示,计算设备100可以包括至少一个处理器1001、存储器1002(例如非易失性存储器)、内存1003和通信接口1004,并且至少一个处理器1001、存储器1002、内存1003和通信接口1004经由总线1005连接在一起。至少一个处理器1001执行在存储器1002中存储或编码的至少一个计算机可读指令。
应该理解,在存储器1002中存储的计算机可执行指令当执行时使得至少一个处理器1001进行本说明书的各个实施例中以上结合图1-10描述的各种操作和功能。
在本说明书的实施例中,计算设备100可以包括但不限于:个人计算机、服务器计算机、工作站、桌面型计算机、膝上型计算机、笔记本计算机、移动计算设备、智能电话、平板计算机、蜂窝电话、个人数字助理(PDA)、手持装置、消息收发设备、可佩戴计算设备、消费电子设备等等。
根据一个实施例,提供了一种比如机器可读介质的程序产品。机器可读介质可以具有指令(即,上述以软件形式实现的元素),该指令当被机器执行时,使得机器执行本说明书的各个实施例中以上结合图1-10描述的各种操作和功能。具体地,可以提供配有可读存储介质的系统或者装置,在该可读存储介质上存储着实现上述实施例中任一实施例的功能的软件程序代码,且使该系统或者装置的计算机或处理器读出并执行存储在该可读存储介质中的指令。
根据本发明实施方式的容器平台下基于QCOW2技术的存储空间动态供应的方法及应用,其能够将QCOW2文件通过NBD方式作为容器存储空间,并通过在Kubernetes集群中部署QCOW2-CSI组件实现应用容器使用QCOW2格式文件作为存储后端,实现了容器平台下QCOW2存储的动态供应,并提高了容器平台下本地存储空间的使用率,还实现了基于QCOW2的存储空间动态分配机器快照与扩容功能。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
前述对本发明的具体示例性实施方案的描述是为了说明和例证的目的。这些描述并非想将本发明限定为所公开的精确形式,并且很显然,根据上述教导,可以进行很多改变和变化。对示例性实施例进行选择和描述的目的在于解释本发明的特定原理及其实际应用,从而使得本领域的技术人员能够实现并利用本发明的各种不同的示例性实施方案以及各种不同的选择和改变。本发明的范围意在由权利要求书及其等同形式所限定。