掌桥专利:专业的专利平台
掌桥专利
首页

容器集群资源管理方法、装置与设备

文献发布时间:2023-06-19 11:39:06


容器集群资源管理方法、装置与设备

技术领域

本发明涉及计算机技术领域,尤其涉及一种容器集群资源管理方法、装置与设备。

背景技术

容器技术的兴起,让资源池化技术被越来越多的认识与实现。原本部署应用需要感知到底层物理资源的位置、配置、环境以及各种元数据信息,而容器化后,部署应用时只需要关心所申请的资源额度,其余的都只需交给资源池进行统一调度。但是,当短时间内突然发生负载变化时,就会出现资源池中的资源不足或者大量资源空闲的情况,而无法实现对容器集群资源的快速伸缩。

发明内容

有鉴于此,本发明提供一种容器集群资源管理方法、装置与设备,用于实现对容器集群资源的快速伸缩。

为了实现上述目的,第一方面,本发明实施例提供一种容器集群资源管理方法,包括:

获取所述容器集群的第一负载和所述第一负载对应的原始资源池;所述原始资源池包括至少一个第一资源节点;

基于所述容器集群的负载变化,预测所述容器集群的第二负载;

根据所述第二负载,在所述容器集群中创建第二资源节点,基于所述第二资源节点生成弹性资源池;

基于所述弹性资源池,对所述容器集群的负载进行资源调度。

作为本发明实施例一种可选的实施方式,基于所述第二资源节点生成弹性资源池,包括:

基于所述第二负载的元数据,对所述第二资源节点进行初始化;

检测经过初始化的所述第二资源节点的运行状态,如果运行正常,确定所述弹性资源池生成成功。

作为本发明实施例一种可选的实施方式,在基于所述弹性资源池,对所述容器集群的负载进行资源调度之前,所述方法还包括:

将所述弹性资源池中的第二资源节点设置为非运行状态。

作为本发明实施例一种可选的实施方式,基于所述弹性资源池,对所述容器集群的负载进行资源调度,包括:

若检测到所述容器集群的实时负载大于所述第一负载,则根据所述容器集群的实时负载确定待启动的N个第二资源节点;其中,N为正整数;

启动所述N个第二资源节点。

作为本发明实施例一种可选的实施方式,所述方法还包括:

若检测到所述容器集群的实时负载相对于上次检测的负载降低,则根据所述容器集群的实时负载确定待回收的资源节点;

将确定的待回收的资源节点设置为非运行状态。

作为本发明实施例一种可选的实施方式,根据所述容器集群的实时负载确定待回收的资源节点包括:

若所述容器集群的实时负载大于或者等于所述第一负载,则根据所述容器集群的实时负载确定待回收的第二资源节点;

若所述容器集群的实时负载小于所述第一负载,则将所述弹性资源池中所有正在运行的第二资源节点确定为待回收的资源节点,并根据所述第一负载与所述容器集群的实时负载之差,确定待回收的第一资源节点。

作为本发明实施例一种可选的实施方式,所述基于所述容器集群的负载变化,预测所述容器集群的第二负载,包括:

根据计划任务和/或所述容器集群在预设历史时间段内的负载,预测目标时间段的负载峰值;

根据所述负载峰值相对于所述第一负载的负载变化,确定所述容器集群的第二负载。

第二方面,本发明实施例提供一种容器集群资源管理装置,包括:

获取模块,用于获取所述容器集群的第一负载和所述第一负载对应的原始资源池;所述原始资源池包括至少一个第一资源节点;

预测模块,用于基于所述容器集群的负载变化,预测所述容器集群的第二负载;

生成模块,用于根据所述第二负载,在所述容器集群中创建第二资源节点,基于所述第二资源节点生成弹性资源池;

调度模块,用于基于所述弹性资源池,对所述容器集群的负载进行资源调度。

作为本发明实施例一种可选的实施方式,所述生成模块包括:

初始化单元,用于基于所述第二负载的元数据,对所述第二资源节点进行初始化;

检测单元,用于检测经过初始化的所述第二资源节点的运行状态;

第一确定单元,用于如果运行正常,确定所述弹性资源池生成成功。

作为本发明实施例一种可选的实施方式,所述装置还包括:

设置模块,用于在基于所述弹性资源池,对所述容器集群的负载进行资源调度之前,将所述弹性资源池中的第二资源节点设置为非运行状态。

作为本发明实施例一种可选的实施方式,所述调度模块包括:

第二确定单元,用于当检测到所述容器集群的实时负载大于所述第一负载时,根据所述容器集群的实时负载确定待启动的N个第二资源节点;其中,N为正整数;

