存储资源配置方法、存储资源控制器及调度系统与流程

文档序号:25182325发布日期:2021-05-25 14:57阅读:158来源:国知局
存储资源配置方法、存储资源控制器及调度系统与流程

本申请涉及数据处理技术领域,特别涉及云计算技术领域,具体涉及存储资源配置方法、存储资源控制器及调度系统。



背景技术:

随着银行it系统架构的发展演变,分布式技术体系凭借着其成本低、性能容量高、水平扩展方便等优势,迅速成为了银行信息化建设的主要的方向之一。例如分布式集群的中的基于kubernetes技术实现的paas云平台方案也越来越流行,同时,分布式集群中各个服务对于存储这种关键资源的依赖越来越高,对存储的容量、速度、稳定性和价格等方面的要求也越来越高。

在分布式集群中,运行服务离不开持久化地将数据保存起来,这就涉及到分布式集群的存储系统。但目前尚未有较为完善且适用于如kubernetes集群等分布式集群的存储解决方案,因此使得现有的分布式集群的存储方案存在的调度复杂、数据不一致及读取速度慢等问题。



技术实现要素:

针对现有技术中的问题,本申请提供一种存储资源配置方法、存储资源控制器及调度系统,能够有效提供分布式集群的存储资源配置的成功率及可靠性,并能够有效降低存储资源的调度复杂度,能够保证数据的一致性,也能够保证分布式集群读写的高速性能。

为解决上述技术问题,本申请提供以下技术方案:

第一方面,本申请提供一种存储资源配置方法,包括:

获取用户创建的针对分布式集群的第一存储资源请求信息,并确定该第一存储资源请求信息对应的存储类型;

根据所述第一存储资源请求信息对应的存储类型,自所述分布式集群中选取与所述第一存储资源请求信息相匹配的目标本地存储资源;

将所述第一存储资源请求信息与所述目标本地存储资源进行绑定处理。

进一步地,还包括:

获取所述分布式集群中的容器集合发出的第二存储资源请求信息,并确定该第二存储资源请求信息对应的绑定类型;

根据所述第二存储资源请求信息对应的绑定类型,调用预设的调度器接口组件自所述分布式集群中的各个节点中选取与所述第二存储资源请求信息相匹配的目标本地存储资源,其中,所述调度器接口组件设置在所述分布式集群中的主节点中;

将所述第二存储资源请求信息与所述目标本地存储资源进行绑定处理。

进一步地,所述存储类型包括:静态存储类型;

相对应的,所述根据所述第一存储资源请求信息对应的存储类型,自所述分布式集群中选取与所述第一存储资源请求信息相匹配的目标本地存储资源,包括:

基于所述静态存储类型对应的筛选规则,在所述分布式集群中进行遍历,以得到与所述第一存储资源请求信息相匹配的目标本地存储资源;

其中,所述筛选规则包括:目标本地存储资源满足预设条件,所述预设条件包括:与所述第一存储资源请求信息的存储类型相匹配、当前未绑定至任一存储资源请求信息、当前状态为可用状态、兼容所述第一存储资源请求信息对应的存储类和存储容量中的至少一项。

进一步地,所述存储类型包括:动态存储类型;

相对应的,所述根据所述第一存储资源请求信息对应的存储类型,自所述分布式集群中选取与所述第一存储资源请求信息相匹配的目标本地存储资源,包括:

生成包含有所述第一存储资源请求信息对应的调取要求的调用指令;其中,所述调取要求包括:指定节点列表、指定存储资源容量和待调度的磁盘种类中的至少一种;

基于所述调用指令调用所述动态存储类型对应的调度器的调度请求接口,以使该调度器根据所述调用指令获取满足所述调取要求的目标本地存储资源。

进一步地,所述绑定类型包括:新建绑定类型;

所述根据所述第二存储资源请求信息对应的绑定类型,调用预设的调度器接口组件自所述分布式集群中的各个节点中选取与所述第二存储资源请求信息相匹配的目标本地存储资源,还包括:

根据所述新建绑定类型向所述主节点中的调度器接口组件发送对应的调度指令,以使该调度器接口组件根据该调度指令对本地存储的节点信息进行遍历,得到与所述第二存储资源请求信息相匹配的目标本地存储资源,其中,所述节点信息为分别设置在各个所述节点中的调度器预先发送至所述调度器接口组件的;

接收所述调度器接口组件发送的目标本地存储资源对应的节点唯一标识。

进一步地,所述绑定类型包括:重新绑定类型;

所述根据所述第二存储资源请求信息对应的绑定类型,调用预设的调度器接口组件自所述分布式集群中的各个节点中选取与所述第二存储资源请求信息相匹配的目标本地存储资源,还包括:

根据所述重新绑定类型向所述主节点中的调度器接口组件发送对应的调度指令,以使该调度器接口组件根据该调度指令在本地存储的节点信息中查找到所述第二存储资源请求信息指定重新绑定的目标本地存储资源,其中,所述节点信息为分别设置在各个所述节点中的调度器预先发送至所述调度器接口组件的;

接收所述调度器接口组件发送的目标本地存储资源对应的节点唯一标识。

第二方面,本申请提供一种存储资源控制器,包括:

存储类型获取模块,用于获取用户创建的针对分布式集群的第一存储资源请求信息,并确定该第一存储资源请求信息对应的存储类型;

存储资源匹配模块,用于根据所述第一存储资源请求信息对应的存储类型,自所述分布式集群中选取与所述第一存储资源请求信息相匹配的目标本地存储资源;

存储资源绑定模块,用于将所述第一存储资源请求信息与所述目标本地存储资源进行绑定处理。

第三方面,本申请提供一种存储资源调度系统,包括:存储资源控制器、调度器接口组件和多个调度器;

所述存储资源控制器用于执行所述的存储资源配置方法;

所述调度器接口组件设置在所述分布式集群中的主节点中,所述调度器接口组件与各个所述调度器之间分别通信连接;

各个所述调度器分别一对一设置在所述分布式集群中的各个节点中,用于将各自对应的节点信息发送至所述调度器接口组件进行存储;

所述调度器接口组件与所述存储资源控制器之间通信连接,用于根据所述存储资源控制器发送的调度指令在本地存储的节点信息中查找所述调度指令对应的目标本地存储资源。

第四方面,本申请提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现所述存储资源配置方法。

第五方面,本申请提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现所述存储资源配置方法。

由上述技术方案可知,本申请提供的一种存储资源配置方法、存储资源控制器及调度系统,方法通过获取用户创建的针对分布式集群的第一存储资源请求信息,并确定该第一存储资源请求信息对应的存储类型;根据所述第一存储资源请求信息对应的存储类型,自所述分布式集群中选取与所述第一存储资源请求信息相匹配的目标本地存储资源;将所述第一存储资源请求信息与所述目标本地存储资源进行绑定处理,能够有效提供分布式集群的存储资源配置的成功率及可靠性,并能够有效降低存储资源的调度复杂度,能够保证数据的一致性,也能够保证读写的高速性能,通过高效的调度机制能够有效提高分布式集群的性能瓶颈。尤其适用于需要高速本地存储作为缓存的使用场景。比如节点上的目录数据是从远程的网络存储上挂载或者预先读取到本地的,为了能加速容器集合pod读取这些数据的速度。

附图说明

为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是本申请实施例中的存储资源配置方法的第一种流程示意图。

图2是本申请实施例中的存储资源配置方法中第二种流程示意图。

图3是本申请实施例中的存储资源配置方法的第三种流程示意图。

图4是本申请实施例中的存储资源配置方法中的第四种流程示意图。

