一种实现云原生存储自动化扩容的operator框架系统
文献发布时间:2024-04-18 19:58:21
技术领域
本发明涉及云原生存储技术领域,具体的说是一种实现云原生存储自动化扩容的operator框架系统。
背景技术
在kubernetes中,存储的类型多种多样,根据业务的应用场景可以选择使用不同的存储类型。然而对于原生支持扩容的存储,当存储空间使用到一定比例时,系统无法自动提供告警,需要及时对相关事件进行响应并做出处理,否则将严重影响业务的正常运行,即使对接了Prometheus等监控,也仍然需要技术人员介入进行相关存储的扩容,这就增加了人员的管理和使用成本的投入,且对人员的技术和相关经验有较高的要求。
发明内容
在kubernetes中,存储的类型多种多样,应用场景也各有不同,但当存储容量快要用满时,需要人工操作扩容,无法实现根据当前存储使用情况实现自动扩容,基于此,本发明在kubernetes中通过结合业界常用的Prometheus监控,提供一种实现云原生存储自动化扩容的operator框架系统。
本发明的一种实现云原生存储自动化扩容的operator框架系统,解决上述技术问题采用的技术方案如下:
一种实现云原生存储自动化扩容的operator框架系统,包括:
规则配置模块,用于将所需监控的存储扩容阈值指标转换为Prometheus中的具体规则,Prometheus在存储的使用量超过阈值时发出告警信息,还用于向告警触发模块推送告警信息的类型;
告警触发模块,用于订阅规则配置模块的推送消息,监听Prometheus发出的告警信息,随后通知operator框架模块进行存储的自动化扩容操作;
operator框架模块,用于根据告警触发模块的通知信息进行存储的自动化扩容操作,并向规则配置模块发送扩容完成信息以及更新后的存储配置信息。
可选的,所涉及operator框架模块包含预设的存储扩容控制器以及自定义存储扩容控制器,其中:
预设的存储扩容控制器提供了对已知类型存储的扩容功能,
自定义存储扩容控制器对外提供统一的接口框架,可以根据接口框架以CRD形式自行开发对应功能。
可选的,所涉及规则配置模块具体执行如下操作:
首先,规则配置模块接收用户输入的存储扩容阈值与关联的卷信息,将存储扩容阈值与关联的卷信息写入自定义配置文件中,以生成存储自动扩容配置文件;
其次,规则配置模块在检测到新生成或变更的存储自动扩容配置文件后,读取存储自动扩容配置文件的存储扩容阈值与关联的卷信息,在经过校验、格式化处理后,在容器云平台中生成PrometheusRules类型的CRD资源,该类型资源是Prometheus中的一种用于生成告警规则的资源类型;
最后,在Prometheus监测到新生成的PrometheusRules资源后,根据该资源中的信息开始对所配置存储的使用量进行监控,同时,规则配置模块会向告警触发模块推送一条订阅信息,用于告知告警触发模块所需监听Prometheus告警消息的类型。
优选的,所涉及容器云平台为Kubernetes系统;
Prometheus为Kubernetes中的一种用于监控各类资源指标的监控软件,可以提供多种类型的监控资源、告警信息;
CRD资源为Kubernetes中一种内置的资源类型,用于描述用户自定义的资源。
可选的,所涉及告警触发模块在收到规则配置模块推送的消息后,读取消息中所需监听的资源类型,存储使用阈值信息保存为告警配置文件,并开启对Prometheus指定类型告警的监听;
当用户使用云原生存储容量超过设定的存储扩容阈值后,Prometheus会监控到相关情况,产生告警信息并进行推送,此时,告警触发模块在收到推送的告警信息后,比较告警信息中的资源类型与告警配置文件中监听的资源类型是否一致,如果一致则通知Operator框架模块进行存储扩容操作,如果不一致则忽略。
可选的,所涉及Operator框架模块在收到需要进行存储扩容操作的信息后,
首先解析消息中的存储信息与阈值信息,获取该存储卷当前的实际使用情况,核实是否需要进行扩容;
在验证通过后,判断所需扩容的存储类型是否支持原生扩容,
(a)对于支持原生扩容的存储类型,将根据原始存储的数据卷声明对象生成待扩容存储的数据卷的声明信息资源对象,其中待扩容的数据大小由存储扩容算法生成,
(b)对于不支持原生扩容的存储类型,检查该存储类型是否已添加自定义开发的扩容功能的CRD和operator,若已具备,则在生成待扩容存储的数据卷的声明信息资源对象的同时加入符合接口标准的相关自定义信息,若不具备,则提示用户进行该功能添加;
待所有类型的待扩容存储的数据卷的声明信息资源对象创建完毕后,调用Kubernetes的api进行存储卷的扩容创建;
待存储扩容完成后,向规则配置模块发送扩容完成信息以及更新后的存储配置信息。
优选的,所涉及存储扩容算法的具体内容如下:
获取该云原生存储数据卷从创建到当前时刻的使用时长,设为t;
获取该云原生存储数据卷当前使用量,设为S;
将t平均分为N份,则每段时长为t/N;
获取每段时长t/N范围内存储使用增长量,设为△S;
通过计算S/t可得到存储的平均增长率;
通过计算△S/(t/N)可得到每段t/N时间内的存储使用增长率,则△Sx/(t/Nx),表示表示N中的第x个时间段的存储增长率;
按存储增长率从高到低排序,取前ω个,则扩容倍数因子β的表达式为:
最终扩容存储为β*S。
优选的,所涉及自定义开发的扩容功能的CRD和operator为对于原生不支持扩容操作的存储类型,用户可以根据operator框架模块中预先定义的存储扩容接口进行对应的CRD资源及operator控制器的开发,以实现自定义存储扩容功能。
优选的,所涉及自定义开发的扩容功能的CRD和operator为对于原生不支持扩容操作的存储类型,用户可以根据自定义存储的类型添加多种CRD及对应operator,operator框架模块在检测到新增的CRD和operator后,会自动添加进Kubernetes中。
本发明的一种实现云原生存储自动化扩容的operator框架系统,与现有技术相比具有的有益效果是:
(1)本发明实现了在存储即将用满时,根据预置的策略进行自动扩容的功能,减少了人为维护成本,提高了系统的自动化;
(2)本发明可以根据预设的存储扩容阈值自动进行Prometheus规则的配置,不需要自行配置,大大降低了Prometheus的学习和使用成本;当使用的存储容量达到预设的存储扩容阈值后,还可以根据内置的或者用户自己设置的扩容规则,自动对存储卷进行扩容,保障存储的持续可用性,减少运维人员的介入,降低运维成本。
附图说明
附图1是本发明实施例一的实现架构图;
附图2是本发明实施例一的实现流程图。
具体实施方式
为使本发明的技术方案、解决的技术问题和技术效果更加清楚明白,以下结合具体实施例,对本发明的技术方案进行清楚、完整的描述。
实施例一:
结合附图1,本实施例提出一种实现云原生存储自动化扩容的operator框架系统,包括规则配置模块、告警触发模块和operator框架模块,其中:
规则配置模块用于将所需监控的存储扩容阈值指标转换为Prometheus中的具体规则,Prometheus在存储的使用量超过阈值时发出告警信息,还用于向告警触发模块推送告警信息的类型;
告警触发模块用于订阅规则配置模块的推送消息,监听Prometheus发出的告警信息,随后通知operator框架模块进行存储的自动化扩容操作;
operator框架模块用于根据告警触发模块的通知信息进行存储的自动化扩容操作,并向规则配置模块发送扩容完成信息以及更新后的存储配置信息。
结合附图2,针对本实施例的规则配置模块,其具体执行如下操作:
首先,规则配置模块接收用户输入的存储扩容阈值与关联的卷信息,将存储扩容阈值与关联的卷信息写入自定义配置文件中,以生成存储自动扩容配置文件;
其次,规则配置模块在检测到新生成或变更的存储自动扩容配置文件后,读取存储自动扩容配置文件的存储扩容阈值与关联的卷信息,在经过校验、格式化处理后,在容器云平台中生成PrometheusRules类型的CRD资源,该类型资源是Prometheus中的一种用于生成告警规则的资源类型;
最后,在Prometheus监测到新生成的PrometheusRules资源后,根据该资源中的信息开始对所配置存储的使用量进行监控,同时,规则配置模块会向告警触发模块推送一条订阅信息,用于告知告警触发模块所需监听Prometheus告警消息的类型。
其中,容器云平台为Kubernetes系统;
Prometheus为Kubernetes中的一种用于监控各类资源指标的监控软件,可以提供多种类型的监控资源、告警信息;
CRD资源为Kubernetes中一种内置的资源类型,用于描述用户自定义的资源。
针对本实施例的告警触发模块,其在收到规则配置模块推送的消息后,读取消息中所需监听的资源类型,存储使用阈值信息保存为告警配置文件,并开启对Prometheus指定类型告警的监听;
当用户使用云原生存储容量超过设定的存储扩容阈值后,Prometheus会监控到相关情况,产生告警信息并进行推送,此时,告警触发模块在收到推送的告警信息后,比较告警信息中的资源类型与告警配置文件中监听的资源类型是否一致,如果一致则通知Operator框架模块进行存储扩容操作,如果不一致则忽略。
针对本实施例的operator框架模块,其包含预设的存储扩容控制器以及自定义存储扩容控制器,其中:
预设的存储扩容控制器提供了对已知类型存储的扩容功能,
自定义存储扩容控制器对外提供统一的接口框架,可以根据接口框架以CRD形式自行开发对应功能。
Operator框架模块在收到需要进行存储扩容操作的信息后,
首先解析消息中的存储信息与阈值信息,获取该存储卷当前的实际使用情况,核实是否需要进行扩容;
在验证通过后,判断所需扩容的存储类型是否支持原生扩容,
(a)对于支持原生扩容的存储类型,将根据原始存储的数据卷声明对象生成待扩容存储的数据卷的声明信息资源对象,其中待扩容的数据大小由存储扩容算法生成,
(b)对于不支持原生扩容的存储类型,检查该存储类型是否已添加自定义开发的扩容功能的CRD和operator,若已具备,则在生成待扩容存储的数据卷的声明信息资源对象的同时加入符合接口标准的相关自定义信息,若不具备,则提示用户进行该功能添加;
待所有类型的待扩容存储的数据卷的声明信息资源对象创建完毕后,调用Kubernetes的api进行存储卷的扩容创建;
待存储扩容完成后,向规则配置模块发送扩容完成信息以及更新后的存储配置信息。
需要补充的是,存储扩容算法的具体内容如下:
获取该云原生存储数据卷从创建到当前时刻的使用时长,设为t;
获取该云原生存储数据卷当前使用量,设为S;
将t平均分为N份,则每段时长为t/N;
获取每段时长t/N范围内存储使用增长量,设为△S;
通过计算S/t可得到存储的平均增长率;
通过计算△S/(t/N)可得到每段t/N时间内的存储使用增长率,则△Sx/(t/Nx),表示表示N中的第x个时间段的存储增长率;
按存储增长率从高到低排序,取前ω个,则扩容倍数因子β的表达式为:
最终扩容存储为β*S。
需要补充的是,自定义开发的扩容功能的CRD和operator为对于原生不支持扩容操作的存储类型,用户可以根据operator框架模块中预先定义的存储扩容接口进行对应的CRD资源及operator控制器的开发,以实现自定义存储扩容功能,还可以根据自定义存储的类型添加多种CRD及对应operator,operator框架模块在检测到新增的CRD和operator后,会自动添加进Kubernetes中。
综上可知,采用本发明的一种实现云原生存储自动化扩容的operator框架系统,可以根据预设的存储扩容阈值自动进行Prometheus规则的配置,不需要自行配置,大大降低了Prometheus的学习和使用成本;当使用的存储容量达到预设的存储扩容阈值后,还可以根据内置的或者用户自己设置的扩容规则,自动对存储卷进行扩容,保障存储的持续可用性,减少运维人员的介入,降低运维成本。
以上应用具体个例对本发明的原理及实施方式进行了详细阐述,这些实施例只是用于帮助理解本发明的核心技术内容。基于本发明的上述具体实施例,本技术领域的技术人员在不脱离本发明原理的前提下,对本发明所作出的任何改进和修饰,皆应落入本发明的专利保护范围。
- 一种分布式存储系统的扩容方法及装置
- 云原生存储数据卷的自动扩容方法、系统及设备
- 一种实现自动化演练云原生平台高可用场景的方法及系统