启动单元,用于启动所述N个第二资源节点。

作为本发明实施例一种可选的实施方式,所述装置还包括:

确定模块,用于当检测到所述容器集群的实时负载相对于上次检测的负载降低时,根据所述容器集群的实时负载确定待回收的资源节点;

所述设置模块,还用于将确定的待回收的资源节点设置为非运行状态。

作为本发明实施例一种可选的实施方式,所述确定模块,用于当所述容器集群的实时负载大于或者等于所述第一负载时,根据所述容器集群的实时负载确定待回收的第二资源节点;当所述容器集群的实时负载小于所述第一负载时,将所述弹性资源池中所有正在运行的第二资源节点确定为待回收的资源节点,并根据所述第一负载与所述容器集群的实时负载之差,确定待回收的第一资源节点。

作为本发明实施例一种可选的实施方式,所述预测模块包括:

预测单元,用于根据计划任务和/或所述容器集群在预设历史时间段内的负载,预测目标时间段的负载峰值;

第三确定单元,用于根据所述负载峰值相对于所述第一负载的负载变化,确定所述容器集群的第二负载。

第三方面,本发明实施例提供一种容器集群资源管理设备,包括:

存储器,用于存储计算机程序;

处理器,用于调用所述计算机程序以执行如第一方面或第一方面的任一实施方式所述的方法。

第四方面,本发明实施例提供一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现上述第一方面或第一方面的任一实施方式所述的方法。

本发明实施例提供的容器集群资源管理方法、装置与设备,能够通过预测的容器集群的第二负载创建弹性资源池,基于该弹性资源池,针对容器集群负载的变化实现容器集群资源的快速伸缩。另外,本发明实施例在弹性资源池创建完毕,将其中暂时不用的资源节点设置为非运行状态,可以避免资源浪费,降低成本。

附图说明

图1为本发明实施例提供的一种容器集群资源管理方法的流程示意图;

图2为本发明实施例提供的一种容器扩容的示意图;

图3为本发明实施例提供的另一种容器集群资源管理方法的流程示意图;

图4为本发明实施例提供的另一种容器扩容的示意图;

图5为本发明实施例提供的又一种容器扩容的示意图;

图6为本发明实施例提供的一种容器集群资源管理装置的结构示意图;

图7为本发明实施例提供的另一种容器集群资源管理装置的结构示意图;

图8为本发明实施例提供的容器集群管理设备的结构示意图。

具体实施方式

本发明实施例提供一种容器集群资源管理方法、装置与设备,以实现容器集群资源的快速伸缩并节省成本。

下面以具体地实施例对本发明的技术方案进行详细说明。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例不再赘述。

图1为本发明实施例提供的一种容器集群资源管理方法的流程示意图,可应用于容器集群的弹性伸缩管理节点。如图1所示,本实施例提供的方法可以包括如下步骤:

S110、获取所述容器集群的第一负载和所述第一负载对应的原始资源池。

具体的,容器集群包括原始资源池,原始资源池包括至少一个第一资源节点,每个第一资源节点上可以部署一个或多个容器,具体部署的容器数量根据节点的容量和容器的规格确定。例如:第一资源节点的容量为4C8G(即4个中央处理器(Central ProcessingUnit,CPU),8G内存),容器的规格为2C4G,则每个第一资源节点可部署两个容器;第一资源节点具体可以是虚拟机或其他可以部署容器的装置,本实施例中以虚拟机为例进行示例性说明。

本实施例中假设第一负载是原始资源池的最大容量所能支持的最大负载。当原始资源池中的每个第一资源节点的最大容量都是已知的情况下,可以根据所有第一资源节点的最大容量,确定原始资源池的最大容量,因此可确定第一负载。

容器集群中可以部署不同类型的应用,为了便于扩容时分配节点,容器集群中也可以部署同一类型的应用;其中,应用具体可以是网页web应用,也可以是应用程序(Application,APP)应用等,例如:一些电商企业,其主要需要web应用服务,本实施例对容器中具体部署的应用类型不做具体限定。

S120、基于所述容器集群的负载变化,预测所述容器集群的第二负载。

具体的,可以基于容器集群的负载变化,预测未来目标时间段的负载峰值,并根据该负载峰值和第一负载之差,预测出容器集群的第二负载。即第二负载为相对于第一负载增加的负载最大值。

S130、根据所述第二负载,在所述容器集群中创建第二资源节点,基于所述第二资源节点生成弹性资源池。