图5是本申请实施例中的存储资源配置方法中的第五种流程示意图。

图6是本申请实施例中的存储资源配置方法中的第六种流程示意图。

图7是本申请实施例中的存储资源控制器的结构示意图。

图8是本申请应用实例中的存储资源控制器的结构示意图。

图9是本申请应用实例中的调度器接口组件及调度器的结构示意图。

图10是本申请实施例中的电子设备的结构示意图。

具体实施方式

为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整的描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

需要说明的是,本申请公开的存储资源配置方法和装置可用于云计算技术领域,也可用于除云计算技术领域之外的任意领域,本申请公开的存储资源配置方法和装置的应用领域不做限定。

在k8s集群中,运行服务离不开持久化地将数据保存起来,这就涉及到k8s的存储系统了。k8s的存储系统在运行机制上基于docker原生的volume机制,本质上都是先将存储挂在到主机上,经过处理后,通过docker的volume机制挂载到容器中。

现有的存储资源配置方式经常会通过hostpathvolume让pod能够使用本地存储,将node文件系统中的文件或者目录挂载到容器内,但是hostpathvolume的使用是很受限的,并不适合在生产环境中使用。或者使用远程的存储服务比如obs对象存储服务,将存储的服务抽象成一个url,将数据远程存储在服务提供方。

hostpath的方案由于集群内每个节点的差异化,可能导致不同的pod读取到的目录数据不一致,而且scheduler并不会考虑hostpathvolume的大小,hostpath也不能申明需要的storagesize,这样调度时存储的考虑,就需要人为检查并保证。而远程的存储服务受限于网络性能,速度不高而且延迟大,不适合一些数据量大的场景。

综上,目前没有一种很完善的kubernetes集群下的存储解决方案。因此,如何提供一种新的方案,解决上述的技术问题是本领域需要深入的一个技术难点。

基于此,为了解决现有的分布式集群的存储方案存在的调度复杂、数据不一致及读取速度慢等问题,本申请实施例提供一种存储资源配置方法、存储资源控制器、存储资源调度系统、电子设备及计算机可读存储介质,通过获取用户创建的针对分布式集群的第一存储资源请求信息,并确定该第一存储资源请求信息对应的存储类型;根据所述第一存储资源请求信息对应的存储类型,自所述分布式集群中选取与所述第一存储资源请求信息相匹配的目标本地存储资源;将所述第一存储资源请求信息与所述目标本地存储资源进行绑定处理,能够有效提供分布式集群的存储资源配置的成功率及可靠性,并能够有效降低存储资源的调度复杂度,能够保证数据的一致性,也能够保证读写的高速性能,通过高效的调度机制能够有效提高分布式集群的性能瓶颈。尤其适用于需要高速本地存储作为缓存的使用场景。比如节点上的目录数据是从远程的网络存储上挂载或者预先读取到本地的,为了能加速容器集合pod读取这些数据的速度。

基于上述内容,本申请还提供一种用于实现本申请一个或多个实施例中提供的存储资源配置方法的存储资源配置装置,存储资源配置装置可以中设有存储资源控制器,该存储资源配置装置可以与客户端设备之间进行通信连接,所述存储资源配置装置可以接收客户端设备发送的存储资源配置指令,而后根据该存储资源配置指令获取第一存储资源请求信息,并确定该第一存储资源请求信息对应的存储类型;根据所述第一存储资源请求信息对应的存储类型,自所述分布式集群中选取与所述第一存储资源请求信息相匹配的目标本地存储资源;将所述第一存储资源请求信息与所述目标本地存储资源进行绑定处理,最后将对应的与第一存储资源请求信息绑定的目标本地存储资源的配置结果发送至所述客户端设备以告知用户该配置结果。

在一种实际应用情形中,所述存储资源配置装置可以采用服务器实现;所述服务器可以与至少一个客户端设备之间通信连接。

可以理解的是,所述客户端设备可以包括智能手机、平板电子设备、网络机顶盒、便携式计算机、台式电脑、个人数字助理(pda)、车载设备、智能穿戴设备等。其中,所述智能穿戴设备可以包括智能眼镜、智能手表、智能手环等。

在另一种实际应用情形中,前述的存储资源配置装置进行存储资源配置的部分可以在如上述内容的服务器中执行,也可以所有的操作都在所述客户端设备中完成。具体可以根据所述客户端设备的处理能力,以及用户使用场景的限制等进行选择。本申请对此不作限定。若所有的操作都在所述客户端设备中完成,所述客户端设备还可以包括处理器,用于存储资源配置的具体处理。

上述的客户端设备可以具有通信模块(即通信单元),可以与远程的服务器进行通信连接,实现与所述服务器的数据传输。所述服务器可以包括任务调度中心一侧的服务器,其他的实施场景中也可以包括中间平台的服务器,例如与任务调度中心服务器有通信链接的第三方服务器平台的服务器。所述的服务器可以包括单台计算机设备,也可以包括多个服务器组成的服务器集群,或者分布式装置的服务器结构。

上述服务器与所述客户端设备之间可以使用任何合适的网络协议进行通信,包括在本申请提交日尚未开发出的网络协议。所述网络协议例如可以包括tcp/ip协议、udp/ip协议、http协议、https协议等。当然,所述网络协议例如还可以包括在上述协议之上使用的rpc协议(remoteprocedurecallprotocol,远程过程调用协议)、rest协议(representationalstatetransfer,表述性状态转移协议)等。

在本申请的一个或多个实施例中,分布式集群的一种实现方式举例可以为kubernetes集群,其中,kubernetes简称k8s,是一个开源的,用于管理云平台中多个主机上的容器化的应用,kubernetes的目标是实现部署容器化的应用简单并且高效(powerful),kubernetes提供了应用部署,规划,更新,维护的一种机制。

在本申请的一个或多个实施例中,paas(platformasaservice)是指平台即服务。把服务器平台作为一种服务提供的商业模式,通过网络进行程序提供的服务称之为saas(softwareasaservice),而云计算时代相应的服务器平台或者开发环境作为服务进行提供就成为了paas(platformasaservice)。所谓paas实际上是指将软件研发的平台作为一种服务,以saas的模式提交给用户。因此,paas也是saas模式的一种应用。但是,paas的出现可以加快saas的发展,尤其是加快saas应用的开发速度。

在本申请的一个或多个实施例中,docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的linux或windows机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。

在本申请的一个或多个实施例中,容器集合的一种实现方式举例可以为pod,pod是由一个或一个以上的容器(例如docker容器)组成的,且具有共享存储/网络/uts/pid的能力,以及运行容器的规范。并且在kubernetes中,pod是最小的可被调度的原子单位。通俗来讲,pod就是一组容器的集合,在pod里面的容器共享网络/存储,所以它们可以通过localhost进行内部的通信。

在本申请的一个或多个实施例中,共享磁盘目录的一种实现方式举例可以为volume;volume是pod中能够被多个容器共享的磁盘目录。默认情况下docker容器中的数据都是非持久化的,在容器消亡后数据也会消失。因此docker提供了volume机制以便实现数据的持久化。kubernetes中的volume与pod的生命周期相同,但与容器的生命周期不相关。当容器终止或重启时,volume中的数据也不会丢失。当pod被删除时,volume才会被清理。并且数据是否丢失取决于volume的具体类型,比如emptydir类型的volume数据会丢失,而pv类型的数据则不会丢失。

在本申请的一个或多个实施例中,hostpathvolume的作用是将dockerhost文件系统中已经存在的目录mount给pod的容器。大部分应用都不会使用hostpathvolume,因为这实际上增加了pod与节点的耦合,限制了pod的使用。不过那些需要访问kubernetes或docker内部数据(配置文件和二进制库)的应用则需要使用hostpath。

