一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种基于本地盘的容器存储资源动态分配的方法和系统与流程

2021-11-15 14:45:00 来源:中国专利 TAG:


1.本发明涉及kubernetes存储领域,具体来说,涉及一种基于本地盘的容器存储资源动态分配的方法和系统。


背景技术:

2.kubernetes是基于容器的集群管理系统,它构建于docker、container等容器运行环境之上,用于管理容器化的工作负载和服务,是一个可移植的、可扩展的开源平台,拥有一个庞大且快速增长的生态系统,其服务、支持和工具广泛可用。
3.pod是kubernetes中创建和管理的、最小的可部署的计算单元,包含一个或多个容器,这些容器共享存储、网络、以及怎样运行这些容器的声明。pod 所建模的是特定于应用的“逻辑主机”,其中包含一个或多个应用容器,这些容器是相对紧密的耦合在一起的。
4.pv(persistentvolume,持久卷)是集群中的一块存储,可以由管理员事先供应,或者使用存储类(storage class)来动态供应。持久卷是集群资源,就像节点也是集群资源一样。pv持久卷和普通的volume一样,也是使用卷插件来实现的,只是它们拥有独立于任何使用 pv的 pod 的生命周期。
5.pvc(persistentvolumeclaim,持久卷请求)表达的是用户对存储的请求。概念上与 pod 类似。pod会耗用节点资源,而pvc申领会耗用pv资源。pod可以请求特定数量的资源(cpu和内存);同样pvc申领也可以请求特定的大小和访问模式。
6.storageclass为管理员提供了描述存储“类”的方法。不同的类型可能会映射到不同的服务质量等级或备份策略,或是由集群管理员制定的任意策略。
7.但是,随着硬件服务器、私有虚拟机及公有云ecs等自带存储介质的容量和性能不断提升。为了让企业客户能够便捷的使用主机本地盘这种高性价比的存储资源,如何能够有效的利用主机的本地盘为容器动态的提供存储变成急需解决的问题。而现有的kubernetes存储子系统无法实现对宿主机本地盘的动态分配,只能通过人工分配和静态pv的方式来完成。
8.针对相关技术中的问题,目前尚未提出有效的解决方案。


技术实现要素:

9.针对相关技术中的问题,本发明提出一种基于本地盘的容器存储资源动态分配的方法和系统,以克服现有相关技术所存在的上述技术问题。
10.为此,本发明采用的具体技术方案如下:根据本发明的一个方面,提供了一种基于本地盘的容器存储资源动态分配的方法,该方法包括以下步骤:s1、对用户创建kubernetes容器的请求进行接收;s2、按照容器所需的存储资源进行资源调度,并给该容器进行kubernetes宿主机的预分配;
s3、对容器所申请的持久卷请求进行预处理;s4、将容器所申请的持久卷请求发送至预分配的宿主机;s5、通过宿主机进行持久卷所需存储卷的创建;s6、将该存储卷进行挂载,并给用户所创建的容器使用。
11.进一步的,其特征在于,所述s1中对用户创建kubernetes容器的请求进行接收还包括以下步骤:s11、通过kubernetes集群实时监听用户向kubernetes发起的pod的创建请求;s12、通过kubernetes集群对请求解析出容器的存储资源需求。
12.进一步的,所述s1中对用户创建kubernetes容器的请求进行接收时,请求包含存储容量大小的需求值。
13.进一步的,所述s2中按照容器所需的存储资源进行资源调度,并给该容器进行kubernetes宿主机的预分配还包括以下步骤:s21、根据宿主机本地盘容量判断该宿主机本地盘是否满足存储容量的需求值,并筛选出可分配容器所需存储容量的宿主机列表;s22、对筛选出的宿主机列表中各个宿主机进行打分,并选择出分值最低的宿主机作为容器存储资源的预分配节点。
14.进一步的,所述s22中对筛选出的宿主机列表中各个宿主机进行打分时,打分规则按如下公式:其中,local_disk_size表示宿主机的本地盘剩余可用容量,单位为字节;local_disk_size / 109表示将宿主机的本地盘剩余可用容量的单位换算成gb;disk_weight表示宿主机的本地盘的权重值,该值>=1,默认值为1,本地盘的disk_weight值越小,该盘的空间越会优先被分配出去。
15.进一步的,所述s3中对容器所申请的持久卷请求进行预处理时,具体查询步骤s2中预分配节点的可调用的grpc接口地址,且通过读取接收到的pv创建请求,获取容器的唯一标识,同时使用该标识访问kubernetes获取到预分配的宿主机ip地址。
16.进一步的,所述s4中将容器所申请的持久卷请求发送至预分配的宿主机时,通过宿主机ip和端口向该宿主机上的本地盘管理接口发生创建存储卷的请求。
17.进一步的,所述s5中通过宿主机进行持久卷所需存储卷的创建还包括以下步骤:s51、接受容器所申请持久卷的存储卷创建请求;s52、解析该存储卷创建需求,并获得用于该存储卷的vg卷组、容量大小及文件系统类型,其中,该文件系统类型包括xfs和ext4;s53、在vg卷组上,创建需求大小的存储卷;s54、按步骤s52所解析出的文件系统类型,对该存储卷进行格式化;其中,所用到的卷管理命令如下:;其中,vol_size为存储卷的大小,默认单位为m,vol_name为存储卷名称,vg_name为本地盘的vg名称。
18.进一步的,所述s6中将该存储卷进行挂载,并给用户所创建的容器使用还包括以
下步骤:s61、将创建的所述存储卷信息返回给kubernetes;s62、由kubernetes给宿主机发起创建容器的指令;s63、宿主机创建该容器,并在存储挂载阶段,将存储卷从宿主机操作系统层映射到容器中使用。
19.根据本发明的另一方面,提供了一种基于本地盘的容器存储资源动态分配的系统,该系统包括:容器存储资源预分配模块、存储资源分配调度模块、宿主机本地盘管理模块及宿主机存储访问模块;其中,所述容器存储资源预分配模块,用于对具备本地盘存储资源的宿主机进行是否满足容器存储资源需求的过滤,并对满足需求的宿主机本地盘存储资源进行打分;所述存储资源分配调度模块,用于根据接受到的容器所需创建、删除持久卷的存储卷信息,查找出预分配宿主机本地盘管理模块的grpc接口地址,并将容器存储请求发送给宿主机本地盘管理模块;所述宿主机本地盘管理模块,用于提供宿主机本地盘存储资源的创建、删除、修改、查询接口,并为其他功能模块提供接口调用服务;所述宿主机存储访问模块,用于将该宿主机本地盘为容器分配的存储卷资源挂载到kubernetes容器中,供其使用;其中,所述宿主机包括裸金属服务器、私有云虚拟机及公有云弹性云服务器中的至少一种。
20.本发明的有益效果为:(1)本发明采用的对宿主机的本地盘存储资源筛选方法,能够有效的对宿主机本地盘存储资源进行过滤,筛选掉无法满足容器对存储资源需求的宿主机,避免了在存储卷创建阶段因本地盘容量不足所引起的创建失败,保证了能够成功为容器动态分配宿主机本地盘的存储资源。
21.(2)本发明采用对宿主机本地盘容量和分配权重的打分方法,在能够成功为容器动态分配宿主机本地盘的存储资源的基础上,通过该打分策略,实现按空间最少使用的策略对宿主机本地盘资源进行分配,同时兼顾容量过大和过小,提高了对宿主机本地盘资源打分的灵活性,避免因随机分配导致的若干宿主机的本地盘可用空间不均匀的情况,保证了基于宿主机本地盘的容器存储资源分配的均衡性。
附图说明
22.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
23.图1是根据本发明实施例的一种基于本地盘的容器存储资源动态分配的方法的流程图一;图2是根据本发明实施例的一种基于本地盘的容器存储资源动态分配的方法的流程图二;
图3是根据本发明实施例的一种基于本地盘的容器存储资源动态分配的方法的流程图三;图4是根据本发明实施例的一种基于本地盘的容器存储资源动态分配的方法的流程图四;图5是根据本发明实施例的一种基于本地盘的容器存储资源动态分配的系统的功能图。
具体实施方式
24.为进一步说明各实施例,本发明提供有附图,这些附图为本发明揭露内容的一部分,其主要用以说明实施例,并可配合说明书的相关描述来解释实施例的运作原理,配合参考这些内容,本领域普通技术人员应能理解其他可能的实施方式以及本发明的优点,图中的组件并未按比例绘制,而类似的组件符号通常用来表示类似的组件。
25.根据本发明的实施例,提供了一种基于本地盘的容器存储资源动态分配的方法和系统,主要涉及对容器存储资源申请需求的接受和解析、存储资源的预分配、存储资源的预处理、创建和挂载存储资源的方法等,旨在实现为kubernetes pod容器的存储资源需求自动分配kubernetes宿主机的本地盘存储资源,并实现宿主机本地盘分配的有效性和均衡性。以本发明作为关键技术开发实现的csi插件(csi,全称是container storage interface,即容器存储接口,用于将任意块和文件存储系统暴露给诸如kubernetes之类的容器编排系统(co)上的容器化工作负载的标准,为容器编排引擎和存储系统间建立了一套标准的存储调用接口,通过该接口能为容器编排引擎提供存储服务)和scheduler extender(调度器扩展器)插件,不仅能够实现为kubernetes pod容器的存储资源需求自动分配kubernetes宿主机的本地盘存储资源,并实现宿主机本地盘分配的有效性和均衡性,是csi和scheduler extender插件是目前实现为kubernetes容器自动分配宿主机本地盘资源的首选组合之一。
26.现结合附图和具体实施方式对本发明进一步说明,如图1所示,根据本发明的一个方面,提供了一种基于本地盘的容器存储资源动态分配的方法,该方法包括以下步骤:s1、对用户创建kubernetes容器的请求进行接收和解析;其中,如图2所示,所述s1中对用户创建kubernetes容器的请求进行接收还包括以下步骤:s11、通过kubernetes集群负责实时监听用户向kubernetes发起的pod的创建请求;s12、通过kubernetes集群对请求解析出容器的存储资源需求,此步骤的存储资源申请需求包含的关键信息如下表1所示:表1 关键信息
所述s1中对用户创建kubernetes容器的请求进行接收时,请求包含存储容量大小的需求值。
27.s2、按照容器所需的存储资源进行资源调度,并给该容器进行kubernetes宿主机的预分配;其中,如图2所示,所述s2中按照容器所需的存储资源进行资源调度,并给该容器进行kubernetes宿主机的预分配还包括以下步骤:s21、根据宿主机本地盘容量判断该宿主机本地盘是否满足存储容量的需求值,并筛选出可分配容器所需存储容量的宿主机列表(由自定义的scheduler extender插件按照卷容量、本地盘标识的需求对宿主机进行过滤,过滤掉不满足这两个需求的宿主机);过滤的判断逻辑符合如下算法1:算法1:评估宿主机容量资源input:包含可用本地盘容量信息的宿主机列表,neitems;容器存储容量的需求值,dnsize;output: 满足容器所需存储容量的需求值的宿主机列表,nefree;1. for node,disksize in neitems2.
ꢀꢀꢀ
if disksize >= dnsize then3.
ꢀꢀꢀꢀꢀꢀ
nefree = append(nefree,node)4.
ꢀꢀꢀ
end if5. end for其中,若某个宿主机disksize>=dnsize,则将通过nefree=append(nefree,node)将该宿主机加入满足存储容量需求的列表nefree中;若不满足,则将该宿主机过滤掉。
28.s22、再按宿主机本地盘容量、本地盘权重等信息对筛选出的宿主机列表中各个宿主机本地盘进行打分,并选择出分值最低的宿主机作为容器存储资源的预分配节点,从而得到能满足pod申请需求的宿主机列表信息。
29.所述s22中对筛选出的宿主机列表中各个宿主机进行打分时,打分规则按如下公式: 其中,local_disk_size表示宿主机的本地盘剩余可用容量,单位为字节;local_disk_size / 109表示将宿主机的本地盘剩余可用容量的单位换算成gb;disk_weight表示宿主机的本地盘的权重值,该值>=1,默认值为1,本地盘的disk_weight值越小,该盘的空间越会优先被分配出去。
30.参考此打分规则公式,如下表2所示,为若干本地盘可用空间满足pod pv 申请需求的宿主机节点打分分值列表:表2 分值列表s3、对容器所申请的持久卷(pv)请求进行预处理(查询步骤s1中为申请pv的容器预分配的宿主机信息);其中,所述s3中对容器所申请的持久卷请求进行预处理时,具体查询步骤s2中预分配节点的可调用的grpc(由google 发起的一种开源远程过程调用系统,该系统基于 http/2 协议传输)接口地址,且通过读取接收到的pv创建请求,获取容器的唯一标识,同时使用该标识访问kubernetes获取到预分配的宿主机ip(网络之间互联协议)地址。
31.s4、将容器所申请的持久卷请求发送至预分配的宿主机;其中,所述s4中将容器所申请的持久卷请求发送至预分配的宿主机时,通过宿主机ip和端口向该宿主机上的本地盘管理接口发生创建存储卷的请求。
32.s5、通过宿主机进行持久卷所需存储卷(volume)的创建;其中,如图3所示,所述s5中通过宿主机进行持久卷所需存储卷的创建还包括以下步骤:s51、接受容器所申请持久卷的存储卷创建请求;s52、解析该存储卷创建需求,并获得用于该存储卷创建的vg(卷组)、容量大小及文件系统类型等,其中,该文件系统类型包括xfs和ext4;s53、在vg卷组上,创建需求大小的存储卷(创建指定容量大小的存储卷);s54、按步骤s52所解析出的文件系统类型,对该存储卷进行格式化;其中,所用到的卷管理命令如下: ;
其中,vol_size为存储卷的大小,默认单位为m,vol_name为存储卷名称,vg_name为本地盘的vg名称。
33.s6、将该存储卷进行挂载,并给用户所创建的容器使用;其中,如图4所示,所述s6中将该存储卷进行挂载,并给用户所创建的容器使用还包括以下步骤:s61、将创建的所述存储卷信息以createvolumeresponse(csi提供的一种用于创建volume的返回消息格式)消息格式返回给kubernetes;s62、由kubernetes给申请该pv volume的容器预分配的宿主机发起创建容器的指令(即发送运行该pod的指令);s63、宿主机开始创建该容器,并在给pod挂载存储时,通过调用宿主机存储访问模块的volume挂载接口将存储卷从宿主机操作系统层映射到容器中使用(即将该volume提供给pod容器使用)。
34.结合附图5,根据本发明的另一方面,提供了一种基于本地盘的容器存储资源动态分配的系统,该系统包括:容器存储资源预分配模块、存储资源分配调度模块、宿主机本地盘管理模块及宿主机存储访问模块;其中,所述容器存储资源预分配模块,用于对具备本地盘存储资源的宿主机进行是否满足容器存储资源需求的过滤,并对满足需求的宿主机本地盘存储资源进行打分,从而保证容器能够被分配到满足其存储资源需求的宿主机上;所述存储资源分配调度模块,用于根据接受到的容器所需创建、删除持久卷的存储卷信息,查找出预分配宿主机本地盘管理模块的grpc接口地址,并将容器存储请求发送给宿主机本地盘管理模块,从而及时将容器侧对volume的创建/删除的请求及时发送给宿主机本地盘管理模块;所述宿主机本地盘管理模块,用于提供宿主机本地盘存储资源的创建、删除、修改、查询等接口,并为其他功能模块提供接口调用服务;所述宿主机存储访问模块,用于将该宿主机本地盘为容器分配的存储卷资源挂载到kubernetes容器中,供其使用;其中,所述宿主机包括裸金属服务器、私有云虚拟机及公有云弹性云服务器等中的至少一种。
35.该系统还包括调度器扩展单元、控制器服务单元、本地盘管理单元及节点服务单元;所述调度器扩展单元,通过对kubernetes scheduler extender调度器扩展功能的拓展,实现容器存储资源预分配模块的功能。首先实现对宿主机节点的过滤,然后再对拥有本地盘的宿主机进行打分。并按步骤s2中的打分规则进行打分,保证为所需创建的容器预分配到最小得分的宿主机。在系统部署过程中,为了本单元能够正常被kubernetes默认调度器所调度,需要提供如下文本内容所示的配置文件:{
ꢀꢀ
"kind" :"policy",
ꢀꢀ
"apiversion" :"v1",
ꢀꢀ
"extenders":
ꢀꢀꢀꢀ
[{
ꢀꢀꢀꢀꢀꢀ
"urlprefix":"http://127.0.0.1:9251",
ꢀꢀꢀꢀꢀꢀ
"filterverb":"predicate",
ꢀꢀꢀꢀꢀꢀ
"prioritizeverb":"prioritize",
ꢀꢀꢀꢀꢀꢀ
"nodecachecapable":false,
ꢀꢀꢀꢀꢀꢀ
"weight":1,
ꢀꢀꢀꢀꢀꢀ
"managedresources":
ꢀꢀꢀꢀꢀꢀ
[{
ꢀꢀꢀꢀꢀꢀꢀꢀ
"name":"csi.diselvm.io/capacity",
ꢀꢀꢀꢀꢀꢀꢀꢀ
"ignoredbyscheduler":true
ꢀꢀꢀꢀꢀꢀ
}]
ꢀꢀꢀꢀ
}]}所述控制器服务单元,通过实例化kubernetes的csi controller(控制器)的部分接口功能,实现存储资源分配调度模块的功能。主要包括创建volume、删除volume及查询所申请pv对应容器被预分配的主机信息等功能,其运行的pod类型为deployment(一种kubernetes的pod类型)。
[0036]
所述本地盘管理单元,主要实现宿主机本地盘管理模块的功能。通过grpc接口服务,对其他单元提供本地盘资源的创建、删除、状态查询等接口功能。此单元对volume名称的命名采用uuid(通用唯一识别码)的方式保证其唯一性,创建出的volume名称诸如“be3f426c

b404

4546

8515

a6e9ab04f5e2”的格式。
[0037]
所述节点服务单元,通过实例化kubernetes的csi node(节点)的部分接口功能,实现存储资源访问模块的功能,提供将volume,并将该volume挂载pod容器中供其使用。
[0038]
综上所述,借助于本发明的上述技术方案,本发明采用的对宿主机的本地盘存储资源筛选方法,能够有效的对宿主机本地盘存储资源进行过滤,筛选掉无法满足容器对存储资源需求的宿主机,避免了在存储卷创建阶段因本地盘容量不足所引起的创建失败,保证了能够成功为容器动态分配宿主机本地盘的存储资源。本发明采用对宿主机本地盘容量和分配权重的打分方法,在能够成功为容器动态分配宿主机本地盘的存储资源的基础上,通过该打分策略,实现按空间最少使用的策略对宿主机本地盘资源进行分配,同时兼顾容量过大(按步骤s22的公式,打分大于10的均采用10)和过小(按步骤s22的公式,打分小于0的均采用0),提高了对宿主机本地盘资源打分的灵活性,避免因随机分配导致的若干宿主机的本地盘可用空间不均匀的情况,保证了基于宿主机本地盘的容器存储资源分配的均衡性。
[0039]
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献