为了防止基于原始资源池无法承载目标时间段内的访问量,可以根据预测出的第二负载,在容器集群中创建出至少一个第二资源节点,并基于第二资源节点生成容量可调的弹性资源池,以便通过调整弹性资源池的可用容量来实现对容器集群的资源调度。

其中,第二资源节点与第一资源节点属于相同性质的节点,例如第一资源节点与第二资源节点都属于虚拟机。

S140、基于所述弹性资源池,对所述容器集群的负载进行资源调度。

容器集群的负载会不断变化,在建立弹性资源池后,可以利用弹性资源池的弹性伸缩功能以及容器集群负载的变化,来对弹性资源池的容量进行调整,以使得在满足容器集群负载资源调度的前提下,能够尽量节省资源,避免造成大量资源浪费。

示例性的,假设每个节点可部署两个容器,电商网站A原始负载所需的是8个容器,即启动了4个节点(如图2中资源池里原始负载对应的4个虚拟机,包括虚拟机1-虚拟机4);促销活动来临时,预估需要24个容器,则可以将8个容器调整为24个,进行容器扩容,即扩容16个容器,则需要弹出8个节点,即创建8个节点(如图2中资源池里弹性负载对应的8个虚拟机,包括虚拟机5-虚拟机12),基于这8个节点生成弹性资源池,并基于所述弹性资源池,对所述容器集群的负载进行资源调度。

本发明实施例提供的容器集群资源管理方法,能够通过预测的容器集群的第二负载创建弹性资源池,基于该弹性资源池,针对容器集群负载的变化实现容器集群资源的快速伸缩。

图3为本发明实施例提供的另一种容器集群资源管理方法的流程示意图,本实施例是上述图1所示实施例的一种更为具体的实现方式。如图3所示,本实施例提供的方法可以包括如下步骤:

S210、获取所述容器集群的第一负载和所述第一负载对应的原始资源池。

该步骤可参考上述图1所示实施例对应步骤S110的描述,在此不再赘述。

S220、基于所述容器集群的负载变化,预测所述容器集群的第二负载。

具体的,可以根据计划任务和/或所述容器集群在预设历史时间段内的负载,预测目标时间段的负载峰值;根据所述负载峰值相对于所述第一负载的负载变化,确定所述容器集群的第二负载。

其中,预设历史时间段与目标时间段具有相同的属性信息,例如计划任务相同、时间节点相同(包括节日相同、都是月初、年初等),因此预设历史时间段和目标时间段的负载峰值比较接近,可以根据预设历史时间段预测出目标时间段。

例如,对于某电商网站A,预计在双十一活动比目前的最大访问量将会高出三倍,即预测出双十一活动期限的负载峰值,根据该负载峰值与第一负载之差,确定出容器集群将会增加的负载量,即第二负载。又如,对于该电商网站A,相同的时间节点所产生的负载峰值往往是比较接近的,比如2017年11月11日与2018年11月11日属于同一时间节点,故所产生的负载峰值比较接近,可以根据2017年11月11日的负载峰值预测出2018年11月11日的负载峰值,然后根据该负载峰值与第一负载之差,确定出容器集群将会增加的负载量,即第二负载。

此外,虽然都属于同一时间节点,但是每次针对该时间节点所计划的任务可能是不同的,例如电商网站A在2018年11月11日将要比2017年11月11日设置的优惠活动更多,故为了提高预测负载峰值的准确性,可以将计划任务与预设历史时间段内的负载相结合,综合预测目标时间段的负载峰值。

S230、根据所述第二负载,在所述容器集群中创建第二资源节点,基于所述第二资源节点生成弹性资源池。

在容器集群中创建第二资源节点后,需要先验证该第二资源节点能否正常运行,若能正常运行(包括正常处于对外服务),才能确定第二资源节点创建成功,当所有第二资源节点都创建成功,才能确定弹性资源池生成成功。并且当需要使用第二资源节点时,为了能够提高第二资源节点执行任务的效率,可以预先对第二资源节点进行初始化,确保第二资源节点所需的元数据能够直接使用。

因此,基于所述第二资源节点生成弹性资源池的具体实现方式可以为:基于所述第二负载的元数据,对所述第二资源节点进行初始化;检测经过初始化的所述第二资源节点的运行状态,如果运行正常,确定所述弹性资源池生成成功。

其中,第二负载的元数据包括原始资源池中所部署的服务的镜像。例如,原始资源池的第一资源节点中部署有服务1,那么可以使用服务1的镜像对第二资源节点进行初始化操作,从而当需要第二资源节点执行服务1对应的请求时,可以直接调用服务1执行该请求。

S240、将所述弹性资源池中的第二资源节点设置为非运行状态。