具体通过下述各个实施例及应用实例分别进行详细说明。

为了解决现有的分布式集群的存储方案存在的调度复杂、数据不一致及读取速度慢等问题,本申请提供一种存储资源配置方法的实施例,参见图1,应用存储资源控制器执行的所述存储资源配置方法具体包含有如下内容:

步骤100:获取用户创建的针对分布式集群的第一存储资源请求信息,并确定该第一存储资源请求信息对应的存储类型。

可以理解的是,在本申请一个或多个实施例中,本地存储资源是指本地高速存储资源pv(persistentvolume),是集群级别的资源,也是是集群中的存储资源,由集群管理员创建。pv的生命周期独立于使用pv的pod。

在本申请一个或多个实施例中,第一存储资源请求信息和第二存储资源请求信息均可以指pvc,pvc是用户对存储资源的请求,请求符合条件的pv与之进行绑定,所以pvc是pv的请求方式。

步骤200:根据所述第一存储资源请求信息对应的存储类型,自所述分布式集群中选取与所述第一存储资源请求信息相匹配的目标本地存储资源。

步骤300:将所述第一存储资源请求信息与所述目标本地存储资源进行绑定处理。

可以理解的是,存储资源pv控制器(controller)负责本地高速存储资源localpv的三阶段管理:声明(provision)/删除(delete)、绑定(attach)/解除绑定(detach)、挂载(mount)/解除挂载(unmount)。

在存储资源pv控制器(controller)中,主协程启动两个工作节点worker来处理本地高速存储资源localpv和存储资源请求pvc的状态迁移过程,且包含有两类工作节点:第一工作节点claimworker:用于处理local存储资源请求pvc的curd的流程和存储资源请求pvc的状态管理;第二工作节点volumeworker:主要对local存储资源pv进行状态管理。

其中,本地高速存储资源localpv状态迁移(更新update存储资源pv状态(status)):

a.本地高速存储资源localpv在挂载到集群猴,其初始状态为可用(available),当于用户声明的存储资源请求pvc进行绑定操作后,状态迁移为已绑定(bound)。

b.本地高速存储资源localpv与绑定的存储资源请求pvc被解除绑定之后,状态迁移为用户对存储资源的请求已被删除,集群尚未回收该资源(release)d;

c.当本地高速存储资源localpv默认的回收策略为recycled,如果对应的存储资源请求pvc被删除之后,本地高速存储资源localpv状态重新变为可用(available);

其中,存储资源请求pvc状态迁移(更新update存储资源请求pvc状态(status)):

a.存储资源请求pvc需要先去配置对应的存储类storageclass,可以理解为存储模板。

b.当kubernetes集群中不存在本地高速存储资源localpv对应的存储类storageclass时,用户创建的本地高速存储资源localpv的存储资源请求pvc将会是等待(pending)状态。

c.在存储资源请求pvc和本地高速存储资源localpv绑定之后,存储资源请求pvc的状态将会变成和本地高速存储资源localpv一样的已绑定(bound)。

d.被绑定的存储资源pv在集群中被删除之后,存储资源请求pvc的状态变为已丢失(lost)。

e.如果其再次与一个同名的存储资源pv绑定后,存储资源请求pvc的状态变成已绑定(bound)。

从上述描述可知,本申请实施例提供的存储资源配置方法,通过应用本地高速存储的集群存储方式实现对本地存储资源的配置管理和调度,能够有效提供分布式集群的存储资源配置的成功率及可靠性,并能够有效降低存储资源的调度复杂度,能够保证数据的一致性,也能够保证读写的高速性能,通过高效的调度机制能够有效提高分布式集群的性能瓶颈。尤其适用于需要高速本地存储作为缓存的使用场景。比如节点上的目录数据是从远程的网络存储上挂载或者预先读取到本地的,为了能加速容器集合读取这些数据的速度。

为了提供一种调度器接口组件和专用调度器的应用方式,在本申请提供的存储资源配置方法的一个实施例中,参见图2,所述存储资源配置方法还具体包含有如下内容:

步骤400:获取所述分布式集群中的容器集合发出的第二存储资源请求信息,并确定该第二存储资源请求信息对应的绑定类型。

步骤500:根据所述第二存储资源请求信息对应的绑定类型,调用预设的调度器接口组件自所述分布式集群中的各个节点中选取与所述第二存储资源请求信息相匹配的目标本地存储资源,其中,所述调度器接口组件设置在所述分布式集群中的主节点中。

步骤600:将所述第二存储资源请求信息与所述目标本地存储资源进行绑定处理。

具体来说,调度器(scheduler)部署在分布式集群的每一个子节点node上,而在主节点上也部署有一个信息汇聚的调度器接口组件scheduler-api组件。

其中,子节点node上的调度器(scheduler)调用系统信息接口,启动一个协程获取当前集群内的ssd磁盘信息并缓存。定期通过接口上送给主节点master上的调度器接口组件scheduler-api组件。

主节点master上的调度器接口组件scheduler-api负责收集集群内所有部署有ssd磁盘的本地高速存储资源localpv专用子节点node的数据。调度器接口组件scheduler-api调度器缓存这些信息,同时向服务提供进程kube-apiserver去异步消息传递list-watch集群内的所有容器集合pod信息,并缓存其于子节点node之间的关系,在子节点node上打上对应容器集合pod的唯一识别码uuid的注解(annotation)。

从上述描述可知,本申请实施例提供的存储资源配置方法,通过调度器接口组件和专用调度器的应用,能够进一步实现会对本地存储资源的全流程的配置管理和调度,以实现容器集合成功挂载高速固态硬盘的本地存储,并且保证使用高速存储时发生容器集合重新调度的情况下能再次调度到本地容器共享磁盘目录所在的节点。

为了提供用户创建pvc的第一种情形,在本申请提供的存储资源配置方法的一个实施例中,所述存储类型包括:静态存储类型;参见图3,所述存储资源配置方法的步骤200的第一种实现方式具体包含有如下内容:

步骤211:基于所述静态存储类型对应的筛选规则,在所述分布式集群中进行遍历,以得到与所述第一存储资源请求信息相匹配的目标本地存储资源;其中,所述筛选规则包括:目标本地存储资源满足预设条件,所述预设条件包括:与所述第一存储资源请求信息的存储类型相匹配、当前未绑定至任一存储资源请求信息、当前状态为可用状态、兼容所述第一存储资源请求信息对应的存储类和存储容量中的至少一项。

具体来说,存储资源pv控制器(controller)首先在环境中筛选一个状态为可用(available)的存储资源pv与新的存储资源请求pvc匹配。存储资源pv控制器(controller)尝试找一个满足存储资源请求pvc所描述的存储类storageclass相匹配的存储资源pv。对集群内所有的存储资源pv进行一次全量的遍历筛选,筛选规则如下:

a.存储类型是否匹配(是否为本地高速存储资源localpv);

b.本地高速存储资源localpv是否已经绑定到某个存储资源请求pvc上;

c.地高速存储资源localpv的当前状态是否为可用(available);

d.本地高速存储资源localpv是否兼容存储资源请求pvc声明下的存储类storageclass;

e.存储的大小是否相互兼容(本地高速存储资源localpv的大小大于存储资源请求pvc声明大小)遍历完成后,选择一个最合适的存储资源pv,绑定用户声明的存储资源请求pvc和该存储资源pv。

