云原生存储数据卷的自动扩容方法、系统及设备与流程

allin2022-07-12  201



1.本技术实施例涉及云原生存储领域,具体涉及一种云原生存储数据卷的自动扩容方法、系统及设备。


背景技术:

2.在云原生场景下,kubernetes系统提供了存储数据卷机制和丰富的插件,来实现容器数据持久化和容器间共享数据的问题,即将部署在容器组中的应用运行过程中产生的数据持久化存储至与容器组绑定的存储数据卷中。
3.其中,存储数据卷主要是指后端存储数据卷,具体是指位于独立于kubernetes集群的后端存储系统上的存储设备。而随着kubernetes集群中容器化部署的应用持续运行,越来越多的数据被持久化存储到绑定的存储数据卷中,因此需要对存储数据卷进行扩容操作,否则一旦存储数据卷的可用容量耗尽,将导致新产生的数据无法继续写入,应用处于不可用的状态。
4.目前,通常有两种方式来对存储数据卷进行扩容:一是设置专人值守,定时访问后端存储系统,查询存储数据卷的剩余可用容量,并在剩余可用容量不足时手动进行编辑,以实现扩容;二是预先设置极大的容量数值,通过提供足够大的剩余可用容量,使得应用经过长时间运行也无需进行扩容。
5.但是,对于上述第一种扩容方式,存在人工监测效率低且手动编辑操作繁琐的技术问题,而对于上述第二种扩容方式,则存在存储资源浪费的技术问题。


技术实现要素:

6.本技术实施例提供的云原生存储数据卷的自动扩容方法、系统及设备,以对目标应用对应的存储数据卷进行自动扩容,从而动态适配目标应用的存储需求。
7.第一方面,本技术实施例提供了一种云原生存储数据卷的自动扩容方法,包括:
8.获取目标应用对应的目标存储数据卷的存储状态信息;
9.若所述存储状态信息满足目标扩容策略中的目标触发条件,则根据所述目标扩容策略中的目标扩容操作对所述目标存储数据卷进行扩容;所述目标扩容策略包括用于适配所述目标应用存储需求的预设配置信息。
10.可选的,所述获取目标应用对应的目标存储数据卷的存储状态信息,包括:
11.获取所述目标应用对应的存储数据卷声明文件;
12.通过解析所述存储数据卷声明文件确定所述目标存储数据卷;
13.通过应用程序接口获取所述目标存储数据卷的当前使用信息;所述应用程序接口用于访问后端存储系统,所述后端存储系统包括所述目标存储数据卷,所述存储状态信息包括所述当前使用信息。
14.可选的,所述根据所述目标扩容策略中的目标扩容操作对所述目标存储数据卷进行扩容,包括:
15.根据所述目标扩容操作配置所述存储数据卷声明文件中的需求容量字段;
16.根据配置后的所述存储数据卷声明文件对所述目标存储数据卷进行扩容。
17.可选的,所述的云原生存储数据卷的自动扩容方法,还包括:
18.通过所述应用程序接口获取所述后端存储系统中的全部存储数据卷的当前使用信息;
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.图1是本技术根据一示例性实施例示出的云原生存储数据卷的自动扩容方法的流程示意图;
46.图2是本技术根据另一示例性实施例示出的云原生存储数据卷的自动扩容方法的流程示意图;
47.图3为本技术根据又一示例性实施例示出的云原生存储数据卷的自动扩容方法的流程示意图;
48.图4是本技术根据一示例性实施例示出的存储数据卷的自动扩容方法的逻辑示意图;
49.图5为本技术根据再一示例性实施例示出的云原生存储数据卷的自动扩容方法的流程示意图;
50.图6是本技术根据一示例性实施例示出的存储数据卷的当前使用信息查询的逻辑示意图;
51.图7是本技术根据一示例性实施例示出的云原生存储数据卷的扩容策略配置方法的流程示意图;
52.图8是本技术根据一示例性实施例示出的存储数据卷的扩容策略配置的逻辑示意图;
53.图9是本技术根据一示例性实施例示出的存储数据卷扩容组件的逻辑示意图;
54.图10是本技术根据一示例性实施例示出的容器集群管理系统的架构示意图;
55.图11是本技术根据一示例性实施例示出的客户端设备的架构示意图。
具体实施方式
56.下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述。本领域技术人员应当理解的是,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域技术人员可以进行任何适当的修改或变型,从而获得的所有其它实施例。
57.在云原生场景下,kubernetes系统提供了存储数据卷机制和丰富的插件,来实现容器数据持久化和容器间共享数据的问题,即将部署在容器组中的应用运行过程中产生的数据持久化存储至与容器组绑定的存储数据卷中。其中,kubernetes系统是一个用于管理云平台中多个主机上的容器化的应用,其目标是让部署容器化的应用简单并且高效提供了应用部署,规划,更新,维护的一种机制。具体地,云平台中的多个主机以集群的形式进行管理,称为kubernetes集群。
58.当容器组因故障被kubernetes系统中的kubelet组件重启后,持久化存储在存储数据卷中的数据不会被清理,重启后的容器组中的应用可以继续使用绑定的存储数据卷中的数据,从而实现应用的高可靠性能。
59.其中,本技术实施例中的存储数据卷既包括位于kubernetes集群中的主机上的存储数据卷,还包括后端存储数据卷,其中后端存储数据卷具体是指位于独立于kubernetes集群的后端存储系统上的存储设备。为了便于说明,本技术实施例以后端存储数据卷为例进行说明,但不作为对本技术实施例的限制。值得说明的是,存储数据卷不是一个具体的物理存储设备,而是对物理存储设备抽象化处理后产生的一个抽象概念,因而具有动态扩容的能力。
60.而随着kubernetes集群中容器化部署的应用持续运行,越来越多的数据被持久化存储到绑定的存储数据卷中,因此需要对存储数据卷进行扩容操作,否则一旦存储数据卷的可用容量耗尽,将导致新产生的数据无法继续写入,应用处于不可用的状态。其中,上述的扩容是指扩大存储数据卷容量,在kubernetes集群中对存储数据卷进行扩容操作需要先后分别对存储数据卷和文件系统进行扩容。
61.此外,由于kubernetes集群没有提供存储数据卷的剩余可用容量的查询功能,应用管理员无法在kubernetes集群中实时获知存储数据卷的剩余可用容量,因此,目前在kubernetes集群中对后端存储系统中的存储数据卷进行扩容操作时,需要在获取后端存储系统的访问权限后,访问后端存储系统查询每个存储数据卷的剩余可用容量。对于剩余可用容量不足的存储数据卷,应用管理员手动编辑该存储数据卷对应的存储数据卷声明文件(即persistent volume claim,pvc文件)中的“需求容量”字段,由容器存储接口(container storage interface,csi)根据修改后的存储数据卷声明文件完成对存储数据卷的扩容操作,再由kubelet组件根据扩容后的存储数据卷,自动完成对文件系统的扩容。
62.基于此,在目前的生产实践中,通常有两种方式来对存储数据卷进行扩容:一是设置专人值守,定时访问后端存储系统,查询存储数据卷的剩余可用容量,并在剩余可用容量不足时手动进行编辑,即在剩余可用容量不足时手动编辑存储数据卷声明文件中的“需求容量”字段,对存储数据卷进行扩容,以实现扩容;二是预先设置极大的容量数值,可以是预先对存储数据卷声明文件中的“需求容量”字段设置极大的数值,从而通过提供足够大的剩余可用容量,使得应用经过长时间运行也无需进行扩容。但是,对于上述第一种扩容方式,在生产实践中,后端存储系统通常由存储厂商提供并自行管理,访问后端存储系统需要获得后端存储系统管理员的授权,存在人工监测效率低且手动编辑操作繁琐的技术问题,而对于上述第二种扩容方式,则存在存储资源浪费的技术问题。
63.此外,现有的两种对存储数据卷进行扩容的方式,对不同存储数据卷采用相同的扩容操作,没有根据与存储数据卷绑定的应用的存储需求,对存储数据卷进行个性化的扩容,无法满足不同应用的存储需求。
64.为了解决现有生产实践中存储数据卷所采取的扩容方式存在的缺陷,本技术所采取的发明构思如下:
65.通过获取目标应用对应的目标存储数据卷的存储状态信息,并将所获取的存储状态信息与目标扩容策略中的目标触发条件进行对比,在满足目标触发条件时,则根据目标扩容策略中的目标扩容操作对存储数据卷进行扩容,其中目标扩容策略包括用于适配目标应用存储需求的预设配置信息,从而可以利用目标扩容策略中的预设配置信息对目标应用对应的存储数据卷进行自动扩容,以动态适配目标应用的存储需求。
66.具体的,为了实现根据所绑定的应用使用不同的扩容策略对存储数据卷进行扩容操作,本技术实施例在kubernetes系统中引入了扩容策略资源文件和容器化部署的存储数据卷扩容组件,扩容策略资源文件用于接收应用管理员写入的至少一种扩容策略,应用管理员可以通过添加扩容注解信息的方式为需要对所绑定的存储数据卷进行自动扩容操作的应用绑定某种扩容策略,存储数据卷扩容组件用于将应用绑定的扩容策略与应用绑定的存储数据卷进行关联,并具体执行对应用绑定的存储数据卷的扩容操作。此外,存储数据卷扩容组件还用于实时检测每个应用绑定的存储数据卷的当前用量,并记录在扩容策略资源文件中,以供应用管理员查询。
67.图1是本技术根据一示例性实施例示出的云原生存储数据卷的自动扩容方法的流程示意图。如图1所示,本技术实施例提供的云原生存储数据卷的自动扩容方法,包括:
68.步骤s101、获取目标应用对应的目标存储数据卷的存储状态信息。
69.具体的,本技术实施例提供的方法步骤的执行主体可以是任意的容器集群管理系统,可选的,可以为kubernetes集群管理系统,其中,kubernetes集群管理系统是一个用于管理云平台中多个主机上的容器化的应用,以使对部署容器化的应用能够进行简单并且高效的管理。其中,在容器集群管理系统中可以部署多个应用,可以将需要对所绑定的存储数据卷进行自动扩容操作的应用定义为目标应用,相应地,可以将用于持久化存储目标应用运行过程中产生的数据的存储数据卷定义为目标存储数据卷。需要说明的是,对于目标应用的确定可以是预先设定,也可以由容器集群管理系统根据各个应用的业务需求变化自行进行调整,本技术实施例对此不做限定。
70.进一步地,在本步骤中,可以通过获取目标应用对应的目标存储数据卷的存储状
态信息来确定目标存储数据卷的存储状态。其中,对于获取方式,可以是响应于用户操作进行被动获取,也可以是根据预设获取时间机制或者条件机制进行自动获取。而对于存储状态信息,则可以是通过直接访问目标存储数据卷进行获取,可以是设置相应的文件对目标存储数据卷的存储状态信息进行保存,然后通过访问该文件的方式进行间接获取。
71.步骤s102、若存储状态信息满足目标扩容策略中的目标触发条件,则根据目标扩容策略中的目标扩容操作对目标存储数据卷进行扩容。
72.其中,目标扩容策略包括用于适配目标应用存储需求的预设配置信息。
73.在获取到目标应用对应的目标存储数据卷的存储状态信息之后,可以判断当前的存储状态信息是否满足目标扩容策略中的目标触发条件。可选的,可以是根据每个目标应用的存储需求分别绑定对应的目标扩容策略,而存储需求可以是根据应用对应的业务类型进行区分,也可以是对每个应用进行单独定义,还可以是根据应用产生数据的历史情况自动生成。
74.在判断当前的存储状态信息是否满足目标扩容策略中的目标触发条件后,若存储状态信息满足目标扩容策略中的目标触发条件,则根据目标扩容策略中的目标扩容操作对目标存储数据卷进行扩容。而若存储状态信息未满足目标扩容策略中的目标触发条件,则无需对目标存储数据卷进行扩容。
75.在本技术实施例中,通过获取目标应用对应的目标存储数据卷的存储状态信息,并将所获取的存储状态信息与目标扩容策略中的目标触发条件进行对比,在满足目标触发条件时,则根据目标扩容策略中的目标扩容操作对存储数据卷进行扩容,其中目标扩容策略包括用于适配目标应用存储需求的预设配置信息,从而可以利用目标扩容策略中的预设配置信息对目标应用对应的存储数据卷进行自动扩容,以动态适配目标应用的存储需求。
76.图2为本技术根据另一示例性实施例示出的云原生存储数据卷的自动扩容方法的流程示意图。如图2所示,本技术实施例提供的云原生存储数据卷的自动扩容方法,包括:
77.步骤s201、获取目标应用对应的存储数据卷声明文件。
78.需要说明的是,要实现步骤s101中的获取目标应用对应的目标存储数据卷的存储状态信息,先要确定目标应用对应的目标存储数据卷,再获取目标存储数据卷的存储状态信息。
79.在kubernetes集群管理系统中,目标应用和目标存储数据卷通过目标应用对应的存储数据卷声明文件进行绑定,具体通过存储数据卷声明文件的内容将目标应用与目标存储数据卷进行绑定。因此,要确定目标存储数据卷,需要先获取目标应用对应的存储数据卷声明文件。
80.步骤s202、通过解析存储数据卷声明文件确定目标存储数据卷。
81.基于前述说明,可以知道,通过目标应用对应的存储数据卷声明文件中的存储字段的内容,可以将目标应用和目标存储数据卷进行绑定,因此通过解析目标应用对应的存储数据卷声明文件中的存储字段的内容,即可确定目标应用对应的目标存储数据卷。
82.步骤s203、通过应用程序接口获取目标存储数据卷的当前使用信息。
83.其中,应用程序接口(application programming interface,api)用于访问后端存储系统,后端存储系统包括目标存储数据卷,目标存储数据卷的存储状态信息包括目标存储数据卷的当前使用信息。
84.基于前述说明,可以知道,本技术实施例以后端存储数据卷为例进行说明,并且后端存储数据卷是指位于独立于kubernetes集群的后端存储系统上的存储设备。因此,kubernetes集群管理系统无法直接对位于后端存储系统中的目标存储数据卷进行访问,需要通过后端存储系统提供的应用程序接口来获取位于后端存储系统上的目标存储数据卷的当前使用信息。
85.具体地,目标存储数据卷的当前使用信息具体可以包括目标存储数据卷的当前使用率,即目标存储数据卷的当前使用量占目标存储数据卷的总容量的比率。
86.此外,上述当前使用信息还可以包括当前剩余量、当前剩余率、使用增长率、剩余下降率中的至少一项。当前剩余量即目标存储数据卷剩余可用容量,当前剩余率即目标存储数据卷剩余可用容量占目标存储数据卷的总容量的比率,使用增长率即目标存储数据卷在单位时间内使用量的增长量与当前使用量的比率,剩余下降率即目标存储数据卷在单位时间内剩余可用容量的减小量与剩余可用容量的比率。
87.步骤s204、若当前使用信息满足目标扩容策略中的目标触发条件,则根据目标扩容操作配置存储数据卷声明文件中的需求容量字段,并根据配置后的存储数据卷声明文件对目标存储数据卷进行扩容。
88.基于前述说明,可以知道,当前使用信息可以包括目标存储数据卷的当前使用率、当前剩余量、当前剩余率、使用增长率、剩余下降率中的至少一项。
89.相应地,目标触发条件需要与相应的当前使用信息的种类相匹配,比如:当前使用信息具体为目标存储数据卷的当前使用率,如果目标存储数据卷的当前使用率大于或等于预设使用率阈值(比如80%),则对目标存储数据卷扩大预设数值(比如100g)的存储空间或者扩大现有容量的预设比例(比如20%)的存储空间,本技术实施例对此不做限定。再比如:当前使用信息具体为目标存储数据卷的使用增长率,如果目标存储数据卷的使用增长率大于或等于预设使用增长率阈值(比如5%),则对目标存储数据卷扩大预设数值(比如100g)的存储空间或者扩大现有容量的预设比例(比如20%)的存储空间,本技术实施例对此不做限定。
90.进一步地,本技术实施例中的目标触发条件除了上述采用当前使用信息中的一项指标进行独立判定外,还可以采用当前使用信息中的多项指标进行综合判定。比如:当前使用信息具体为目标存储数据卷的当前使用率和使用增长率,如果目标存储数据卷的当前使用率大于或等于预设使用率阈值(比如80%),并且目标存储数据卷的使用增长率大于或等于预设使用增长率阈值(比如5%),则对目标存储数据卷扩大预设数值(比如500g)的存储空间或者扩大现有容量的预设比例(比如50%)的存储空间,本技术实施例对此不做限定。
91.可以理解,在当前使用信息满足目标扩容策略中的目标触发条件的情况下,则可以根据目标扩容策略中与该目标触发条件相对应的目标扩容操作确定需要扩大目标存储数据卷的存储空间的数值,进而根据目标存储数据卷需要扩大的存储空间的数值配置存储数据卷声明文件中的需求容量字段,并根据配置后的存储数据卷声明文件对目标存储数据卷进行扩容。
92.基于前述说明,可以知道,在kubernetes集群管理系统中,存储数据卷声明文件用于将目标应用和目标存储数据卷进行绑定,并且该存储数据卷声明文件中的需求容量字段用于定义目标存储数据卷的存储空间的大小,因此增大存储数据卷声明文件中的需求容量
字段的数值,并由kubernetes集群管理系统的csi插件自动根据配置后的存储数据卷声明文件对目标存储数据卷进行扩容即可完成对目标存储数据卷的扩容操作,接着再由kubernetes集群管理系统的kubelet组件根据扩容后的目标存储数据卷,自动完成对文件系统的扩容。
93.在本技术实施例中,先获取目标应用对应的存储数据卷声明文件,再通过解析存储数据卷声明文件确定目标存储数据卷,接着通过后端存储系统提供的应用程序接口获取目标存储数据卷的当前使用信息。在目标存储数据卷的当前使用信息满足目标扩容策略中的目标触发条件时,则根据目标扩容操作配置存储数据卷声明文件中的需求容量字段,并根据配置后的存储数据卷声明文件对目标存储数据卷进行扩容。从而实现在kubernetes集群管理系统中对目标应用对应的存储数据卷声明文件进行解析和自动配置,实现对目标应用对应的目标存储数据卷进行自动扩容。
94.图3为本技术根据又一示例性实施例示出的云原生存储数据卷的自动扩容方法的流程示意图。如图3所示,本技术实施例提供的云原生存储数据卷的自动扩容方法,包括:
95.步骤s301、对全部应用的资源文件进行解析,以获取标注有扩容注解信息的至少一个目标应用。
96.其中,扩容注解信息用于标注目标应用对应的存储需求。
97.基于前述说明,可以知道,本技术实施例将需要对所绑定的存储数据卷进行自动扩容操作的应用定义为目标应用,为了让容器集群管理系统能够从全部应用中识别出需要对所绑定的存储数据卷进行自动扩容操作的应用,并将其作为目标应用进行扩容操作。本技术实施例通过为应用添加扩容注解信息的方式来对需要对所绑定的存储数据卷进行自动扩容操作的应用进行标注,即标注有扩容注解信息的应用就是本技术实施例中的目标应用。
98.可以理解,扩容注解信息是指在应用的资源文件中添加的一种注解形式的扩容信息,用于标注该应用所绑定的存储数据卷需要进行自动扩容。
99.因此,对部署在容器集群管理系统上的全部应用的资源文件进行解析,从中筛选出具有扩容注解信息的资源文件,进而可以从全部应用中筛选出所有的目标应用。
100.此外,对于不同目标应用对应的不同存储需求,可以使用不同的扩容注解信息进行标注,由此通过扩容注解信息将不同目标应用的存储需求加以区分,进而和不同的扩容策略进行适配。
101.简单来说,本技术实施例中的不同扩容策略中的预设配置信息(包括触发条件及扩容操作)与不同的存储需求相适配,而不同的存储需求又通过不同的扩容注解信息进行标注,因此目标应用所标注的扩容注解信息实质上通过标注存储需求的方式将该目标应用与某种扩容策略进行了绑定。
102.进一步地,本技术实施例可以采用不同方式来使用扩容注解信息标注目标应用对应的存储需求。第一种方式可以使用扩容注解信息标注目标应用对应的业务类型来间接标注目标应用的存储需求,比如可以将目标应用对应的业务类型分为金融业务、电商业务、视频业务、制造系统业务,在生产实践中,不同业务类型的应用对于数据持久化的存储需求存在较大区别,视频业务的应用在运行过程中会持续地生成大量的数据,而制造系统业务的应用在运行过程中只会偶尔生成少量的数据。因此,需要根据目标应用对应的业务类型,为
对应的目标存储数据卷配置不同的触发条件,并采用不同的扩容操作。相应地,对不同的目标应用标注不同的业务类型的名称,而业务类型又与存储需求相关联,通过确定目标应用对应的业务类型即可确定目标应用对应的存储需求。第二种方式可以使用扩容注解信息直接标注目标应用的存储需求,具体可以将存储需求分为持续性高存储需求、持续性低存储需求、临时性高存储需求、临时性低存储需求,为不同存储需求的目标应用标注不同的存储需求的名称,从而确定目标应用对应的存储需求。第三种方式可以使用扩容注解信息标注目标应用对应的目标扩容策略,基于前述说明,可以知道,本技术实施例为目标应用标注扩容注解信息实质上通过标注存储需求的方式将该目标应用与某个扩容策略进行了绑定,因此为不同的目标应用标注对应的目标扩容策略的名称,即可直接将目标应用与对应的目标扩容策略进行绑定。
103.步骤s302、访问扩容策略资源文件。
104.其中,扩容策略资源文件中配置有至少一种扩容策略,扩容策略包括触发条件以及扩容操作。
105.应当理解,本技术实施例通过在容器集群管理系统中部署扩容策略资源文件的方式配置扩容策略,而每种扩容策略具体由触发条件和对应的扩容操作组成。
106.因此,通过访问扩容策略资源文件,可以获取容器集群管理系统中配置的所有扩容策略。
107.步骤s303、根据目标应用的扩容注解信息从扩容策略资源文件中确定目标扩容策略。
108.基于前述说明,可以知道,本技术实施例中的扩容注解信息用于标注目标应用对应的存储需求,而不同扩容策略中的触发条件及扩容操作又与不同的存储需求相适配,因此在根据目标应用的扩容注解信息确定目标应用的存储需求后,可以进一步从扩容策略资源文件中的所有扩容策略中确定与目标应用对应的存储需求相适配的目标扩容策略。
109.如果扩容注解信息标注了目标应用对应的业务类型,则对目标应用的扩容注解信息进行解析后,即可得到目标应用对应的业务类型,再根据目标应用对应的业务类型将目标应用与目标扩容策略进行绑定。
110.或者,如果扩容注解信息标注了目标应用的存储需求,则对目标应用的扩容注解信息进行解析后,即可得到目标应用的存储需求,再根据目标应用的存储需求将目标应用与目标扩容策略进行绑定。
111.或者,如果目标应用的扩容注解信息直接标注了目标应用对应的目标扩容策略的名称,则可以直接从扩容策略资源文件中的所有扩容策略中确定与目标应用对应的目标扩容策略。
112.步骤s304、获取目标应用对应的存储数据卷声明文件。
113.步骤s305、通过解析存储数据卷声明文件确定目标存储数据卷。
114.步骤s306、通过应用程序接口获取目标存储数据卷的当前使用信息。
115.步骤s307、若当前使用信息满足目标扩容策略中的目标触发条件,则根据目标扩容操作配置存储数据卷声明文件中的需求容量字段,并根据配置后的存储数据卷声明文件对目标存储数据卷进行扩容。
116.需要说明的是,前述对上述实施例中的步骤s201-步骤s204的解释说明也适用于
本技术实施例中的步骤s301-步骤s307,此处不再赘述。
117.在本技术实施例中,通过对全部应用的资源文件进行解析,来识别出标注有扩容注解信息的目标应用,从而利用扩容注解信息将目标应用与容器集群管理系统中的其他应用进行区分,并根据扩容注解信息将目标应用与目标扩容策略进行绑定,以便容器集群管理系统后续对目标应用进行自动扩容。
118.图4是本技术根据一示例性实施例示出的存储数据卷的自动扩容方法的逻辑示意图。如图4所示,为了实现前述实施例中的云原生存储数据卷的自动扩容方法,可以在kubernetes集群中容器化部署扩容策略资源文件和存储数据卷扩容组件,其中,存储数据卷扩容组件以daemonset形式进行部署,daemonset控制器能够确保每一个(或者指定)节点上运行一个存储数据卷扩容组件的副本,以使得存储数据卷扩容组件具备高可用的特性。
119.应用管理员在部署应用时,可以通过添加扩容注解信息的方式为该应用标注对应的业务类型。
120.存储数据卷扩容组件可以通过访问所在kubernetes集群的api-server组件获取全部应用的资源文件,并对资源文件进行解析,筛选出标注有扩容注解信息的应用,作为目标应用。存储数据卷扩容组件可以通过访问扩容策略资源文件获取已配置的所有扩容策略,并根据目标应用的扩容注解信息从扩容策略资源文件中确定与目标应用对应的目标扩容策略,从而根据目标应用对应的业务类型,将目标应用与对应的目标扩容策略进行绑定。
121.存储数据卷扩容组件可以通过访问所在kubernetes集群的api-server组件获取目标应用对应的存储数据卷声明文件,并对存储数据卷声明文件进行解析,确定目标应用对应的目标存储数据卷。进而存储数据卷扩容组件可以通过后端存储系统提供的应用程序接口获取位于后端存储系统上的目标存储数据卷的当前使用信息。
122.当目标应用对应的目标存储数据卷的当前使用率超过80%,则存储数据卷扩容组件将存储数据卷声明文件中的需求容量字段的数值增大100g。之后,kubernetes集群管理系统中的csi插件将根据修改后的存储数据卷声明文件的内容,对目标存储数据卷进行扩容,再由kubernetes集群管理系统中的kubelet组件根据扩容后的存储数据卷,对文件系统进行扩容。
123.在前述若干实施例中,本技术所提出的云原生存储数据卷的自动扩容方法实现了当目标应用的存储状态信息满足目标应用对应的目标扩容策略中的目标触发条件时,根据目标扩容策略中的目标扩容操作对目标应用对应的目标存储数据卷进行自动扩容。图5为本技术根据再一示例性实施例示出的云原生存储数据卷的自动扩容方法的流程示意图。如图5所示,为了让应用管理员能够在容器集群管理系统中查询所有应用对应的存储数据卷的当前使用信息,本技术实施例提供的云原生存储数据卷的自动扩容方法,还包括:
124.步骤s401、通过应用程序接口获取后端存储系统中的全部存储数据卷的当前使用信息。
125.其中,后端存储系统中的全部存储数据卷是指与部署在容器集群管理系统中容器化部署的应用进行绑定的全部存储数据卷。
126.需要说明的是,本技术实施例是以位于后端存储系统中的存储数据卷为例进行说明,要获取位于kubernetes集群中的主机上的存储数据卷的当前使用信息,则由容器集群管理系统直接访问该主机即可。
127.进一步地,为了让应用管理员能够及时查询全部存储数据卷的当前使用信息,本技术实施例可以设置容器集群管理系统周期性地通过后端存储系统提供的应用程序接口主动访问后端存储系统。
128.步骤s402、将全部存储数据卷的当前使用信息写入扩容策略资源文件。
129.应当理解,应用管理员通过客户端设备访问容器集群管理系统时,无法直接访问后端存储系统,因此本技术实施例将获取到的全部存储数据卷的当前使用信息写入扩容策略资源文件中,应用管理员通过客户端设备访问扩容策略资源文件进行查询,即可查询到全部存储数据卷的当前使用信息。
130.在本技术实施例中,通过应用程序接口获取后端存储系统中的全部存储数据卷的当前使用信息,并将全部存储数据卷的当前使用信息写入扩容策略资源文件,从而让应用管理员能够在容器集群管理系统中查询所有应用对应的存储数据卷的当前使用信息。
131.此外,在kubernetes集群中存储数据卷的当前使用信息会被同步至文件系统,因此要获取每个应用对应的存储数据卷的当前使用信息,除了直接访问后端存储系统以外,还可以通过访问kubernetes集群中的文件系统来获取,本技术实施例对此不做限定。
132.图6是本技术根据一示例性实施例示出的存储数据卷的当前使用信息查询的逻辑示意图。如图6所示,为了实现前述实施例中对全部存储数据卷的当前使用信息进行查询,可以在kubernetes集群中容器化部署扩容策略资源文件和存储数据卷扩容组件,存储数据卷扩容组件可以通过访问所在kubernetes集群的api-server组件获取所有应用对应的存储数据卷声明文件,并对存储数据卷声明文件进行解析,确定每个应用分别对应的存储数据卷。进而存储数据卷扩容组件可以通过后端存储系统提供的应用程序接口获取位于后端存储系统上的全部存储数据卷的当前使用信息,并将全部存储数据卷的当前使用信息写入扩容策略资源文件。应用管理员通过客户端设备访问扩容策略资源文件即可查询每个应用分别对应的存储数据卷的当前使用信息。
133.具体来说,应用管理员可以通过客户端设备获取查询指令,其中,查询指令可以是可视化操作页面或者以命令行的形式进行触发。客户端设备响应于查询指令,访问扩容策略资源文件,从而查询扩容策略资源文件中所存储的每个应用分别对应的存储数据卷的当前使用信息,并通过客户端设备的可视化操作页面进行显示。
134.需要特别说明的是,本技术实施例中的存储数据卷扩容组件还支持标准的指标格式,从而能够为其他组件提供存储数据卷的容量信息和当前使用信息。
135.基于前述说明,可以知道,本技术实施例中应用管理员通过为应用添加扩容注解信息的方式来将应用与扩容策略资源文件中的某扩容策略进行绑定,为了满足不同应用的实际需求,扩容策略资源文件中的扩容策略应当允许应用管理员手动添加。
136.图7是本技术根据一示例性实施例示出的云原生存储数据卷的扩容策略配置方法的流程示意图。如图7所示,为了让应用管理员能够向扩容策略资源文件中添加新的扩容策略,本技术实施例提供的云原生存储数据卷的扩容策略配置方法,包括:
137.步骤s501、获取用户对目标应用的配置指令。
138.基于前述说明,可以知道,当应用管理员将目标应用部署在容器集群管理系统中之后,如果扩容策略资源文件中没有与之适配的扩容策略,本技术实施例允许应用管理员为目标应用配置新的扩容策略。
139.应用管理员可以根据目标应用的业务类型、存储需求等,输入对目标应用的配置指令,用于配置与目标应用适配的触发条件和扩容操作。
140.步骤s502、响应于用户对目标应用的配置指令,确定目标扩容策略中目标触发条件以及目标扩容操作的配置信息。
141.其中,目标扩容策略用于适配目标应用对应的存储需求。
142.在接收到用户对目标应用的配置指令后,对配置指令对应的配置信息进行整合,即可得到与目标应用对应的目标扩容策略中目标触发条件以及目标扩容操作的配置信息。
143.步骤s503、将目标扩容策略写入集群管理系统中,以使容器集群管理系统根据目标扩容操作对目标存储数据卷进行扩容。
144.为了让应用管理员添加的目标扩容策略能够对目标应用长期有效,本技术实施例将目标扩容策略写入集群管理系统中的扩容策略资源文件中。
145.进一步地,在向扩容策略资源文件中写入目标扩容策略时,应用管理员可以通过客户端设备的可视化操作页面或者命令行的方式设置至少一种目标扩容策略,并存储在扩容策略资源文件中,即用户对目标应用的配置指令可以是通过可视化操作页面或者命令行的方式进行实现。需要强调的是,应用管理员可以根据目标应用所对应的存储需求来对目标扩容策略中目标触发条件以及目标扩容操作进行配置。
146.图8是本技术根据一示例性实施例示出的存储数据卷的扩容策略配置的逻辑示意图。如图8所示,为了让应用管理员能够向扩容策略资源文件中添加新的扩容策略,应用管理员可以通过客户端设备的可视化操作页面或者命令行的方式设置至少一种目标扩容策略,并存储在扩容策略资源文件中。之后,应用管理员为目标应用添加新增的目标扩容策略对应的扩容注解信息,即可将该目标应用与新增的目标扩容策略进行绑定。
147.在该目标应用部署完成后,存储数据卷扩容组件通过访问所在kubernetes集群的api-server组件获取该目标应用的资源文件,根据目标应用的扩容注解信息从扩容策略资源文件中确定与该目标应用对应的新增的目标扩容策略。
148.存储数据卷扩容组件通过访问所在kubernetes集群的api-server组件获取该目标应用对应的存储数据卷声明文件,并对存储数据卷声明文件进行解析,确定该目标应用对应的目标存储数据卷,通过后端存储系统提供的应用程序接口获取位于后端存储系统上的目标存储数据卷的当前使用信息。
149.当该目标应用对应的目标存储数据卷的当前使用信息满足新增的目标扩容策略中的目标触发条件,则根据目标扩容操作配置存储数据卷声明文件中的需求容量字段。之后,kubernetes集群管理系统中的csi插件将根据修改后的存储数据卷声明文件的内容,对目标存储数据卷进行扩容,再由kubernetes集群管理系统中的kubelet组件根据扩容后的存储数据卷,对文件系统进行扩容。
150.图9是本技术根据一示例性实施例示出的存储数据卷扩容组件的逻辑示意图。如图9所示,本实施例中的存储数据卷扩容组件具体可以包括扩容策略解析器、应用监控器、运算器、扩容执行器、用量收集器等组成部件。
151.其中,扩容策略解析器用于对扩容策略资源文件的内容进行解析,确定其中的每个扩容策略中的触发条件和扩容操作。
152.应用监控器用于访问所在kubernetes集群的api-server组件,以获取绑定了扩容
策略的应用,作为目标应用,并通过解析这些目标应用对应的扩容注解信息来确定每个目标应用对应的目标扩容策略,以及通过解析这些目标应用对应的存储数据卷声明文件确定每个目标应用分别绑定的目标存储数据卷。
153.用量收集器用于访问后端存储系统提供的api接口获取每个目标应用分别绑定的目标存储数据卷的当前使用信息,以及获取每个应用绑定的存储数据卷的当前使用信息,并将每个应用绑定的存储数据卷的当前使用信息写入扩容策略资源文件中。
154.运算器用于根据目标应用绑定的目标扩容策略和目标存储数据卷的当前使用信息,判定是否需要对目标应用绑定的目标存储数据卷进行扩容操作,以及计算对该目标存储数据卷进行扩容操作需要增加的容量。
155.扩容执行器用于对目标应用对应的存储数据卷声明文件中的需求容量字段进行修改。
156.综上所述,在本技术实施例中,应用管理员可以通过客户端向扩容策略资源文件中写入扩容策略,以及在部署目标应用时以添加扩容注解信息的方式为目标应用绑定目标扩容策略,并将目标应用绑定的目标扩容策略与目标应用绑定的目标存储数据卷进行关联,从而实现根据所绑定的目标应用的业务类型,对目标存储数据卷设置合适的目标扩容策略,执行目标扩容操作,使得目标存储数据卷适用的目标扩容策略符合目标应用的业务类型的需求。
157.其次,根据存储数据卷声明文件的内容,可以自动完成目标应用与目标存储数据卷的绑定,再根据目标应用的扩容注解信息,自动将目标应用绑定的目标扩容策略与目标存储数据卷进行绑定,并在目标存储数据卷的存储状态信息满足目标扩容策略中的目标触发条件时,自动执行目标扩容操作,自动完成对目标存储数据卷的扩容操作,无需人工干预。
158.再次,存储数据卷扩容组件通过对存储数据卷声明文件中的需求容量字段进行修改,由csi插件根据修改后的存储数据卷声明文件完成对目标存储数据卷的扩容操作,再由kubelet组件根据扩容后的目标存储数据卷,自动完成对文件系统的扩容,从而充分利用kubernetes系统中对存储数据卷进行扩容的相关技术,对现有的kubernetes系统侵入性较低,使得整个方案的实现难度降低。
159.复次,应用管理员只需预先设置目标扩容策略,以及为目标应用绑定目标扩容策略。当目标应用绑定的目标存储数据卷满足绑定的目标扩容策略中的目标触发条件时,存储数据卷扩容组件自动对目标存储数据卷进行精细化扩容,无需人工值守。
160.图10是本技术根据一示例性实施例示出的容器集群管理系统的架构示意图。如图10所示,本技术实施例提供的容器集群管理系统,包括:存储数据卷扩容组件602、扩容策略资源文件603、多个应用601;
161.存储数据卷扩容组件602通过后端存储系统的应用程序接口获取每个应用所对应的存储数据卷的存储状态信息,后端存储系统包括多个应用中目标应用所对应的目标存储数据卷;
162.若目标存储数据卷的存储状态信息满足目标扩容策略中的目标触发条件,则根据目标扩容策略中的目标扩容操作对目标存储数据卷进行扩容,目标扩容策略包括用于适配目标应用存储需求的预设配置信息。
163.可选的,容器集群管理系统具体可以是包含部署在kubernetes集群上的扩容策略资源文件、存储数据卷扩容组件,kubernetes集群包含csi插件与多个应用;
164.每个目标应用部署有与该目标应用业务类型相适配的扩容注解信息,用于绑定某个目标扩容策略;
165.扩容策略资源文件,用于通过客户端设置目标扩容策略并存储;
166.存储数据卷扩容组件,用于获取绑定相应目标扩容策略的目标应用,并解析目标应用的扩容注解信息确定该目标应用绑定的目标扩容策略与存储数据卷声明文件,并根据存储数据卷声明文件确定目标应用绑定的目标存储数据卷;
167.存储数据卷扩容组件,还用于根据扩容策略资源文件确定扩容策略的触发条件与扩容操作;
168.存储数据卷扩容组件,还用于获取应用绑定的存储数据卷的使用率,并判断该使用率是否达到应用的触发条件,若未达到则不进行操作,若达到则根据应用绑定的扩容策略对应用的存储数据卷声明文件中的需求容量字段进行修改;
169.csi插件用于依据修改后的存储数据卷声明文件对存储数据卷进行扩容操作。
170.可选的,存储数据卷扩容组件通过daemonset方式部署在kubernetes集群上,存储数据卷扩容组件通过访问kubernetes集群中的api-sever组件获取绑定相应扩容策略的应用。
171.可选的,存储数据卷扩容组件,具体可以包含扩容策略解析器、应用监控器、运算器、扩容执行器、用量收集器;
172.应用监控器用于通过访问kubernetes集群中的api-sever组件获取绑定相应扩容策略的应用,并解析应用的扩容注解信息确定该应用绑定的扩容策略与存储数据卷声明文件,并根据存储数据卷声明文件确定应用绑定的存储数据卷;
173.扩容策略解析器,用于根据扩容策略资源文件确定每个扩容策略的触发条件与扩容操作;
174.用量收集器,用于获取目标应用对应的目标存储数据卷的当前使用信息;
175.运算器,用于判断目标存储数据卷的当前使用信息是否达到目标应用绑定的目标扩容策略中的目标触发条件,若未达到则不进行操作,若达到则将对目标存储数据卷进行扩容需要增加的容量反馈至扩容执行器;
176.扩容执行器用于对应用的存储数据卷声明文件中的需求容量字段进行修改。
177.可选的,存储数据卷扩容组件,还用于根据存储数据卷声明文件确定全部存储数据卷,并获取全部存储数据卷的当前使用信息,还用于将全部存储数据卷的当前使用信息写入扩容策略资源文件中。
178.在本技术实施例中,组件的划分仅仅为一种逻辑功能划分,在实际实现时还可以有另外的划分方式。例如,多个组件可以进行组合或者可以集成到另一个系统中。另外,各个组件之间的耦合可以是直接耦合或间接耦合。另外,在本技术实施例中的各功能组件可以集成在一个处理模块中,也可以是单独的物理存在等等。
179.所述功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在机器可读存储介质中。因此,本技术的技术方案可以以软件产品的形式来体现,该软件产品可以存储在机器可读存储介质中,其可以包括若干指令用以使得终端设备执行本申
请实施例所描述的技术方案的全部或部分过程。上述存储介质可以包括rom、ram、可移动盘、硬盘、磁盘或者光盘等各种可以存储程序代码的介质。
180.图11是本技术根据一示例性实施例示出的客户端设备的架构示意图。如图11所示,本技术实施例提供的客户端设备700,包括:处理器701、存储器702以及输入装置703;
181.所述存储器702,用于存储所述处理器701的计算机程序;
182.所述输入装置703用于获取用户对目标应用的配置指令;
183.所述处理器701响应于所述配置指令,确定目标扩容策略中目标触发条件以及目标扩容操作的配置信息,所述目标扩容策略用于适配所述目标应用对应的存储需求;
184.所述处理器701被配置为将所述目标扩容策略写入容器集群管理系统中,以使所述容器集群管理系统根据所述目标扩容操作对所述存储数据卷进行扩容。
185.本技术实施例还提供一种机器可读存储介质。该机器可读存储介质可以存储有可执行指令,可执行指令在被机器执行时使得机器实现上面方法实施例中的具体过程。
186.本技术实施例还提供一种计算机程序产品,其包括承载在非暂态计算机可读介质上的计算机程序,该计算机程序包含用于执行本公开实施例的流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信装置从网络上被下载和安装,或者从存储装置被安装,或者从rom被安装。在该计算机程序被处理器执行时,执行本技术实施例中的方法步骤。
187.本技术上述的机器可读存储介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、光纤、便携式紧凑磁盘只读存储器(cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本技术中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本技术中,计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读信号介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:电线、光缆、rf(射频)等等,或者上述的任意合适的组合。
188.此外,本领域技术人员可以明白的是,结合本文中所公开的实施例描述的各示例的单元及算法步骤能够以电子硬件、或者软件和电子硬件的结合来实现。这些功能是以硬件还是软件方式来实现,取决于技术方案的特定应用和设计约束条件。本领域技术人员可以针对每个特定的应用,使用不同的方式来实现所描述的功能,但是这种实现并不应认为超出本技术的范围。
189.以上内容仅为本技术的具体实施方式,本技术的保护范围并不局限于此。本领域技术人员在本技术所公开的技术范围内可以进行变化或替换,这些变化或替换都应当在本
申请的保护范围之内。
转载请注明原文地址: https://www.8miu.com/read-110.html

最新回复(0)