由于第二负载是预测的未来目标时间段内将会增加的负载,所以目前无需使用弹性资源池来分担原始资源池的负载,若将弹性资源池中的第二资源节点都处于运行状态,则会造成资源浪费的现象。为了节省资源,可以先将弹性资源池中的所有第二资源节点设置为非运行状态,当需要使用第二资源节点时,再启动第二资源节点,使得第二资源节点恢复为运行状态。

其中,非运行状态包括但不限于停机状态、电源管理休眠状态等。

S250、基于所述弹性资源池,对所述容器集群的负载进行资源调度。

在将弹性资源池中的第二资源节点都设置为非运行状态后,可以实时检测容器集群的实时负载,若检测到所述容器集群的实时负载大于所述第一负载,则说明原始资源池的负载已经饱和,需要弹性资源池分担多余的负载,故可以根据所述容器集群的实时负载确定待启动的N个第二资源节点,并启动所述N个第二资源节点。其中,N为正整数。

根据所述容器集群的实时负载确定待启动的N个第二资源节点的具体实现方式可以为:计算所述容器集群的实时负载与第一负载之差,根据第二资源节点的最大负载,计算哪几个第二资源节点的最大负载之和大于该负载之差,且第二资源节点数据量最小,最后将满足该需求的第二资源节点确定为待启动的N个第二资源节点进行启动。

由于弹性资源池中每个第二资源节点预先根据第二负载的元数据进行了初始化,所以可以直接启动N个第二资源节点执行相应的服务,而无需再根据第二负载的元数据进行初始化操作,进而提高了启动第二资源节点的效率。

在启动N个第二资源节点后,继续检测容器集群的实时负载,若检测到所述容器集群的实时负载相对于上次检测的负载降低,则可能会存在部分资源节点空闲的情况,为了避免引资源节点空间而造成资源浪费,可以根据所述容器集群的实时负载确定待回收的资源节点,将确定的待回收的资源节点设置为非运行状态。

其中,待回收的资源节点可以包括第二资源节点,也可以包括第一资源节点。因此,根据所述容器集群的实时负载确定待回收的资源节点的具体实现方式可以包括以下两种:

(A)若所述容器集群的实时负载大于或者等于所述第一负载,则根据所述容器集群的实时负载确定待回收的第二资源节点;若所述容器集群的实时负载小于所述第一负载,则将所述弹性资源池中所有正在运行的第二资源节点确定为待回收的资源节点,并根据所述第一负载与所述容器集群的实时负载之差,确定待回收的第一资源节点。

也就是说,当待回收的资源节点包括第一资源节点时,可以根据容器集群的实时负载优先回收第二资源节点,当第二资源节点均被回收,依然存在资源浪费的情况时,可以再回收部分第一资源节点。

(B)根据所述容器集群的实时负载确定待回收的第二资源节点。

一般情况下,在部署原始资源池时,技术人员是根据容器集群的整体性能和成本等信息确定的第一资源节点的数量,故在整个原始资源池处于运行状态时,容器集群的整体性能和成本等在一般时间段内都是最佳的,若将第一资源节点也设置成非运行状态,则后续可能很快就需要启动该第一资源节点,而重新启动第一资源节点的效率还是比较慢的。因此,为了满足容器集群的长期整体效果,可以仅将第二资源节点确定为待回收的资源节点。

本发明实施例提供的容器集群资源管理方法,能够通过预测的容器集群的第二负载创建弹性资源池,基于该弹性资源池,针对容器集群负载的变化实现容器集群资源的快速伸缩。另外,本发明实施例在弹性资源池创建完毕,将其中暂时不用的资源节点设置为非运行状态,可以避免资源浪费,降低成本。

示例性的,当基于图2所示的实施例,生成弹性资源池后,由于弹性资源池的第二负载是预先估测出的,目前服务器集群的实时负载可能小于第一负载,无需使用弹性资源池中的第二资源节点,为了节省资源并且便于后续快速启动并使用第二资源节点,如图4所示,可以先将弹性资源池中的所有第二资源节点进行回收(即设置为非运行状态),即将虚拟机5-虚拟机12回收;当检测到弹性资源池的实时负载大于第一负载时,可以根据实时负载快速拉起需要的第二资源节点,如图5所示,容器集群突增负载,实时负载所需的是18个容器,当前启动了8个容器,需要再启动10个容器,即需要启动5个资源节点,弹性伸缩管理节点可以根据需求快速启动相应数量的资源节点,即5个虚拟机,包括虚拟机5、虚拟机6、虚拟机7、虚拟机9和虚拟机10。