从上述描述可知,本申请实施例提供的存储资源配置方法,能够针对静态存储类型获取与所述第一存储资源请求信息相匹配的目标本地存储资源,进而能够进一步有效提供分布式集群的存储资源配置的成功率及可靠性,并能够有效降低存储资源的调度复杂度,能够保证数据的一致性,也能够保证读写的高速性能。

为了提供用户创建pvc的第二种情形,在本申请提供的存储资源配置方法的一个实施例中,所述存储类型包括:动态存储类型;参见图4,所述存储资源配置方法的步骤200的第二种实现方式具体包含有如下内容:

步骤221:生成包含有所述第一存储资源请求信息对应的调取要求的调用指令;其中,所述调取要求包括:指定节点列表、指定存储资源容量和待调度的磁盘种类中的至少一种。

步骤222:基于所述调用指令调用所述动态存储类型对应的调度器的调度请求接口,以使该调度器根据所述调用指令获取满足所述调取要求的目标本地存储资源。

具体来说,存储资源pv控制器(controller)首先调用调度器(scheduler)的调度请求接口,在requestheader中带存储资源请求pvc指定的子节点node列表(可选)、存储资源请求pvc指定的存储大小、需调度的磁盘种类等信息。

调度器(scheduler)经过调度算法返回之后的结果,传回给存储资源pv控制器(controller),完成绑定用户声明的存储资源请求pvc和该本地高速存储资源localpv。

从上述描述可知,本申请实施例提供的存储资源配置方法,能够针对动态存储类型获取与所述第一存储资源请求信息相匹配的目标本地存储资源,进而能够进一步有效提供分布式集群的存储资源配置的成功率及可靠性,并能够有效降低存储资源的调度复杂度,能够保证数据的一致性,也能够保证读写的高速性能。

为了提供pod创建pvc的第一种情形,在本申请提供的存储资源配置方法的一个实施例中,所述绑定类型包括:新建绑定类型;参见图5,所述存储资源配置方法的步骤500的第一种实现方式具体包含有如下内容:

步骤511:根据所述新建绑定类型向所述主节点中的调度器接口组件发送对应的调度指令,以使该调度器接口组件根据该调度指令对本地存储的节点信息进行遍历,得到与所述第二存储资源请求信息相匹配的目标本地存储资源,其中,所述节点信息为分别设置在各个所述节点中的调度器预先发送至所述调度器接口组件的。

步骤512:接收所述调度器接口组件发送的目标本地存储资源对应的节点唯一标识。

具体来说,如果是新建容器集合pod拉起存储资源请求pvc请求动态绑定接口,或者是新建存储资源请求pvc通过存储类storageclass来绑定本地高速存储资源localpv。调度器接口组件scheduler-api将遍历缓存的子节点node信息,寻找到一个可分配、剩余固态硬盘ssd的高速存储量足够、调度存储资源pv较少、符合存储资源请求pvc指定的调度子节点node列表的子节点node。返回该子节点node的ip给存储资源pv控制器(controller)。

从上述描述可知,本申请实施例提供的存储资源配置方法,能够针对新建绑定类型获取与所述第二存储资源请求信息相匹配的目标本地存储资源,进而能够进一步有效提供分布式集群的存储资源配置的成功率及可靠性,并能够有效降低存储资源的调度复杂度,能够保证数据的一致性,也能够保证读写的高速性能。

为了提供pod创建pvc的第二种情形,在本申请提供的存储资源配置方法的一个实施例中,所述绑定类型包括:重新绑定类型;参见图6,所述存储资源配置方法的步骤500的第二种实现方式具体包含有如下内容:

步骤521:根据所述重新绑定类型向所述主节点中的调度器接口组件发送对应的调度指令,以使该调度器接口组件根据该调度指令在本地存储的节点信息中查找到所述第二存储资源请求信息指定重新绑定的目标本地存储资源,其中,所述节点信息为分别设置在各个所述节点中的调度器预先发送至所述调度器接口组件的。

步骤522:接收所述调度器接口组件发送的目标本地存储资源对应的节点唯一标识。

具体来说,如果是容器集合pod在重新调度后,在缓存中找到原来该容器集合pod调度的子节点node。重新校验该节点是否可被分配、ssd高速存储容量是否足够。返回该子节点node的ip给存储资源pv控制器(controller)。

从上述描述可知,本申请实施例提供的存储资源配置方法,能够针对重新绑定类型获取与所述第二存储资源请求信息相匹配的目标本地存储资源,进而能够进一步有效提供分布式集群的存储资源配置的成功率及可靠性,并能够有效降低存储资源的调度复杂度,能够保证数据的一致性,也能够保证读写的高速性能。

从软件层面来说,为了解决现有的分布式集群的存储方案存在的调度复杂、数据不一致及读取速度慢等问题,本申请提供一种用于执行所述存储资源配置方法中全部或部分内容的存储资源控制器的实施例,参见图7,所述存储资源配置装置具体包含有如下内容:

存储类型获取模块10,用于获取用户创建的针对分布式集群的第一存储资源请求信息,并确定该第一存储资源请求信息对应的存储类型。

可以理解的是,在本申请一个或多个实施例中,本地存储资源是指本地高速存储资源pv(persistentvolume),是集群级别的资源,也是是集群中的存储资源,由集群管理员创建。pv的生命周期独立于使用pv的pod。

在本申请一个或多个实施例中,第一存储资源请求信息和第二存储资源请求信息均可以指pvc,pvc是用户对存储资源的请求,请求符合条件的pv与之进行绑定,所以pvc是pv的请求方式。

存储资源匹配模块20,用于根据所述第一存储资源请求信息对应的存储类型,自所述分布式集群中选取与所述第一存储资源请求信息相匹配的目标本地存储资源。

存储资源绑定模块30,用于将所述第一存储资源请求信息与所述目标本地存储资源进行绑定处理。

可以理解的是,存储资源pv控制器(controller)负责本地高速存储资源localpv的三阶段管理:声明(provision)/删除(delete)、绑定(attach)/解除绑定(detach)、挂载(mount)/解除挂载(unmount)。

在存储资源pv控制器(controller)中,主协程启动两个工作节点worker来处理本地高速存储资源localpv和存储资源请求pvc的状态迁移过程,且包含有两类工作节点:第一工作节点claimworker:用于处理local存储资源请求pvc的curd的流程和存储资源请求pvc的状态管理;第二工作节点volumeworker:主要对local存储资源pv进行状态管理。

其中,本地高速存储资源localpv状态迁移(更新update存储资源pv状态(status)):

a.本地高速存储资源localpv在挂载到集群猴,其初始状态为可用(available),当于用户声明的存储资源请求pvc进行绑定操作后,状态迁移为已绑定(bound)。

b.本地高速存储资源localpv与绑定的存储资源请求pvc被解除绑定之后,状态迁移为用户对存储资源的请求已被删除,集群尚未回收该资源(release)d;

c.当本地高速存储资源localpv默认的回收策略为recycled,如果对应的存储资源请求pvc被删除之后,本地高速存储资源localpv状态重新变为可用(available);

其中,存储资源请求pvc状态迁移(更新update存储资源请求pvc状态(status)):

a.存储资源请求pvc需要先去配置对应的存储类storageclass,可以理解为存储模板。

b.当kubernetes集群中不存在本地高速存储资源localpv对应的存储类storageclass时,用户创建的本地高速存储资源localpv的存储资源请求pvc将会是等待(pending)状态。

c.在存储资源请求pvc和本地高速存储资源localpv绑定之后,存储资源请求pvc的状态将会变成和本地高速存储资源localpv一样的已绑定(bound)。

d.被绑定的存储资源pv在集群中被删除之后,存储资源请求pvc的状态变为已丢失(lost)。

