CN111414228B - 基于Kubernetes的管理存储空间的方法和相关装置 - Google Patents
基于Kubernetes的管理存储空间的方法和相关装置 Download PDFInfo
- Publication number
- CN111414228B CN111414228B CN202010121457.3A CN202010121457A CN111414228B CN 111414228 B CN111414228 B CN 111414228B CN 202010121457 A CN202010121457 A CN 202010121457A CN 111414228 B CN111414228 B CN 111414228B
- Authority
- CN
- China
- Prior art keywords
- capacity
- storage space
- storage
- size
- volume
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 66
- 238000012545 processing Methods 0.000 claims description 19
- 238000001514 detection method Methods 0.000 claims description 6
- 238000010586 diagram Methods 0.000 description 16
- 238000004891 communication Methods 0.000 description 15
- 230000003068 static effect Effects 0.000 description 9
- 230000006870 function Effects 0.000 description 8
- 230000002085 persistent effect Effects 0.000 description 8
- 238000004590 computer program Methods 0.000 description 6
- 230000008569 process Effects 0.000 description 5
- 230000008859 change Effects 0.000 description 4
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 238000013461 design Methods 0.000 description 3
- 238000013459 approach Methods 0.000 description 2
- 230000000737 periodic effect Effects 0.000 description 2
- 238000011084 recovery Methods 0.000 description 2
- 238000006467 substitution reaction Methods 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 238000012549 training Methods 0.000 description 2
- 239000000470 constituent Substances 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000007689 inspection Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 244000145841 kine Species 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请提供了一种基于Kubernetes的管理存储空间的方法和相关装置,该包括:根据N个存储卷的存储空间和扩容参数,对该N个存储卷的存储空间分别进行管理。上述技术方案可以根据存储卷的存储空间大小灵活的对存储卷的存储空间进行管理,而不需要按照顺序对存储卷的存储空间进行管理。
Description
技术领域
本申请涉及信息技术领域,更具体地,涉及基于Kubernetes的管理存储空间的方法和相关装置。
背景技术
Kubernetes(K8s)是由谷歌(Google)创建管理的开源平台。Kubernetes的名字来自于希腊语,意思是“舵手”或“领航员”。K8s是一个容器集群管理系统。K8s可以实现容器集群的自动化部署、自动扩缩容、维护等功能。
持久卷(Persistent Volume,PV)是集群(cluster)中存储资源。PV可以与一个存储卷相对应。持久卷请求(Persistent Volume Claim,PVC)是对PV的申请。PVC可以指明存储资源的容量大小和接入类型等信息。K8s可以查找满足条件的PV,并将满足条件的PV与PVC绑定。在此情况下,该PV可以被多个Pod所使用。
有状态应用对象管理的PV的数目可能会是多个。相应的,存储卷的数目也会是多个。但是目前尚未有一个有效的机制对该多个存储卷的存储空间进行管理。
发明内容
本申请提供一种基于Kubernetes的管理存储空间的方法和相关装置,可以根据存储卷的存储空间大小灵活的对存储卷的存储空间进行管理。
第一方面,本申请实施例提供一种基于Kubernetes的管理存储空间的方法,包括:检测确定N个存储卷的存储空间,N为大于或等于1的正整数;根据扩容参数和该N个存储卷的存储空间,对该N个存储卷的存储空间分别进行管理。上述技术方案可以根据存储卷的存储空间大小灵活的对存储卷的存储空间进行管理,而不需要按照顺序对存储卷的存储空间进行管理。
结合第一方面,在第一方面的一种可能的实现方式中,与该N个存储卷对应的有状态应用对象的配置信息包括该扩容参数。
结合第一方面,在第一方面的一种可能的实现方式中,与该N个存储卷对应的有状态应用对象的自定义对象的配置信息中包括该扩容参数。
结合第一方面,在第一方面的一种可能的实现方式中,该扩容参数包括:第一扩容参数,该第一扩容参数用于指示容量阈值,该根据扩容参数和该N个存储卷的存储空间,对该N个存储卷的存储空间分别进行管理,包括:根据该第一扩容参数和该N个存储卷中的第i个存储卷的存储空间,确定该第i个存储卷的已使用存储空间是否超过该容量阈值,i=1,……,或者N;若该第i个存储卷的已使用存储空间超过该容量阈值,则对该第i个存储卷进行扩容操作;若该第i个存储卷的已使用存储空间未超过该容量阈值,则不需要对该第i个存储卷进行扩容操作。上述技术方案可以在存储卷的存储空间完全耗尽前对存储卷进行扩容操作,从而可以避免存储空间完全耗尽时再对存储空间进行扩容操作导致的不必要的时间消耗。
结合第一方面,在第一方面的一种可能的实现方式中,该扩容参数还包括第二扩容参数,该第二扩容参数用于指示扩容后的存储空间大小,该对该第i个存储卷进行扩容操作,包括:将该第i个存储卷的存储空间扩容至该第二扩容参数指示的大小。
结合第一方面,在第一方面的一种可能的实现方式中,该扩容参数还包括第二扩容参数和第三扩容参数,该第二扩容参数用于指示存储空间的增长幅度,该第三扩容参数用于指示存储空间的最大值MMAX_size,该对该第i个存储卷进行扩容操作,包括:根据该第二库容参数和该第i个存储卷的存储空间大小,确定目标存储空间大小MT_size;比较MT_size与MMAX_size;若MT_size大于MMAX_size,则将该第i个存储卷的存储空间大小扩容至MMAX_size;若MT_size不大于MMAX_size,则将该第i个存储卷的存储空间大小扩容至MT_size。上述技术方案限制了存储卷的最大存储空间,从而可以避免对存储空间无限制的扩容操作。
第二方面,本申请实施例提供一种计算机设备,该计算机设备包括用于实现上述第一方面或第一方面的任意一种可能的实现方式的单元。
第三方面,本申请实施例提供一种计算机设备,包括收发器和处理器。可选地,该计算机设备还包括存储器。该处理器用于控制收发器收发信号,该存储器用于存储计算机程序,该处理器用于从存储器中调用并运行该计算机程序,使得该计算机设备执行上述第一方面或第一方面的任一种可能的实现方式的方法。
第四方面,本申请实施例提供一种电子装置,该电子装置可以为用于实现上述第一方面或第一方面的任一种可能的实现方式中的训练设备,或者为设置在训练设备中的芯片。该电子装置包括:处理器,与存储器耦合,可用于执行存储器中的指令和/或程序代码,以实现上述第一方面或第一方面的任一种可能的实现方式中的方法。可选地,该电子装置还包括存储器。可选地,该电子装置还包括通信接口,处理器与通信接口耦合。
当该电子装置为计算机设备时,该通信接口可以是收发器,或,输入/输出接口。
当该电子装置为配置于计算机设备中的芯片时,该通信接口可以是输入/输出接口。
可选地,该收发器可以为收发电路。可选地,该输入/输出接口可以为输入/输出电路。
第五方面,本申请实施例提供一种计算机程序产品,所述计算机程序产品包括:计算机程序代码,当所述计算机程序代码在计算机上运行时,使得计算机执行上述第一方面或第一方面的任一种可能的实现方式的方法。
第六方面,本申请实施例提供一种计算机可读介质,所述计算机可读介质存储有程序代码,当所述计算机程序代码在计算机上运行时,使得计算机执行上述第一方面或第一方面的任一种可能的实现方式的方法。
附图说明
图1是静态供应过程的示意图。
图2是动态供应过程的示意图。
图3是一个StatefulSet的示意图。
图4是利用如图3所示的StatefulSet部署的查询结果。
图5是根据本申请实施例提供的StatefulSet的示意图。
图6是一个CRD的配置信息的示意图。
图7是根据本申请实施例提供的基于K8s的管理存储空间的方法的示意性流程图。
图8是根据本申请实施例提供的基于K8s的管理存储空间的方法的示意性流程图。
图9是根据本申请实施例提供的一种基于Kubernetes的管理存储空间的方法的示意性流程图。
图10是根据本申请实施例提供的一种计算机设备的示意性结构框图。
图11是根据本申请实施例提供的一种计算机设备的示意性结构框图。
具体实施方式
下面将结合附图,对本申请中的技术方案进行描述。
本申请将围绕可包括多个设备、组件、模块等的系统来呈现各个方面、实施例或特征。应当理解和明白的是,各个系统可以包括另外的设备、组件、模块等,并且/或者可以并不包括结合附图讨论的所有设备、组件、模块等。此外,还可以使用这些方案的组合。
另外,在本申请实施例中,“示例的”、“例如”等词用于表示作例子、例证或说明。本申请中被描述为“示例”的任何实施例或设计方案不应被解释为比其它实施例或设计方案更优选或更具优势。确切而言,使用示例的一词旨在以具体方式呈现概念。
本申请实施例中,“相应的(corresponding,relevant)”和“对应的(corresponding)”有时可以混用,应当指出的是,在不强调其区别时,其所要表达的含义是一致的。
本申请实施例中,有时候下标如W1可能会笔误为非下标的形式如W1,在不强调其区别时,其所要表达的含义是一致的。
本申请实施例描述的网络架构以及业务场景是为了更加清楚的说明本申请实施例的技术方案,并不构成对于本申请实施例提供的技术方案的限定,本领域普通技术人员可知,随着网络架构的演变和新业务场景的出现,本申请实施例提供的技术方案对于类似的技术问题,同样适用。
在本说明书中描述的参考“一个实施例”或“一些实施例”等意味着在本申请的一个或多个实施例中包括结合该实施例描述的特定特征、结构或特点。由此,在本说明书中的不同之处出现的语句“在一个实施例中”、“在一些实施例中”、“在其他一些实施例中”、“在另外一些实施例中”等不是必然都参考相同的实施例,而是意味着“一个或多个但不是所有的实施例”,除非是以其他方式另外特别强调。术语“包括”、“包含”、“具有”及它们的变形都意味着“包括但不限于”,除非是以其他方式另外特别强调。
本申请中,“至少一个”是指一个或者多个,“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B的情况,其中A,B可以是单数或者复数。字符“/”一般表示前后关联对象是一种“或”的关系。“以下至少一项(个)”或其类似表达,是指的这些项中的任意组合,包括单项(个)或复数项(个)的任意组合。例如,a,b,或c中的至少一项(个),可以表示:a,b,c,a-b,a-c,b-c,或a-b-c,其中a,b,c可以是单个,也可以是多个。
为了便于本领域技术人员更好地理解本申请的技术方案,首先对本申请中涉及的一些概念进行简单介绍。
1,Pod、PV和PVC:
Pod是K8s中最基本的组成块。换句话说,Pod是K8s中最小的、最简单的可用来创建和部署的单元。
在K8s集群中,PV作为存储资源存在。PV可以与一个存储卷相对应。PV可以反映对应的存储卷的存储容量的大小。本申请实施例中,卷,存储卷,PV卷有时可以混用,应当指出,在不强调其区别时,其所要表达的含义是一致的。
存储空间是指存储卷的存储空间。相应的,存储空间的容量是指存储卷的存储空间的容量。在一些情况下,存储空间也会被描述为PV的存储空间。存储空间的容量也会被描述为PV的容量或者PV的存储空间的容量。例如,容量为50GB的PV是指PV对应的存储卷的存储空间的容量为50GB。因此,本申请实施例中,存储空间和PV的存储空间本有时可以混用,应当指出,在不强调其区别时,其所要表达的含义是一致的。相应的,存储空间的容量,PV的容量和PV的存储空间的容量有时可以混用,应当指出,在不强调其区别时,其所要表达的含义是一致的。
PVC是对PV资源的请求和使用,也是对PV存储资源的“提取证”,而Pod通过PVC来使用PV。PV和PVC之间通过交互过程有着自己的生命周期,这个生命周期分为五个阶段:供应(provisioning)、绑定(binding)、使用(using)、释放(releasing)和回收(reclaiming)。
供应(provisioning):
供应(provisioning)是为集群提供可用的存储卷。K8s提供两种持久化存储卷的提供方式:静态(static)或者动态(dynamic)。
对于静态的提供方式,PV是用K8s的集群管理员(可以简称为“管理员”)创建的。PV代表真实的存储。PV提供的这些存储对于集群中所有的用户都是可用的。PV提供的存储存在于K8s应用程序接口(Application Programming Interface,API)中,并可被Pod作为真实存储使用。在静态供应的情况下,由管理员预先创建PV,用户(或者称为开发者)创建PVC和Pod。Pod通过PVC使用PV提供的存储。
图1示出了静态供应过程。
对于动态的提供方式,当管理员创建的静态PV都不能够匹配用户的PVC时,集群会尝试自动为PVC提供一个存储,这种提供方式基于存储类(StorageClass)。在动态提供方式中,PVC需要请求一个存储类,但是PVC请求的存储类必须由管理员预先创建和配置。管理员需要在API服务器中启用默认存储类(DefaultStorageClass)的接入控制器。
图2示出了动态供应过程。
绑定(binding):
在K8s中,会动态的将PVC与可用的PV进行绑定。在K8s的主节点(Master)中有一个控制回路。该控制回路将监控新的PVC并查找匹配的PV(如果有),并把PVC和PV绑定在一起。如果一个PV曾经动态供给到了一个新的PVC,那么该控制回路会一直绑定这个PV和PVC。一旦PV和PVC绑定了,PVC绑定的PV就是该PVC专属的PV,无论PV和PVC的绑定模式是什么。
如果没有匹配的PV,那么PVC会无限期的处于未绑定状态。一旦存在匹配的PV,PVC绑定该PV。比如,就算集群中存在很多的50GB的PV,需要100G容量的PVC也不会匹配满足需求的PV。直到集群中有100G的PV时,该PVC才会被绑定。PVC基于下面的条件绑定PV,如果下面的条件同时存在,则选择符合所有要求的PV进行绑定:
1)如果PVC指定了存储类,则只会绑定指定了同样存储类的PV;
2)如果PVC设置了选择器,则选择器去匹配符合的PV;
3)如果没有指定存储类和设置选取器,PVC会根据存储空间容量大小和访问模式匹配符合的PV。
使用(using):
Pod把PVC作为卷来使用,K8s集群会通过PVC查找绑定的PV,并将查找到的PV挂接至Pod。对于支持多种访问方式的卷,用户在使用PVC作为卷时,可以指定需要的访问方式。一旦用户拥有了一个已经绑定的PVC,被绑定的PV就归该用户所有。用户能够通过在Pod的存储卷中包含的PVC,从而访问所占有的PV。
释放(releasing)和回收(reclaiming):
当用户完成对卷的使用时,就可以利用API删除PVC对象了。删除PVC后,对应的持久化存储卷被视为“被释放”,但这时还不能给其他的PVC使用。之前的PVC数据还保存在卷中,要根据策略来进行后续处理。
PV的回收策略向集群阐述了在PVC释放卷时,应如何进行后续工作。目前可以采用三种策略:保留,回收或者删除。
在K8s中,PV可以通过各种插件实现。当前支持的插件类型包括:GCEpersistentDisk,AWSelasticBlockStore,AzureFile,AzureDisk,NFS,iSCSI等。
PV可以指定存储容量(capacity)。该存储容量可以使用PV的capacity属性进行设置。
2,StatefulSet
StatefulSet是为了解决有状态服务问题而设计的。因此,StatefulSet也可以称为有状态应用对象。StatefulSet的应用场景可以包括:1),稳定的持久化存储,即Pod重新调度后还能访问相同的持久化数据,基于PVC实现;2),稳定的网络标志,即Pod重新调度后该Pod的名称(PodName)和主机名称(HostName)不变,基于无头服务(Headless Service)来实现;3),有序部署,有序扩展,即Pod是有顺序的,在部署或者扩展的时候要一句定义的顺序依次进行(即从0到N-1,在下一个Pod运行之前所有的Pod必须都是运行(Running)和准备(Ready)状态),基于初始化容器(init-Containters)实现;4,有序收缩,有序删除(即从N-1到0)。
例如,图3是一个StatefulSet的示意图。
如图3所示的StatefulSet的名称为web。如图3所示的StatefulSet创建的卷声明模板(volumClaimTemplates)的名称为www,需要部署的Pod的数目为3。
图4是利用如图3所示的StatefulSet部署的查询结果。
如图4所示,利用如图3所示的StatefulSet部署了名称为web-0,web-1和web-2的三个Pod。相应的,利用如图3所示的StatefulSet创建的PVC的名称为www-web-0;www-web-1和www-web-2。
综上,如图3所示的StatefulSet对应的PVC名称为www-web-0;www-web-1和www-web-2。假设名称为www-web-0;www-web-1和www-web-2的PVC所绑定的PV分别可以称为PV0、PV1和PV2。那么如图3所示的StatefulSet可以称为对应于PV0、PV1和PV2的StatefulSet,或者,可以称为与PV0、PV1和PV2对应的StatefulSet。假设PV0、PV1和PV2分别对应于存储卷0、存储卷1和存储卷2。那么如图3所示的StatefulSet也可以称为对应于存储卷0、存储卷1和存储卷2的StatefulSet,或者,可以称为与存储卷0、存储卷1和存储卷2对应的StatefulSet。
3,CRD
自定义资源(CustomResourceDefinition,CRD)可以在不需要改变代码的情况下扩展K8s API。CRD也可以称为自定义对象。通过CRD可以向K8s API中增加新资源类型,而不需要修改K8s源码来创建自定义的API服务器(server),该功能大大提高了Kubernetes的扩展能力。当创建一个新的CustomResourceDefinition(CRD)时,K8s API服务器将为指定的每个版本创建一个新的RESTful资源路径,可以根据该资源路径来创建一些自定义的类型资源。CRD可以是命名空间的,也可以是集群范围的,由CRD的作用域(scpoe)字段中所指定的,与现有的内置对象一样,删除名称空间将删除该名称空间中的所有自定义对象。customresourcedefinition本身没有名称空间,所有名称空间都可以使用。
自定义资源(CustomResourceDefinition,CRD)
本申请实施例中所称的对PV进行扩容操作是指对PV对应的存储卷的容量的扩容操作。
如上所述,目前K8s的支持的PV的部署、扩容以及删除都是有序的。换句话说,如果需要对PV进行扩容操作,则需要按照顺序从0到N-1依次对PV进行扩容操作。但是,在一些实践中,N个PV中可能只有部分需要进行扩容操作。因此,如果按照顺序对N个PV进行扩容操作可能会导致对某些不需要进行扩容操作的PV进行扩容操作,从而造成了资源浪费。此外,由于扩容操作是按照顺序从0至N-1进行的,这样如果需要扩容的PV并非是排名靠前的,则可能无法及时对需要扩容的PV进行扩容操作。
本申请实施例提供一种基于K8s的管理存储空间的方法,利用扩容参数可以对卷的存储空间分别进行管理。
可选的,在一些实现方式中,StatefulSet的配置信息中可以包括该扩容参数。换句话说,StatefulSet的配置信息除了如图3所示的Headless Service,volumeClaimTemplates和StatefulSet三部分以外,还可以包括扩容参数。该扩容参数用于实现对卷的存储空间的管理。
例如,在一些实施例中,该扩容参数可以包括第一扩容参数。该第一扩容参数用于指示容量阈值。
在一些实施例中,该第一扩容参数可以通过一个比例指示容量阈值。
例如,该比例可以是卷的已使用存储空间与卷的总存储空间的比。在此情况下,可以根据该第一扩容参数,卷的已使用存储空间和卷的总存储空间确定是否需要对该卷进行扩容操作。如果卷的已使用存储空间与总存储空间之比大于或等于该第一扩容参数,则可以对该卷进行扩容操作。如果卷的已使用存储空间与总存储空间之比小于该第一扩容参数,则不需要对该卷进行扩容操作。例如,该第一扩容参数可以是80%。在此情况下,如果一个卷的已使用存储空间比总存储空间大于或等于80%,则对该卷进行扩容操作。如果一个卷的已使用存储空间比总存储空间小于80%,则不需要对该卷进行扩容操作。
又如,该比例可以是未使用存储空间与总存储空间的比。在此情况下,可以根据该第一扩容参数,卷的未使用存储空间和卷的总存储空间确定是否需要对该卷进行扩容操作。如果卷的未使用存储空间与总存储空间之比小于或等于该第一扩容参数,则可以对该卷进行扩容操作。如果卷的未使用存储空间与总存储空间之比大于该第一扩容参数,则不需要对该卷进行扩容操作。例如,该第一扩容参数可以是20%。在此情况下,如果卷的未使用存储空间与总存储空间之比小于或等于20%,则可以对该卷进行扩容操作。如果卷的未使用存储空间与总存储空间之比大于20%,则不需要对该卷进行扩容操作。
在另一些实施例中,该第一扩容参数可以是一个具体的容量值。
在一些实施例中,该容量值可以表示已使用存储空间的阈值。在此情况下,可以根据该第一扩容参数和卷的已使用存储空间确定是否需要对该卷进行扩容操作。如果卷的已使用存储空间的值大于或等于该第一扩容参数,则可以对该卷进行扩容操作。如果卷的已使用存储空间小于该第一扩容参数,则不需要对该卷进行扩容操作。例如,该第一扩容参数可以是800MB。在此情况下,如果卷的已使用存储空间大于或等于800MB,则可以对该卷进行扩容操作。如果卷的已使用存储空间小于800MB,则不需要对该卷进行扩容操作。
在另一些实施例中,该容量值可以表示未使用存储空间的阈值。在此情况下,可以根据该第一扩容参数和卷的未使用存储空间确定是否需要对该卷进行扩容操作。如果卷的未使用存储空间小于或等于该第一扩容参数,则可以对该卷进行扩容操作。如果卷的未使用存储空间大于该第一扩容参数,则不需要对该卷进行扩容操作。例如,该第一扩容参数可以是200MB。在此情况下,如果卷的未使用存储空间小于或等于200MB,则可以对该卷进行扩容操作。如果卷的未使用存储空间大于200MB,则不需要对该卷进行扩容操作。
又如,在一些实施例中,该扩容参数包括第二扩容参数。该第二扩容参数用于指示扩容后的存储空间的大小。换句话说,该扩容参数可以包括该第一扩容参数和该第二扩容参数。这样,在根据该第一扩容参数确定需要对存储空间进行扩容操作的情况下,可以根据该第二扩容参数确定扩容后的存储空间的大小。
可选的,在一些实施例中,该第二扩容参数可以通过扩容比例来指示扩容后的存储空间大小。
例如,该第二扩容参数可以是卷在进行扩容操作后的存储空间的大小与进行扩容操作前的存储空间大小的比值。例如,该第二扩容参数可以是120%。在此情况下,如果一个卷进行扩容操作,那么该卷进行扩容操作后的存储空间的大小与进行扩容操作前的存储空间的大小之比为120%。例如,若卷的存储空间的大小为1000MB且该第二扩容参数为120%,则在对该卷进行扩容操作后,该卷的存储空间的大小为1200MB。
又如,该第二扩容参数可以是卷进行扩容操作后的增加的存储空间的大小与进行扩容操作前的存储空间大小的比值。例如,该第二扩容参数可以是20%。在此情况下,如果一个卷进行扩容操作,那么该卷的存储空间的大小增加20%。例如,若卷的存储空间的大小为1000MB且该第二扩容参数为20%,则在对该卷进行扩容操作后,该卷的存储空间的大小为1200MB。
可选的,在一些实施例中,该第二扩容参数可以是进行扩容操作时增加的存储空间的大小值。例如,该第二扩容参数可以是200MB。在此情况下,如果对一个卷进行扩容操作,那么该卷的存储空间在进行扩容操作后增加了200MB。例如,若卷的存储空间大小为1000MB且该第二扩容参数为200MB。那么在对该卷进行扩容操作后,该卷的存储空间为1200MB。
在一些实施例中,该第二扩容参数可以包括一个值(例如上述的比值或者存储空间的大小值)。在此情况下,每次对卷进行扩容操作都可以按照该值进行操作。例如,假设第二扩容参数是进行扩容操作后增加的存储空间的大小与进行扩容操作前的存储空间的大小的比值。假设该值为20%且卷在进行扩容操作前的存储空间大小为1000MB。在此情况下,第一次对该卷进行扩容操作后该卷的存储空间的大小变为1200MB;第二次对该卷进行扩容操作后该卷的存储空间的大小变为1440MB;第三次对该卷进行扩容操作后该卷的存储空间大小变为1728MB,以此类推。又如,假设该第二扩容参数是增加的存储空间的大小值。假设该值为200MB且卷在进行扩容操作前的存储空间大小为1000MB。在此情况下,第一次对该卷进行扩容操作后该卷的存储空间大小变为1200MB;第二次对该卷进行扩容操作后该卷的存储空间大小变为1400MB;第三次对该卷进行扩容操作后该卷的存储空间大小变为1600MB,以此类推。
在另一些实施例中,该第二扩容参数可以包括多个值(例如上述比例或者存储空间的大小值)。该多个值与多个扩容次数对应。在此情况下,每次对卷进行扩容操作都可以按照扩容的次数与对应的值对卷进行扩容操作。例如,假设第二扩容参数是进行扩容操作后增加的存储空间的大小与进行扩容操作前的存储空间的大小的比值。假设该多个值为20%、10%和5%,且20%对应于第一次扩容,10%对应第二次扩容,5%对应第三次扩容。假设卷在进行扩容操作前的存储空间大小为1000MB。在此情况下,第一次对该卷进行扩容操作后该卷的存储空间的大小变为1200MB;第二次对该卷进行扩容操作后该卷的存储空间的大小变为1320MB;第三次对该卷进行扩容操作后该卷的存储空间大小变为1386MB。又如,假设该第二扩容参数是增加的存储空间的大小值。假设该多个值为200MB,100MB和50MB,且200MB对应于第一次扩容,100MB对应第二次扩容,50MB对应第三次扩容。假设卷在进行扩容操作前的存储空间大小为1000MB。在此情况下,第一次对该卷进行扩容操作后该卷的存储空间大小变为1200MB;第二次对该卷进行扩容操作后该卷的存储空间大小变为1300MB;第三次对该卷进行扩容操作后该卷的存储空间大小变为1350MB。
又如,在一些实施例中,该扩容参数还可以包括第三扩容参数。该第三扩容参数用于指示存储空间的最大值。换句话说,该扩容参数可以包括该第一扩容参数和该第三扩容参数。这样,在根据该第一扩容参数确定需要对存储空间进行扩容的情况下,可以根据第一库容参数和第三扩容参数确定扩容后的存储空间的大小以及存储空间的最大值。
在一些实施例中,该第三扩容参数可以是一个表示存储空间的大小的值。例如,在一些实施例中,该存储空间当前的总大小为1000MB,该第三扩容参数为1600MB。在此情况下,若需要对该存储空间进行扩容,则可以先将该存储空间的大小扩容至1300MB。即将该存储空间的总大小增加该存储空间的最大值与该存储空间当前的总大小之差的50%。若还需要对该存储空间进行扩容,则可以将该存储空间的大小扩容至1600MB。
在另一些实施例中,该第二扩容参数可以是一个比例值。该比例值表示该存储空间的最大值和该存储空间的初始大小的比例。例如,该比例值为160%,该存储空间的初始大小为1000MB。在此情况下,若需要对该存储空间进行扩容,则可以先将该存储空间的大小扩容至1300MB。若还需要对该存储空间进行扩容,则可以将该存储空间的大小扩容至1600MB。
上述实施例对存储空间进行两步扩容以扩容至第三扩容参数所指示的存储空间的最大值只是为了帮助本领域技术人员理解本申请技术方案所列举的具体实施例。本申请实施例对对存储空间进行扩容操作到存储空间的最大值的步数进行限定。
例如,在一些实施例中,可以直接将存储空间扩容至该第三扩容参数所指示的存储空间的最大值。
又如,在另一些实施例中,可以通过三步扩容操作将存储空间扩容至该第三扩容参数扩容至该第三扩容参数所指示的存储空间的最大值。三步扩容操作中的任意两边扩容操作扩容的容量大小可以相同也可以不同。还假设该存储空间当前的总大小为1000MB,该第三扩容参数为1600MB。在一些实施例中,第一次扩容操作可以将该存储空间的大小扩容至1100MB,第二次扩容操作可以将该存储空间的大小库容至1300,第三次扩容操作可以将该存储空间的大小扩容至1600MB。在另一些实施例中,第一次扩容操作可以将该存储空间的大小扩容至1200MB,第二次扩容操作可以将该存储空间的大小扩容至1400MB,第三次扩容操作可以将该存储空间的大小扩容至1600MB。
在另一些实施例中,该扩容参数可以包括该第一扩容参数、该第二扩容参数和该第三扩容参数。在此情况下,可以根据该第一扩容参数确定是否需要对存储空间进行扩容操作。若确定需要对该存储空间进行扩容操作,则根据该第二扩容参数和存储空间大小,确定扩容后得到的目标存储空间大小。为了便于描述,以下使用MT_size表示该目标存储空间大小。以下使用MMAX_size表示该第三扩容参数所指示的存储空间的最大值。比较MMAX_size和MT_size。若MT_size小于或等于MMAX_size,则将该存储空间的大小扩容至MT_size。若MT_size大于MMAX_size,则将该存储空间的大小扩容至MMAX_size。
例如,假设待扩容的存储空间大小为1000MB,该第二扩容参数为200MB(换句话说每次扩容操作都扩容200MB),存储空间的最大值为1600MB。第一次扩容操作的确定的目标存储空间大小为1200MB。1200MB小于1600MB(即该存储空间的最大值)。因此,可以将该存储空间的大小扩容至1200MB。第二次扩容操作确定的目标存储空间大小为1400MB。1400MB小于1600MB。因此,可以将该存储空间的大小扩容至1400。第三次扩容操作确定的目标存储空间大小为1600MB。1600MB等于1600MB。因此,可以将该存储空间的大小扩容至1600MB。由于该存储空间的大小已经等于该存储空间的最大值,则不再对该存储空间进行后续的扩容操作。
又如,假设待扩容的存储空间大小为1000MB,该第二扩容参数为200MB(换句话说每次扩容操作都扩容200MB),存储空间的最大值为1500MB。第一次扩容操作的确定的目标存储空间大小为1200MB。1200MB小于1500MB(即该存储空间的最大值)。因此,可以将该存储空间的大小扩容至1200MB。第二次扩容操作确定的目标存储空间大小为1400MB。1400MB小于1500MB。因此,可以将该存储空间的大小扩容至1400。第三次扩容操作确定的目标存储空间大小为1600MB。1600MB大于1600MB。因此,可以将该存储空间的大小扩容至1500MB。由于该存储空间的大小已经等于该存储空间的最大值,则不再对该存储空间进行后续的扩容操作。
在一些实施例中,该第一扩容参数可以表示为:
volume-expand-threshold.k8s.io/<volumename>=<threshold>,其中<volumename>为卷的名称信息,<threshold>表示阈值。
在一些实施例中,该第二扩容参数可以表示为:
volume-expand-rate.k8s.io/<volumename>=<rate>,其中<rate>表示每次扩容操作存储空间的大小与扩容操作前的存储空间大小的比例。
在一些实施例中,该第三扩容参数可以表示为:
volume-expand-maxsize.k8s.io/<volumename>=<maxsize>,其中<maximize>表示存储空间的最大值。当存储空间的大小到达maxmize时,不再对该存储空间进行扩容操作。
图5是根据本申请实施例提供的StatefulSet的示意图。如图5所示的StatefulSet的配置信息中包括第一扩容参数,第二扩容参数和第三扩容参数。利用图5所示的StatefulSet的配置信息,可以确定在卷的存储空间的已使用容量大小与存储空间的总大小之比大于或等于80%的情况下,可以对该存储空间进行扩容操作。每次扩容操作增加的容量大小是该存储空间总大小的10%。该存储空间最大可以被扩容至100GB。
在一些实施例中,StatefulSet的配置信息可以包括一组扩容参数,该组扩容参数可以用于对多个卷进行扩容操作。例如,图5所示的的StatefulSet中仅包括一组扩容参数。如图5所示的StatefulSet的名称为web,扩容参数中的<volumename>信息为www,replica字段的值为3。因此,该组扩容参数可以用于对PVC的名称为web-www-0,web-www-1和web-www-2的对应的三个卷进行扩容操作。
在另一些实施例中,StatefulSet的配置信息中可以包括多组扩容参数,多组扩容参数可以分别用于对多个卷进行扩容操作。例如,在一些实施例中,StatefulSet的配置信息中的annotation字段可以如下所示:
annotations:
volume-expand-threshold.k8s.io/web-www-0=80%
volume-expand-rate.k8s.io/web-www-0=20%
volume-expand-maxsize.k8s.io/web-www-0=100G
volume-expand-threshold.k8s.io/web-www-1=90%
volume-expand-rate.k8s.io/web-www-1=10%
volume-expand-maxsize.k8s.io/web-www-1=120G
volume-expand-threshold.k8s.io/web-www-2=850%
volume-expand-rate.k8s.io/web-www-2=10%
volume-expand-maxsize.k8s.io/web-www-2=100G
如上所述的StatefulSet的配置信息中共包括三组扩容参数,该三组扩容参数分别对应于PVC的为web-www-0,web-www-1和web-www-2的三个卷。例如,该三组扩容参数中的第一组扩容参数:
volume-expand-threshold.k8s.io/web-www-0=80%
volume-expand-rate.k8s.io/web-www-0=20%
volume-expand-maxsize.k8s.io/web-www-0=100G
是对应于PVC的名称为web-www-0的卷的扩容参数。根据该扩容参数,可以对名称为web-www-0的卷进行扩容操作。具体地,PVC的名称为web-www-0的卷的存储空间的已使用容量大小与存储空间的总大小之比大于或等于80%的情况下,可以对该存储空间进行扩容操作。每次扩容操作增加的容量大小是该存储空间总大小的10%。该存储空间最大可以被扩容至100GB。
可选的,在另一些实现方式中,StatefulSet的CRD的配置信息中可以包括该扩容参数。在一些实施例中,该扩容参数可以包括第一扩容参数。在另一些实施例中,该扩容参数可以包括该第二扩容参数和该第三扩容参数中的一个或全部,以及该第一扩容参数。该第一扩容参数、该第二扩容参数和该第三扩容参数的具体实现方式与StatefulSet的配置信息中包括的扩容参数的实现方式相同,为了简洁,在此就不再赘述。
在一些实施例中,该第一扩容参数可以表示为:
volume-expand-threshold.k8s.io/<volumename>=<threshold>,其中<volumename>为卷的名称信息,<threshold>表示阈值。
在一些实施例中,该第二扩容参数可以表示为:
volume-expand-rate.k8s.io/<volumename>=<rate>,其中<rate>表示每次扩容操作存储空间的大小与扩容操作前的存储空间大小的比例。
在一些实施例中,该第三扩容参数可以表示为:
volume-expand-maxsize.k8s.io/<volumename>=<maxsize>,其中<maximize>表示存储空间的最大值。当存储空间的大小到达maxmize时,不再对该存储空间进行扩容操作。
图6是一个CRD的配置信息的示意图。如图6所示的CRD的配置信息中包括第一扩容参数,第二扩容参数和第三扩容参数。利用图6所示的CRD的配置信息,可以确定在卷的存储空间的已使用容量大小与存储空间的总大小之比大于或等于80%的情况下,可以对该存储空间进行扩容操作。每次扩容操作增加的容量大小是该存储空间总大小的30%。该存储空间最大可以被扩容至100G。
与StatefulSet的配置信息中包含扩容参数类似。在一些实施例中,一个CRD的配置信息中包括的扩容参数可以用于对多个卷进行扩容操作。例如,如图6所示的CRD包括的扩容参数可以用于对多个卷进行扩容操作。具体地,如图6所示的CRD中的kind字段为Statefulset,name字段为web,spec字段为:
volume-expand-threshold.k8s.io/www=80%
volume-expand-rate.k8s.io/www=10%
volume-expand-maxsize.k8s.io/www=100G
因此,该组扩容参数可以用于对PVC的名称为web-www-0,web-www-1和web-www-2的对应的三个卷进行扩容操作。
在另一些实施例中,一个CRD的配置信息中包括的扩容参数可以仅用于对一个卷进行扩容操作。在此情况下,StatefulSet可以对应于多个CRD。该多个CRD中的每个CRD的扩容参数可以用于对一个卷进行扩容操作。换句话说,该多个CRD可以分别用于对多个卷进行扩容操作。
图7是根据本申请实施例提供的基于K8s的管理存储空间的方法的示意性流程图。
701,获取用户创建StatefulSet。该StatefulSet中设置注释(annotation)字段。该注释字段中包括扩容参数。
StateFulset中的扩容参数中的部分或全部可以由用户自行配置,也可以是系统预设好的。
702,在确定StateFulset已经创建后,创建Pod,PVC。
703,在检测到StateFulset中包括扩容参数的情况下,将该StateFulset加入到定期检查列表中。
704,定期检查StatefulSet中的卷的存储空间,根据检测结果和扩容参数,对卷的存储空间进行管理。
步骤701至步骤704可以由计算机设备(例如服务器)或者服务器的芯片实现。更具体地,步骤701至步骤704可以由运行在计算机设备中的K8s组件实现。例如,步骤701可以由组件kube-apiserver实现。步骤702可以由组件kube-controller-manager实现。步骤703和步骤704可以由expand-controller实现。
kube-apiserver提供了资源操作的唯一入口,用户或其他K8s组件都是与kube-apiserver通信对相关资源进行操作。
kube-controller-manager是主节点(Master)上众多控制器(controller)的组合。kube-controller-manager负责维护集群应用状态等,其中StatefulSet控制器负责维护StateFulset资源状态,而PV Controller负责维护PVC和PV资源状态。
expand-controller观察StatefulSet状态变化,在发生变化时取出StatefulSet中与PVC的名称相关的信息,确定PVC的名称。根据PVC的名称找到对应的卷。根据找到的卷中的已使用的存储空间大小和注释字段中的阈值确定是否需要对该卷的存储空间进行扩容。若需要扩容,则根据注释字段中的<rate>和<maxsize>确定扩容后的存储空间的大小。
图8是根据本申请实施例提供的基于K8s的管理存储空间的方法的示意性流程图。
801,获取用户创建StatefulSet以及CRD。该CRD中包括扩容参数。
CRD中的扩容参数中的部分或全部可以由用户自行配置,也可以是系统预设好的。
802,在确定StateFulset已经创建后,创建Pod,PVC。
803,在检测到有CRD被创建的情况下,确定与该CRD对应的StatefulSet,将该StatefulSet加入到定期检查列表中。
804,定期检查StatefulSet中的卷的存储空间,根据检测结果和扩容参数,对卷的存储空间进行管理。
步骤801至步骤804可以由计算机设备(例如服务器)或者服务器的芯片实现。更具体地,步骤801至步骤804可以由运行在计算机设备中的K8s组件实现。例如,步骤801可以由组件kube-apiserver实现。步骤802可以由组件kube-controller-manager实现。步骤803和步骤804可以由expand-controller实现。
kube-apiserver和kube-controller-manager的功能与图7所示实施例中kube-apiserver和kube-controller-manager的功能新疆同,为了简介,在此就不再赘述。
expand-controller观察StatefulSet状态变化,在发生变化时取出CRD中与PVC的名称相关的信息,确定PVC的名称。根据PVC的名称找到对应的卷。根据找到的卷中的已使用的存储空间大小和扩容参数中的阈值确定是否需要对该卷的存储空间进行扩容。若需要扩容,则根据<rate>和<maxsize>确定扩容后的存储空间的大小。。
图9是根据本申请实施例提供的一种基于Kubernetes的管理存储空间的方法的示意性流程图。
901,检测确定N个存储卷的存储空间,N为大于或等于1的正整数。
902,根据扩容参数和该N个存储卷的存储空间,对该N个存储卷的存储空间分别进行管理。
可选的,在一些实施例中,与该N个存储卷对应的有状态应用对象的配置信息包括该扩容参数。
可选的,在另一些实施例中,与该N个存储卷对应的有状态应用对象的自定义对象的配置信息中包括该扩容参数。
可选的,在一些实施例中,该扩容参数包括:第一扩容参数,该第一扩容参数用于指示容量阈值,该根据扩容参数和该N个存储卷的存储空间,对该N个存储卷的存储空间分别进行管理,包括:根据该第一扩容参数和该N个存储卷中的第i个存储卷的存储空间,确定该第i个存储卷的已使用存储空间是否超过该容量阈值,i=1,……,或者N;若该第i个存储卷的已使用存储空间超过该容量阈值,则对该第i个存储卷进行扩容操作;若该第i个存储卷的已使用存储空间未超过该容量阈值,则不需要对该第i个存储卷进行扩容操作。
可选的,在一些实施例中,该扩容参数还包括第二扩容参数,该第二扩容参数用于指示扩容后的存储空间大小,该对该第i个存储卷进行扩容操作,包括:将该第i个存储卷的存储空间扩容至该第二扩容参数指示的大小。
可选的,在一些实施例中,该扩容参数还包括第二扩容参数和第三扩容参数,该第二扩容参数用于指示存储空间的增长幅度,该第三扩容参数用于指示存储空间的最大值MMAX_size,该对该第i个存储卷进行扩容操作,包括:根据该第二库容参数和该第i个存储卷的存储空间大小,确定目标存储空间大小MT_size;比较MT_size与MMAX_size;若MT_size大于MMAX_size,则将该第i个存储卷的存储空间大小扩容至MMAX_size;若MT_size不大于MMAX_size,则将该第i个存储卷的存储空间大小扩容至MT_size。
图9所示方法的各个步骤的具体实现方式可以参见以上实施例,为了简洁,在此就不再赘述。
图10是根据本申请实施例提供的一种计算机设备的示意性结构框图。如图10所示的计算机设备1000包括检测单元1001和处理单元1002。
检测单元1001,用于检测确定N个存储卷的存储空间,N为大于或等于1的正整数。
处理单元1002,根据扩容参数和该N个存储卷的存储空间,对该N个存储卷的存储空间分别进行管理。
可选的,在一些实施例中,与该N个存储卷对应的有状态应用对象的配置信息包括该扩容参数。
可选的,在另一些实施例中,与该N个存储卷对应的有状态应用对象的自定义对象的配置信息中包括该扩容参数。
可选的,在一些实施例中,该扩容参数包括:第一扩容参数,该第一扩容参数用于指示容量阈值,该根据扩容参数和该N个存储卷的存储空间,对该N个存储卷的存储空间分别进行管理,包括:根据该第一扩容参数和该N个存储卷中的第i个存储卷的存储空间,确定该第i个存储卷的已使用存储空间是否超过该容量阈值,i=1,……,或者N;若该第i个存储卷的已使用存储空间超过该容量阈值,则对该第i个存储卷进行扩容操作;若该第i个存储卷的已使用存储空间未超过该容量阈值,则不需要对该第i个存储卷进行扩容操作。
可选的,在一些实施例中,该扩容参数还包括第二扩容参数,该第二扩容参数用于指示扩容后的存储空间大小,该对该第i个存储卷进行扩容操作,包括:将该第i个存储卷的存储空间扩容至该第二扩容参数指示的大小。
可选的,在一些实施例中,该扩容参数还包括第二扩容参数和第三扩容参数,该第二扩容参数用于指示存储空间的增长幅度,该第三扩容参数用于指示存储空间的最大值MMAX_size,该对该第i个存储卷进行扩容操作,包括:根据该第二库容参数和该第i个存储卷的存储空间大小,确定目标存储空间大小MT_size;比较MT_size与MMAX_size;若MT_size大于MMAX_size,则将该第i个存储卷的存储空间大小扩容至MMAX_size;若MT_size不大于MMAX_size,则将该第i个存储卷的存储空间大小扩容至MT_size。
检测单元1001和处理单元1002的具体功能和有益效果可以参见上述实施例中的描述,为了简洁,在此就不再赘述。
图11是根据本申请实施例提供的一种计算机设备的示意性结构框图。如图11所示的计算机设备1100包括存储器1101、处理器1102、通信接口1103以及总线1104。其中,存储器1101、处理器1102、通信接口1103通过总线1104实现彼此之间的通信连接。
存储器1101可以是只读存储器(Read Only Memory,ROM),静态存储设备,动态存储设备或者随机存取存储器(Random Access Memory,RAM)。存储器1101可以存储程序,当存储器1101中存储的程序被处理器1102执行时,处理器1102和通信接口1103用于执行上述方法实施例的各个步骤。
处理器1102可以采用通用的中央处理器(Central Processing Unit,CPU),微处理器,应用专用集成电路(Application Specific Integrated Circuit,ASIC),图形处理器(graphics processing unit,GPU)或者一个或多个集成电路,用于执行相关程序,以实现本申请如图10所示的计算机设备中的单元所需执行的功能,或者执行本申请方法实施例的各个步骤。
处理器1102还可以是一种集成电路芯片,具有信号的处理能力。在实现过程中,本申请方法实施例的各个步骤可以通过处理器1102中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器1102还可以是通用处理器、数字信号处理器(Digital SignalProcessing,DSP)、专用集成电路(ASIC)、现成可编程门阵列(Field Programmable GateArray,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本申请实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本申请实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器1101,处理器1102读取存储器1101中的信息,结合其硬件完成本申请如图10所示的计算机设备中的单元所需执行的功能,或者执行本申请方法实施例的各个步骤。
通信接口1103使用例如但不限于收发器一类的收发装置,来实现装置1100与其他设备或通信网络之间的通信。例如,可以通过通信接口1103获取卷的剩余存储空间。
总线1104可包括在装置1100各个部件(例如,存储器1101、处理器1102、通信接口1103)之间传送信息的通路。
应理解,计算机设备1000中的检测单元1001和处理单元1002可以相当于处理器1102。
本申请实施例中的芯片可以是编程门阵列(field programmable gate array,FPGA),可以是专用集成芯片(application specific integrated circuit,ASIC),还可以是系统芯片(system on chip,SoC),还可以是中央处理器(central processor unit,CPU),还可以是网络处理器(network processor,NP),还可以是数字信号处理电路(digital signal processor,DSP),还可以是微控制器(micro controller unit,MCU),还可以是可编程控制器(programmable logic device,PLD)、其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件,或其他集成芯片。
在实现过程中,上述方法的各步骤可以通过处理器中的硬件的集成逻辑电路或者软件形式的指令完成。结合本申请实施例所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器,处理器读取存储器中的信息,结合其硬件完成上述方法的步骤。为避免重复,这里不再详细描述。
应注意,本申请实施例中的处理器可以是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法实施例的各步骤可以通过处理器中的硬件的集成逻辑电路或者软件形式的指令完成。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本申请实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器,处理器读取存储器中的信息,结合其硬件完成上述方法的步骤。
可以理解,本申请实施例中的存储器可以是易失性存储器或非易失性存储器,或可包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器(read-only memory,ROM)、可编程只读存储器(programmable ROM,PROM)、可擦除可编程只读存储器(erasable PROM,EPROM)、电可擦除可编程只读存储器(electrically EPROM,EEPROM)或闪存。易失性存储器可以是随机存取存储器(random access memory,RAM),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的RAM可用,例如静态随机存取存储器(static RAM,SRAM)、动态随机存取存储器(dynamic RAM,DRAM)、同步动态随机存取存储器(synchronous DRAM,SDRAM)、双倍数据速率同步动态随机存取存储器(double data rateSDRAM,DDR SDRAM)、增强型同步动态随机存取存储器(enhanced SDRAM,ESDRAM)、同步连接动态随机存取存储器(synchlink DRAM,SLDRAM)和直接内存总线随机存取存储器(directrambus RAM,DR RAM)。应注意,本文描述的系统和方法的存储器旨在包括但不限于这些和任意其它适合类型的存储器。
根据本申请实施例提供的方法,本申请还提供一种计算机程序产品,该计算机程序产品包括:计算机程序代码,当该计算机程序代码在计算机上运行时,使得该计算机执行上述实施例中任意一个实施例的方法。
根据本申请实施例提供的方法,本申请还提供一种计算机可读介质,该计算机可读介质存储有程序代码,当该程序代码在计算机上运行时,使得该计算机上述方法实施例中任意一个实施例的方法。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。
Claims (14)
1.一种基于Kubernetes的管理存储空间容量的方法,其特征在于,所述方法应用于容器集群管理平台,所述容器集群管理平台通过有状态应用对象创建和管理存储卷,所述有状态应用对象包括扩容参数,所述扩容参数及取值包括用于指示开始扩容所述存储卷的存储空间容量时的触发条件,所述方法包括:
获取已创建的所述有状态应用对象;
确定所述有状态应用对象创建的N个存储卷,N为大于或等于1的正整数;
检测确定所述N个存储卷的存储空间容量,N为大于或等于1的正整数;
根据所述扩容参数及取值和所述N个存储卷的存储空间容量,对所述N个存储卷的存储空间容量分别进行管理,使得在所述N个存储卷中部分或者全部存储卷的已使用存储空间容量达到所述扩容参数的取值的情况下,所述容器集群管理平台对已使用存储空间容量达到所述扩容参数的取值的存储卷进行扩容操作。
2.如权利要求1所述的方法,其特征在于,与所述N个存储卷对应的有状态应用对象的配置信息包括所述扩容参数。
3.如权利要求1所述的方法,其特征在于,与所述N个存储卷对应的有状态应用对象的自定义对象的配置信息中包括所述扩容参数。
4.如权利要求1至3中任一项所述的方法,其特征在于,所述扩容参数包括:第一扩容参数,所述第一扩容参数用于指示容量阈值,所述根据所述扩容参数及取值和所述N个存储卷的存储空间容量,对所述N个存储卷的存储空间容量分别进行管理,包括:
根据所述第一扩容参数和所述N个存储卷中的第i个存储卷的存储空间容量,确定所述第i个存储卷的已使用存储空间容量是否超过所述容量阈值,i=1,……,或者N;
若所述第i个存储卷的已使用存储空间容量超过所述容量阈值,则对所述第i个存储卷进行扩容操作;
若所述第i个存储卷的已使用存储空间容量未超过所述容量阈值,则不需要对所述第i个存储卷进行扩容操作。
5.如权利要求4所述的方法,其特征在于,所述扩容参数还包括第二扩容参数,所述第二扩容参数用于指示扩容后的存储空间容量大小,所述对所述第i个存储卷进行扩容操作,包括:
将所述第i个存储卷的存储空间容量扩容至所述第二扩容参数指示的大小。
6.如权利要求4所述的方法,其特征在于,所述扩容参数还包括第二扩容参数和第三扩容参数,所述第二扩容参数用于指示存储空间容量的增长幅度,所述第三扩容参数用于指示存储空间容量的最大值MMAX_size,所述对所述第i个存储卷进行扩容操作,包括:
根据所述第二扩容参数和所述第i个存储卷的存储空间容量大小,确定目标存储空间容量大小MT_size;
比较MT_size与MMAX_size;
若MT_size大于MMAX_size,则将所述第i个存储卷的存储空间容量大小扩容至MMAX_size;
若MT_size不大于MMAX_size,则将所述第i个存储卷的存储空间容量大小扩容至MT_size。
7.一种计算机设备,其特征在于,所述计算机设备包括基于Kubernetes的容器集群管理平台,所述容器集群管理平台通过有状态应用对象创建和管理存储卷,所述有状态应用对象包括扩容参数,所述扩容参数及取值包括用于指示开始扩容所述存储卷的存储空间容量时的触发条件,所述计算机设备包括:
处理单元,用于获取已创建的所述有状态应用对象并确定所述有状态应用对象创建的N个存储卷,N为大于或等于1的正整数;
检测单元,用于检测确定所述N个存储卷的存储空间容量,N为大于或等于1的正整数;
处理单元,还用于根据所述扩容参数及取值和所述N个存储卷的存储空间容量,对所述N个存储卷的存储空间容量分别进行管理,使得在所述N个存储卷中部分或者全部存储卷的已使用存储空间容量达到所述扩容参数的取值的情况下,所述容器集群管理平台对已使用存储空间容量达到所述扩容参数的取值的存储卷进行扩容操作。
8.如权利要求7所述的计算机设备,其特征在于,所述有状态应用对象的配置信息包括所述扩容参数。
9.如权利要求7所述的计算机设备,其特征在于,对应于所述有状态应用对象的自定义对象的配置信息中包括所述扩容参数。
10.如权利要求7至9中任一项所述的计算机设备,其特征在于,所述扩容参数包括:第一扩容参数,所述第一扩容参数用于指示容量阈值,所述处理单元,具体用于根据所述第一扩容参数和所述N个存储卷中的第i个存储卷的存储空间容量,确定所述第i个存储卷的已使用存储空间容量是否超过所述容量阈值,i=1,……,或者N;
若所述第i个存储卷的已使用存储空间容量超过所述容量阈值,则对所述第i个存储卷进行扩容操作;
若所述第i个存储卷的已使用存储空间容量未超过所述容量阈值,则不需要对所述第i个存储卷进行扩容操作。
11.如权利要求10所述的计算机设备,其特征在于,所述扩容参数还包括第二扩容参数,所述第二扩容参数用于指示扩容后的存储空间容量大小,所述处理单元,具体用于将所述第i个存储卷的存储空间容量扩容至所述第二扩容参数指示的大小。
12.如权利要求10所述的计算机设备,其特征在于,所述扩容参数还包括第二扩容参数和第三扩容参数,所述第二扩容参数用于指示存储空间容量的增长幅度,所述第三扩容参数用于指示存储空间容量的最大值MMAX_size,所述处理单元,具体用于根据所述第二扩容参数和所述第i个存储卷的存储空间容量大小,确定目标存储空间容量大小MT_size;
比较MT_size与MMAX_size;
若MT_size大于MMAX_size,则将所述第i个存储卷的存储空间容量大小扩容至MMAX_size;
若MT_size不大于MMAX_size,则将所述第i个存储卷的存储空间容量大小扩容至MT_size。
13.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质用于设备执行程序代码,所述程序代码包括用于执行如权利要求1至6中任一项所述的方法。
14.一种芯片,其特征在于,所述芯片包括处理器与数据接口,所述处理器通过所述数据接口读取存储器上存储的指令,以执行如权利要求1至6中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010121457.3A CN111414228B (zh) | 2020-02-26 | 2020-02-26 | 基于Kubernetes的管理存储空间的方法和相关装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010121457.3A CN111414228B (zh) | 2020-02-26 | 2020-02-26 | 基于Kubernetes的管理存储空间的方法和相关装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111414228A CN111414228A (zh) | 2020-07-14 |
CN111414228B true CN111414228B (zh) | 2024-04-09 |
Family
ID=71494205
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010121457.3A Active CN111414228B (zh) | 2020-02-26 | 2020-02-26 | 基于Kubernetes的管理存储空间的方法和相关装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111414228B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111949216A (zh) * | 2020-08-14 | 2020-11-17 | 苏州浪潮智能科技有限公司 | 云平台存储卷自动扩容的方法、系统、终端及存储介质 |
CN112328170B (zh) * | 2020-10-22 | 2022-05-24 | 杭州朗澈科技有限公司 | 一种云硬盘的扩容方法、装置、计算机设备和存储介质 |
CN112463030B (zh) * | 2020-11-06 | 2022-08-09 | 苏州浪潮智能科技有限公司 | 一种任务处理方法、装置和系统 |
CN112835524A (zh) * | 2021-02-04 | 2021-05-25 | 中国工商银行股份有限公司 | 存储资源配置方法、存储资源控制器及调度系统 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109614226A (zh) * | 2018-11-20 | 2019-04-12 | 武汉烽火信息集成技术有限公司 | 一种基于Kubernetes的有状态应用存储管理方法 |
-
2020
- 2020-02-26 CN CN202010121457.3A patent/CN111414228B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109614226A (zh) * | 2018-11-20 | 2019-04-12 | 武汉烽火信息集成技术有限公司 | 一种基于Kubernetes的有状态应用存储管理方法 |
Also Published As
Publication number | Publication date |
---|---|
CN111414228A (zh) | 2020-07-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111414228B (zh) | 基于Kubernetes的管理存储空间的方法和相关装置 | |
US11082206B2 (en) | Layout-independent cryptographic stamp of a distributed dataset | |
JP5425286B2 (ja) | データ処理システムのメモリ使用状況を追跡する方法 | |
US8904386B2 (en) | Running a plurality of instances of an application | |
CN101650660B (zh) | 从中央存储装置引导计算机系统 | |
CN111930473B (zh) | 在容器云上部署图像识别服务的方法与设备 | |
WO2017074854A1 (en) | Reducing resource consumption associated with storage and operation of containers | |
EP2834749A1 (en) | Consistent ring namespaces facilitating data storage and organization in network infrastructures | |
US10261898B1 (en) | Concurrent marking of location and shape changing objects | |
US20110093437A1 (en) | Method and system for generating a space-efficient snapshot or snapclone of logical disks | |
KR20200122994A (ko) | 키 값 첨부 | |
EP3739440A1 (en) | Distributed storage system, data processing method and storage node | |
US9430492B1 (en) | Efficient scavenging of data and metadata file system blocks | |
US10509767B2 (en) | Systems and methods for managing snapshots of a file system volume | |
US9798736B2 (en) | Dynamic discovery of storage resource topology | |
TW201220049A (en) | A string cache file for optimizing memory usage in a Java virtual machine | |
CN111386521B (zh) | 在数据库集群中重分布表数据 | |
WO2014182867A1 (en) | Techniques to recover files in a storage network | |
CN114730307A (zh) | 智能数据池 | |
US11080909B2 (en) | Image layer processing method and computing device | |
CN107102898B (zh) | 一种基于numa架构的内存管理、构建数据结构的方法及装置 | |
CN116361153A (zh) | 固件代码的测试方法、装置、电子设备、存储介质 | |
CN115951845A (zh) | 一种磁盘管理方法、装置、设备及存储介质 | |
CN104281486A (zh) | 一种虚拟机处理方法和装置 | |
CN108351797B (zh) | 用于控制与中间目录相关联的重解析行为的方法和系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
TA01 | Transfer of patent application right | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20220217 Address after: 550025 Huawei cloud data center, jiaoxinggong Road, Qianzhong Avenue, Gui'an New District, Guiyang City, Guizhou Province Applicant after: Huawei Cloud Computing Technologies Co.,Ltd. Address before: 518129 Bantian HUAWEI headquarters office building, Longgang District, Guangdong, Shenzhen Applicant before: HUAWEI TECHNOLOGIES Co.,Ltd. |
|
GR01 | Patent grant | ||
GR01 | Patent grant |