基于同一发明构思,作为对上述方法的实现,本发明实施例提供了一种容器集群资源管理装置,该装置实施例与前述方法实施例对应,为便于阅读,本装置实施例不再对前述方法实施例中的细节内容进行逐一赘述,但应当明确,本实施例中的装置能够对应实现前述方法实施例中的全部内容。

图6为本发明实施例提供的容器集群资源管理装置的结构示意图,如图6所示,本实施例提供的装置包括:

获取模块310,用于获取所述容器集群的第一负载和所述第一负载对应的原始资源池;所述原始资源池包括至少一个第一资源节点;

预测模块320,用于基于所述容器集群的负载变化,预测所述容器集群的第二负载;

生成模块330,用于根据所述第二负载,在所述容器集群中创建第二资源节点,基于所述第二资源节点生成弹性资源池;

调度模块340,用于基于所述弹性资源池,对所述容器集群的负载进行资源调度。

作为本发明实施例一种可选的实施方式,如图7所示,所述生成模块330包括:

初始化单元331,用于基于所述第二负载的元数据,对所述第二资源节点进行初始化;

检测单元332,用于检测经过初始化的所述第二资源节点的运行状态;

第一确定单元333,用于如果运行正常,确定所述弹性资源池生成成功。

作为本发明实施例一种可选的实施方式,如图7所示,所述装置还包括:

设置模块350,用于在基于所述弹性资源池,对所述容器集群的负载进行资源调度之前,将所述弹性资源池中的第二资源节点设置为非运行状态。

作为本发明实施例一种可选的实施方式,如图7所示,所述调度模块340包括:

第二确定单元341,用于当检测到所述容器集群的实时负载大于所述第一负载时,根据所述容器集群的实时负载确定待启动的N个第二资源节点;其中,N为正整数;

启动单元342,用于启动所述N个第二资源节点。

作为本发明实施例一种可选的实施方式,如图7所示,所述装置还包括:

确定模块360,用于当检测到所述容器集群的实时负载相对于上次检测的负载降低时,根据所述容器集群的实时负载确定待回收的资源节点;

所述设置模块350,还用于将确定的待回收的资源节点设置为非运行状态。

作为本发明实施例一种可选的实施方式,所述确定模块360,用于当所述容器集群的实时负载大于或者等于所述第一负载时,根据所述容器集群的实时负载确定待回收的第二资源节点;当所述容器集群的实时负载小于所述第一负载时,将所述弹性资源池中所有正在运行的第二资源节点确定为待回收的资源节点,并根据所述第一负载与所述容器集群的实时负载之差,确定待回收的第一资源节点。

作为本发明实施例一种可选的实施方式,所述确定模块360具体还用于根据所述容器集群的实时负载确定待回收的第二资源节点。

作为本发明实施例一种可选的实施方式,如图7所示,所述预测模块320包括:

预测单元321,用于根据计划任务和/或所述容器集群在预设历史时间段内的负载,预测目标时间段的负载峰值;

第三确定单元322,用于根据所述负载峰值相对于所述第一负载的负载变化,确定所述容器集群的第二负载。

本发明实施例提供的容器集群资源管理装置,能够通过预测的容器集群的第二负载创建弹性资源池,基于该弹性资源池,针对容器集群负载的变化实现容器集群资源的快速伸缩。另外,本发明实施例在弹性资源池创建完毕,将其中暂时不用的资源节点设置为非运行状态,可以避免资源浪费,降低成本。

本实施例提供的装置可以执行上述方法实施例,其实现原理与技术效果类似,此处不再赘述。

基于同一发明构思,本发明实施例还提供了一种容器集群资源管理设备。图8为本发明实施例提供的容器集群资源管理设备的结构示意图,如图8所示,本实施例提供的容器集群资源管理设备包括:存储器410,用于存储计算机程序;处理器420,用于调用所述计算机程序以执行如上述方法实施例所述的方法。

本实施例提供的容器集群资源管理设备可以执行上述方法实施例,其实现原理与技术效果类似,此处不再赘述。

本发明实施例还提供一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现上述方法实施例所述的方法。

本领域技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质上实施的计算机程序产品的形式。

处理器可以是中央处理单元(Central Processing Unit,CPU),还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。

存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。存储器是计算机可读介质的示例。

计算机可读介质包括永久性和非永久性、可移动和非可移动存储介质。存储介质可以由任何方法或技术来实现信息存储,信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。

最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。

相关技术
  • 集群资源管理方法、装置及容器集群管理系统
  • 容器集群资源管理方法、装置与设备
技术分类

06120113008431