e.如果其再次与一个同名的存储资源pv绑定后,存储资源请求pvc的状态变成已绑定(bound)。

本申请提供的存储资源控制器的实施例具体可以用于执行上述实施例中的存储资源配置方法的实施例的处理流程,其功能在此不再赘述,可以参照上述方法实施例的详细描述。

从上述描述可知,本申请实施例提供的存储资源控制器,能够有效提供分布式集群的存储资源配置的成功率及可靠性,并能够有效降低存储资源的调度复杂度,能够保证数据的一致性,也能够保证读写的高速性能,通过高效的调度机制能够有效提高分布式集群的性能瓶颈。尤其适用于需要高速本地存储作为缓存的使用场景。比如节点上的目录数据是从远程的网络存储上挂载或者预先读取到本地的,为了能加速容器集合pod读取这些数据的速度。

为了提供一种调度器接口组件和专用调度器的应用方式,在本申请提供的存储资源配置方法的一个实施例中,所述存储资源配置方法还具体包含有如下内容:

存储类型获取模块10,还用于获取所述分布式集群中的容器集合发出的第二存储资源请求信息,并确定该第二存储资源请求信息对应的绑定类型。

所述存储资源匹配模块20,还用于根据所述第二存储资源请求信息对应的绑定类型,调用预设的调度器接口组件自所述分布式集群中的各个节点中选取与所述第二存储资源请求信息相匹配的目标本地存储资源,其中,所述调度器接口组件设置在所述分布式集群中的主节点中。

所述存储资源绑定模块30,还用于将所述第二存储资源请求信息与所述目标本地存储资源进行绑定处理。

具体来说,调度器(scheduler)部署在分布式集群的每一个子节点node上,而在主节点上也部署有一个信息汇聚的调度器接口组件scheduler-api组件。

其中,子节点node上的调度器(scheduler)调用系统信息接口,启动一个协程获取当前集群内的ssd磁盘信息并缓存。定期通过接口上送给主节点master上的调度器接口组件scheduler-api组件。

主节点master上的调度器接口组件scheduler-api负责收集集群内所有部署有ssd磁盘的本地高速存储资源localpv专用子节点node的数据。调度器接口组件scheduler-api调度器缓存这些信息,同时向服务提供进程kube-apiserver去异步消息传递list-watch集群内的所有容器集合pod信息,并缓存其于子节点node之间的关系,在子节点node上打上对应容器集合pod的唯一识别码uuid的注解(annotation)。

从上述描述可知,本申请实施例提供的存储资源控制器,通过调度器接口组件和专用调度器的应用,能够进一步实现会对本地存储资源的全流程的配置管理和调度,以实现容器集合成功挂载高速固态硬盘的本地存储,并且保证使用高速存储时发生容器集合重新调度的情况下能再次调度到本地容器共享磁盘目录所在的节点。

为了提供用户创建pvc的第一种情形,在本申请提供的存储资源控制器的一个实施例中,所述存储类型包括:静态存储类型;所述存储资源控制器的存储资源匹配模块20用于执行下述内容:

步骤211:基于所述静态存储类型对应的筛选规则,在所述分布式集群中进行遍历,以得到与所述第一存储资源请求信息相匹配的目标本地存储资源;其中,所述筛选规则包括:目标本地存储资源满足预设条件,所述预设条件包括:与所述第一存储资源请求信息的存储类型相匹配、当前未绑定至任一存储资源请求信息、当前状态为可用状态、兼容所述第一存储资源请求信息对应的存储类和存储容量中的至少一项。

具体来说,存储资源pv控制器(controller)首先在环境中筛选一个状态为可用(available)的存储资源pv与新的存储资源请求pvc匹配。存储资源pv控制器(controller)尝试找一个满足存储资源请求pvc所描述的存储类storageclass相匹配的存储资源pv。对集群内所有的存储资源pv进行一次全量的遍历筛选,筛选规则如下:

a.存储类型是否匹配(是否为本地高速存储资源localpv);

b.本地高速存储资源localpv是否已经绑定到某个存储资源请求pvc上;

c.地高速存储资源localpv的当前状态是否为可用(available);

d.本地高速存储资源localpv是否兼容存储资源请求pvc声明下的存储类storageclass;

e.存储的大小是否相互兼容(本地高速存储资源localpv的大小大于存储资源请求pvc声明大小)遍历完成后,选择一个最合适的存储资源pv,绑定用户声明的存储资源请求pvc和该存储资源pv。

从上述描述可知,本申请实施例提供的存储资源控制器,能够针对静态存储类型获取与所述第一存储资源请求信息相匹配的目标本地存储资源,进而能够进一步有效提供分布式集群的存储资源配置的成功率及可靠性,并能够有效降低存储资源的调度复杂度,能够保证数据的一致性,也能够保证读写的高速性能。

为了提供用户创建pvc的第二种情形,在本申请提供的存储资源控制器的一个实施例中,所述存储类型包括:动态存储类型;所述存储资源控制器的存储资源匹配模块20还用于执行下述内容:

步骤221:生成包含有所述第一存储资源请求信息对应的调取要求的调用指令;其中,所述调取要求包括:指定节点列表、指定存储资源容量和待调度的磁盘种类中的至少一种。

步骤222:基于所述调用指令调用所述动态存储类型对应的调度器的调度请求接口,以使该调度器根据所述调用指令获取满足所述调取要求的目标本地存储资源。

具体来说,存储资源pv控制器(controller)首先调用调度器(scheduler)的调度请求接口,在requestheader中带存储资源请求pvc指定的子节点node列表(可选)、存储资源请求pvc指定的存储大小、需调度的磁盘种类等信息。

调度器(scheduler)经过调度算法返回之后的结果,传回给存储资源pv控制器(controller),完成绑定用户声明的存储资源请求pvc和该本地高速存储资源localpv。

从上述描述可知,本申请实施例提供的存储资源控制器,能够针对动态存储类型获取与所述第一存储资源请求信息相匹配的目标本地存储资源,进而能够进一步有效提供分布式集群的存储资源配置的成功率及可靠性,并能够有效降低存储资源的调度复杂度,能够保证数据的一致性,也能够保证读写的高速性能。

为了提供pod创建pvc的第一种情形,在本申请提供的存储资源控制器的一个实施例中,所述绑定类型包括:新建绑定类型;所述存储资源控制器的存储资源匹配模块20还用于执行下述内容:

步骤511:根据所述新建绑定类型向所述主节点中的调度器接口组件发送对应的调度指令,以使该调度器接口组件根据该调度指令对本地存储的节点信息进行遍历,得到与所述第二存储资源请求信息相匹配的目标本地存储资源,其中,所述节点信息为分别设置在各个所述节点中的调度器预先发送至所述调度器接口组件的。

步骤512:接收所述调度器接口组件发送的目标本地存储资源对应的节点唯一标识。

具体来说,如果是新建容器集合pod拉起存储资源请求pvc请求动态绑定接口,或者是新建存储资源请求pvc通过存储类storageclass来绑定本地高速存储资源localpv。调度器接口组件scheduler-api将遍历缓存的子节点node信息,寻找到一个可分配、剩余固态硬盘ssd的高速存储量足够、调度存储资源pv较少、符合存储资源请求pvc指定的调度子节点node列表的子节点node。返回该子节点node的ip给存储资源pv控制器(controller)。

从上述描述可知,本申请实施例提供的存储资源控制器,能够针对新建绑定类型获取与所述第二存储资源请求信息相匹配的目标本地存储资源,进而能够进一步有效提供分布式集群的存储资源配置的成功率及可靠性,并能够有效降低存储资源的调度复杂度,能够保证数据的一致性,也能够保证读写的高速性能。

为了提供pod创建pvc的第二种情形,在本申请提供的存储资源控制器的一个实施例中,所述绑定类型包括:重新绑定类型;所述存储资源控制器的存储资源匹配模块20还用于执行下述内容:

步骤521:根据所述重新绑定类型向所述主节点中的调度器接口组件发送对应的调度指令,以使该调度器接口组件根据该调度指令在本地存储的节点信息中查找到所述第二存储资源请求信息指定重新绑定的目标本地存储资源,其中,所述节点信息为分别设置在各个所述节点中的调度器预先发送至所述调度器接口组件的。

步骤522:接收所述调度器接口组件发送的目标本地存储资源对应的节点唯一标识。

具体来说,如果是容器集合pod在重新调度后,在缓存中找到原来该容器集合pod调度的子节点node。重新校验该节点是否可被分配、ssd高速存储容量是否足够。返回该子节点node的ip给存储资源pv控制器(controller)。

从上述描述可知,本申请实施例提供的存储资源控制器,能够针对重新绑定类型获取与所述第二存储资源请求信息相匹配的目标本地存储资源,进而能够进一步有效提供分布式集群的存储资源配置的成功率及可靠性,并能够有效降低存储资源的调度复杂度,能够保证数据的一致性,也能够保证读写的高速性能。

基于上述内容,为了解决现有的分布式集群的存储方案存在的调度复杂、数据不一致及读取速度慢等问题,本申请提供一种存储资源调度系统,包含有用于执行所述存储资源配置方法中全部或部分内容的存储资源控制器,所述存储资源调度系统具体包含有如下内容:

存储资源控制器、调度器接口组件和多个调度器;

所述存储资源控制器用于所述的存储资源配置方法;

所述调度器接口组件设置在所述分布式集群中的主节点中,所述调度器接口组件与各个所述调度器之间分别通信连接;

各个所述调度器分别一对一设置在所述分布式集群中的各个节点中,用于将各自对应的节点信息发送至所述调度器接口组件进行存储;

所述调度器接口组件与所述存储资源控制器之间通信连接,用于根据所述存储资源控制器发送的调度指令在本地存储的节点信息中查找所述调度指令对应的目标本地存储资源。

本申请提供的存储资源调度系统的实施例具体可以用于执行上述实施例中的存储资源控制器和存储资源配置方法的实施例的处理流程,其功能在此不再赘述,可以参照上述方法实施例的详细描述。

从上述描述可知,本申请实施例提供的存储资源调度系统,能够有效提供分布式集群的存储资源配置的成功率及可靠性,并能够有效降低存储资源的调度复杂度,能够保证数据的一致性,也能够保证读写的高速性能,通过高效的调度机制能够有效提高分布式集群的性能瓶颈。尤其适用于需要高速本地存储作为缓存的使用场景。比如节点上的目录数据是从远程的网络存储上挂载或者预先读取到本地的,为了能加速容器集合pod读取这些数据的速度。

基于此,为了进一步说明本方案,本申请还提供一种应用存储资源控制器实现的存储资源配置方法的具体应用实例,为解决现有kubernetes集群下的存储解决方案下,存在调度复杂、数据不一致、读取速度慢等问题。本发明提供了一种基于本地高速存储(本地高速存储资源localpv)的集群存储解决方案。支持多集群的ssd高速固态平台磁盘挂载,通过自研的存储资源pv控制器(controller)和专用调度器(scheduler)会对local存储资源pv全流程的管理和调度,以实现pod成功挂载高速ssd的本地存储,并且保证使用高速存储时发生podre-schedule(重新调度)的情况下能再次调度到localvolume所在的node。保证数据的一致性,也保证读写的高速性能。通过高效的调度机制,将集群内的ssd平均的分配给pod使用,提高集群的性能瓶颈。本方案适用于需要高速本地存储作为缓存的使用场景。比如节点上的目录数据是从远程的网络存储上挂载或者预先读取到本地的,为了能加速pod读取这些数据的速度。这类型的ai训练任务可以采用本专利中的方案。应用存储资源控制器实现的存储资源配置方法的具体应用实例的主要处理流程包括如下步骤:

(一)1.本地高速存储资源localpv的生命周期管理的存储资源pv控制器(controller):

本地高速存储资源localpv的生命周期管理存储资源pv控制器(controller)负责本地高速存储资源localpv的三阶段管理:声明(provision)/删除(delete)、绑定(attach)/解除绑定(detach)、挂载(mount)/解除挂载(unmount)。

在存储资源pv控制器(controller)中,主协程启动两个工作节点worker来处理本地高速存储资源localpv和存储资源请求pvc的状态迁移过程,参见图8:

第一工作节点claimworker:用于处理local存储资源请求pvc的curd的流程和存储资源请求pvc的状态管理;

第二工作节点volumeworker:主要对local存储资源pv进行状态管理。

本地高速存储资源localpv状态迁移(更新update存储资源pv状态(status)):

a.本地高速存储资源localpv在挂载到集群猴,其初始状态为可用(available),当于用户声明的存储资源请求pvc进行绑定操作后,状态迁移为已绑定(bound)。

b.本地高速存储资源localpv与绑定的存储资源请求pvc被解除绑定之后,状态迁移为用户对存储资源的请求已被删除,集群尚未回收该资源(release)d;

c.当本地高速存储资源localpv默认的回收策略为recycled,如果对应的存储资源请求pvc被删除之后,本地高速存储资源localpv状态重新变为可用(available);

存储资源请求pvc状态迁移(更新update存储资源请求pvc状态(status)):

a.存储资源请求pvc需要先去配置对应的存储类storageclass,可以理解为存储模板。

b.当kubernetes集群中不存在本地高速存储资源localpv对应的存储类storageclass时,用户创建的本地高速存储资源localpv的存储资源请求pvc将会是等待(pending)状态。

c.在存储资源请求pvc和本地高速存储资源localpv绑定之后,存储资源请求pvc的状态将会变成和本地高速存储资源localpv一样的已绑定(bound)。

d.被绑定的存储资源pv在集群中被删除之后,存储资源请求pvc的状态变为已丢失(lost)。

e.如果其再次与一个同名的存储资源pv绑定后,存储资源请求pvc的状态变成已绑定(bound)。

当用户创建一个新存储资源请求pvc时,存储资源pv控制器(controller)的工作流程如下:

1.1静态存储卷流程:

存储资源pv控制器(controller)首先在环境中筛选一个状态为可用(available)的存储资源pv与新存储资源请求pvc匹配。存储资源pv控制器(controller)尝试找一个满足存储资源请求pvc所描述的存储类storageclass相匹配的存储资源pv。对集群内所有的存储资源pv进行一次全量的遍历筛选,筛选规则如下:

a.存储类型是否匹配(是否为本地高速存储资源localpv);

b.本地高速存储资源localpv是否已经绑定到某个存储资源请求pvc上;

c.本地高速存储资源localpv的当前状态是否为可用(available);

d.本地高速存储资源localpv是否兼容存储资源请求pvc声明下的存储类storageclass;

e.存储的大小是否相互兼容(本地高速存储资源localpv的大小大于存储资源请求pvc声明大小)遍历完成后,选择一个最合适的存储资源pv,绑定用户声明的存储资源请求pvc和该存储资源pv。

1.2动态供应存储卷流程

存储资源pv控制器(controller)首先调用调度器(scheduler)的调度请求接口,在requestheader中带存储资源请求pvc指定的子节点node列表(可选)、存储资源请求pvc指定的存储大小、需调度的磁盘种类等信息。

调度器(scheduler)经过调度算法返回之后的结果,传回给存储资源pv控制器(controller),完成绑定用户声明的存储资源请求pvc和该本地高速存储资源localpv。

当用户删除一个新存储资源请求pvc时,存储资源pv控制器(controller)的工作流程如下:

删除流程可以看作为创建的反向操作,删除存储资源请求pvc后,包含有:

a.存储资源pv控制器(controller)将改变存储资源请求pvc的状态为已丢失(lost)。

b.如果找到集群中的存储资源请求pvc绑定的容器集合pod,则将容器集合pod状态变为等待(pending)。

c.记录删除的事件event。

d.如果为动态供应绑定存储资源请求pvc,直接删除对应的本地高速存储资源localpv。

e.如果为静态绑定的存储资源请求pvc,不删除对应的存储资源pv,但是把存储资源pv的状态变成用户对存储资源的请求已被删除,集群尚未回收该资源(release)。

f.删除存储资源请求pvc。

(二)本地高速存储资源localpv的专用调度器(scheduler):

调度器(scheduler)部署在分布式集群的每一个子节点node上,而在主节点上也部署有一个信息汇聚的调度器接口组件scheduler-api组件,整体结构参见图9。

2.1.子节点node上的调度器(scheduler)调用系统信息接口,启动一个协程获取当前集群内的ssd磁盘信息并缓存。定期通过接口上送给主节点master上的调度器接口组件scheduler-api。

2.2.主节点master上的调度器接口组件scheduler-api负责收集集群内所有部署有ssd磁盘的本地高速存储资源localpv专用子节点node的数据。调度器接口组件scheduler-api调度器缓存这些信息,同时向服务提供进程kube-apiserver去异步消息传递list-watch集群内的所有容器集合pod信息,并缓存其于子节点node之间的关系,在子节点node上打上对应容器集合pod的唯一识别码uuid的注解(annotation)。当发生容器集合pod节点调度请求存储资源请求vc绑定存储资源pv的操作时,调度器接口组件scheduler-api的工作流程为:

a.如果是新建容器集合pod拉起存储资源请求pvc请求动态绑定接口,或者是新建存储资源请求pvc通过存储类storageclass来绑定本地高速存储资源localpv。调度器接口组件scheduler-api将遍历缓存的子节点node信息,寻找到一个可分配、剩余固态硬盘ssd的高速存储量足够、调度存储资源pv较少、符合存储资源请求pvc指定的调度子节点node列表的子节点node。返回该子节点node的ip给存储资源pv控制器(controller)。

b.如果是容器集合pod在重新调度后,在缓存中找到原来该容器集合pod调度的子节点node。重新校验该节点是否可被分配、ssd高速存储容量是否足够。返回该子节点node的ip给存储资源pv控制器(controller)。

从上述描述可知,为解决现有kubernetes集群下的存储解决方案下,存在调度复杂、数据不一致、读取速度慢等问题。本发明提供了一种基于本地高速存储(本地高速存储资源localpv)的集群存储解决方案。支持多集群的ssd高速固态平台磁盘挂载,通过创新的存储资源pv控制器(controller)和专用调度器(scheduler)会对本地存储资源localpv全流程的管理和调度,以实现容器集合pod成功挂载高速ssd的本地存储,并且保证使用高速存储时发生容器集合podre-schedule(重新调度)的情况下能再次调度到localvolume所在的子节点node。保证数据的一致性,也保证读写的高速性能。通过高效的调度机制,将集群内的ssd平均的分配给容器集合pod使用,提高集群的性能瓶颈。本方案适用于需要高速本地存储作为缓存的使用场景。比如节点上的目录数据是从远程的网络存储上挂载或者预先读取到本地的,为了能加速容器集合pod读取这些数据的速度。这类型的ai训练任务可以采用本专利中的方案。其优点如下:

1、存储读写性能高,不受网络限制。

2、实现灵活的容器集合pod重调度策略。

3、保证数据的一致性。

从硬件层面来说,为了解决现有的分布式集群的存储方案存在的调度复杂、数据不一致及读取速度慢等问题,本申请提供一种用于实现所述存储资源配置方法中的全部或部分内容的电子设备的实施例,所述电子设备具体包含有如下内容:

图10为本申请实施例的电子设备9600的系统构成的示意框图。如图10所示,该电子设备9600可以包括中央处理器9100和存储器9140;存储器9140耦合到中央处理器9100。值得注意的是,该图10是示例性的;还可以使用其他类型的结构,来补充或代替该结构,以实现电信功能或其他功能。

在一实施例中,存储资源配置功能可以被集成到中央处理器中。其中,中央处理器可以被配置为进行如下控制:

步骤100:获取用户创建的针对分布式集群的第一存储资源请求信息,并确定该第一存储资源请求信息对应的存储类型。

可以理解的是,在本申请一个或多个实施例中,本地存储资源是指本地高速存储资源pv(persistentvolume),是集群级别的资源,也是是集群中的存储资源,由集群管理员创建。pv的生命周期独立于使用pv的pod。

在本申请一个或多个实施例中,第一存储资源请求信息和第二存储资源请求信息均可以指pvc,pvc是用户对存储资源的请求,请求符合条件的pv与之进行绑定,所以pvc是pv的请求方式。

步骤200:根据所述第一存储资源请求信息对应的存储类型,自所述分布式集群中选取与所述第一存储资源请求信息相匹配的目标本地存储资源。

步骤300:将所述第一存储资源请求信息与所述目标本地存储资源进行绑定处理。

可以理解的是,存储资源pv控制器(controller)负责本地高速存储资源localpv的三阶段管理:声明(provision)/删除(delete)、绑定(attach)/解除绑定(detach)、挂载(mount)/解除挂载(unmount)。

在存储资源pv控制器(controller)中,主协程启动两个工作节点worker来处理本地高速存储资源localpv和存储资源请求pvc的状态迁移过程,且包含有两类工作节点:第一工作节点claimworker:用于处理local存储资源请求pvc的curd的流程和存储资源请求pvc的状态管理;第二工作节点volumeworker:主要对local存储资源pv进行状态管理。

其中,本地高速存储资源localpv状态迁移(更新update存储资源pv状态(status)):

a.本地高速存储资源localpv在挂载到集群猴,其初始状态为可用(available),当于用户声明的存储资源请求pvc进行绑定操作后,状态迁移为已绑定(bound)。

b.本地高速存储资源localpv与绑定的存储资源请求pvc被解除绑定之后,状态迁移为用户对存储资源的请求已被删除,集群尚未回收该资源(release)d;

c.当本地高速存储资源localpv默认的回收策略为recycled,如果对应的存储资源请求pvc被删除之后,本地高速存储资源localpv状态重新变为可用(available);

其中,存储资源请求pvc状态迁移(更新update存储资源请求pvc状态(status)):

a.存储资源请求pvc需要先去配置对应的存储类storageclass,可以理解为存储模板。

b.当kubernetes集群中不存在本地高速存储资源localpv对应的存储类storageclass时,用户创建的本地高速存储资源localpv的存储资源请求pvc将会是等待(pending)状态。

c.在存储资源请求pvc和本地高速存储资源localpv绑定之后,存储资源请求pvc的状态将会变成和本地高速存储资源localpv一样的已绑定(bound)。

d.被绑定的存储资源pv在集群中被删除之后,存储资源请求pvc的状态变为已丢失(lost)。

e.如果其再次与一个同名的存储资源pv绑定后,存储资源请求pvc的状态变成已绑定(bound)。

从上述描述可知,本申请实施例提供的电子设备,通过应用本地高速存储的集群存储方式实现对本地存储资源的配置管理和调度,能够有效提供分布式集群的存储资源配置的成功率及可靠性,并能够有效降低存储资源的调度复杂度,能够保证数据的一致性,也能够保证读写的高速性能,通过高效的调度机制能够有效提高分布式集群的性能瓶颈。尤其适用于需要高速本地存储作为缓存的使用场景。比如节点上的目录数据是从远程的网络存储上挂载或者预先读取到本地的,为了能加速容器集合读取这些数据的速度。

在另一个实施方式中,存储资源控制器可以与中央处理器9100分开配置,例如可以将存储资源控制器配置为与中央处理器9100连接的芯片,通过中央处理器的控制来实现存储资源配置功能。

如图10所示,该电子设备9600还可以包括:通信模块9110、输入单元9120、音频处理器9130、显示器9160、电源9170。值得注意的是,电子设备9600也并不是必须要包括图10中所示的所有部件;此外,电子设备9600还可以包括图10中没有示出的部件,可以参考现有技术。

如图10所示,中央处理器9100有时也称为控制器或操作控件,可以包括微处理器或其他处理器装置和/或逻辑装置,该中央处理器9100接收输入并控制电子设备9600的各个部件的操作。

其中,存储器9140,例如可以是缓存器、闪存、硬驱、可移动介质、易失性存储器、非易失性存储器或其它合适装置中的一种或更多种。可储存上述与失败有关的信息,此外还可存储执行有关信息的程序。并且中央处理器9100可执行该存储器9140存储的该程序,以实现信息存储或处理等。

输入单元9120向中央处理器9100提供输入。该输入单元9120例如为按键或触摸输入装置。电源9170用于向电子设备9600提供电力。显示器9160用于进行图像和文字等显示对象的显示。该显示器例如可为lcd显示器,但并不限于此。

该存储器9140可以是固态存储器,例如,只读存储器(rom)、随机存取存储器(ram)、sim卡等。还可以是这样的存储器,其即使在断电时也保存信息,可被选择性地擦除且设有更多数据,该存储器的示例有时被称为eprom等。存储器9140还可以是某种其它类型的装置。存储器9140包括缓冲存储器9141(有时被称为缓冲器)。存储器9140可以包括应用/功能存储部9142,该应用/功能存储部9142用于存储应用程序和功能程序或用于通过中央处理器9100执行电子设备9600的操作的流程。

存储器9140还可以包括数据存储部9143,该数据存储部9143用于存储数据,例如联系人、数字数据、图片、声音和/或任何其他由电子设备使用的数据。存储器9140的驱动程序存储部9144可以包括电子设备的用于通信功能和/或用于执行电子设备的其他功能(如消息传送应用、通讯录应用等)的各种驱动程序。

通信模块9110即为经由天线9111发送和接收信号的发送机/接收机9110。通信模块(发送机/接收机)9110耦合到中央处理器9100,以提供输入信号和接收输出信号,这可以和常规移动通信终端的情况相同。

基于不同的通信技术,在同一电子设备中,可以设置有多个通信模块9110,如蜂窝网络模块、蓝牙模块和/或无线局域网模块等。通信模块(发送机/接收机)9110还经由音频处理器9130耦合到扬声器9131和麦克风9132,以经由扬声器9131提供音频输出,并接收来自麦克风9132的音频输入,从而实现通常的电信功能。音频处理器9130可以包括任何合适的缓冲器、解码器、放大器等。另外,音频处理器9130还耦合到中央处理器9100,从而使得可以通过麦克风9132能够在本机上录音,且使得可以通过扬声器9131来播放本机上存储的声音。

本申请的实施例还提供能够实现上述实施例中的存储资源配置方法中全部步骤的一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,该计算机程序被处理器执行时实现上述实施例中的执行主体为服务器或客户端的存储资源配置方法的全部步骤,例如,所述处理器执行所述计算机程序时实现下述步骤:

步骤100:获取用户创建的针对分布式集群的第一存储资源请求信息,并确定该第一存储资源请求信息对应的存储类型。

可以理解的是,在本申请一个或多个实施例中,本地存储资源是指本地高速存储资源pv(persistentvolume),是集群级别的资源,也是是集群中的存储资源,由集群管理员创建。pv的生命周期独立于使用pv的pod。

在本申请一个或多个实施例中,第一存储资源请求信息和第二存储资源请求信息均可以指pvc,pvc是用户对存储资源的请求,请求符合条件的pv与之进行绑定,所以pvc是pv的请求方式。

步骤200:根据所述第一存储资源请求信息对应的存储类型,自所述分布式集群中选取与所述第一存储资源请求信息相匹配的目标本地存储资源。

步骤300:将所述第一存储资源请求信息与所述目标本地存储资源进行绑定处理。

可以理解的是,存储资源pv控制器(controller)负责本地高速存储资源localpv的三阶段管理:声明(provision)/删除(delete)、绑定(attach)/解除绑定(detach)、挂载(mount)/解除挂载(unmount)。

在存储资源pv控制器(controller)中,主协程启动两个工作节点worker来处理本地高速存储资源localpv和存储资源请求pvc的状态迁移过程,且包含有两类工作节点:第一工作节点claimworker:用于处理local存储资源请求pvc的curd的流程和存储资源请求pvc的状态管理;第二工作节点volumeworker:主要对local存储资源pv进行状态管理。

其中,本地高速存储资源localpv状态迁移(更新update存储资源pv状态(status)):

a.本地高速存储资源localpv在挂载到集群猴,其初始状态为可用(available),当于用户声明的存储资源请求pvc进行绑定操作后,状态迁移为已绑定(bound)。

b.本地高速存储资源localpv与绑定的存储资源请求pvc被解除绑定之后,状态迁移为用户对存储资源的请求已被删除,集群尚未回收该资源(release)d;

c.当本地高速存储资源localpv默认的回收策略为recycled,如果对应的存储资源请求pvc被删除之后,本地高速存储资源localpv状态重新变为可用(available);

其中,存储资源请求pvc状态迁移(更新update存储资源请求pvc状态(status)):

a.存储资源请求pvc需要先去配置对应的存储类storageclass,可以理解为存储模板。

b.当kubernetes集群中不存在本地高速存储资源localpv对应的存储类storageclass时,用户创建的本地高速存储资源localpv的存储资源请求pvc将会是等待(pending)状态。

c.在存储资源请求pvc和本地高速存储资源localpv绑定之后,存储资源请求pvc的状态将会变成和本地高速存储资源localpv一样的已绑定(bound)。

d.被绑定的存储资源pv在集群中被删除之后,存储资源请求pvc的状态变为已丢失(lost)。

e.如果其再次与一个同名的存储资源pv绑定后,存储资源请求pvc的状态变成已绑定(bound)。

从上述描述可知,本申请实施例提供的计算机可读存储介质,通过应用本地高速存储的集群存储方式实现对本地存储资源的配置管理和调度,能够有效提供分布式集群的存储资源配置的成功率及可靠性,并能够有效降低存储资源的调度复杂度,能够保证数据的一致性,也能够保证读写的高速性能,通过高效的调度机制能够有效提高分布式集群的性能瓶颈。尤其适用于需要高速本地存储作为缓存的使用场景。比如节点上的目录数据是从远程的网络存储上挂载或者预先读取到本地的,为了能加速容器集合读取这些数据的速度。

本领域内的技术人员应明白,本发明的实施例可提供为方法、装置、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。本发明是参照根据本发明实施例的方法、设备(装置)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

本发明中应用了具体实施例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1