一种混合部署下获取资源的方法及装置与流程

文档序号:18163075发布日期:2019-07-13 09:25阅读:179来源:国知局
一种混合部署下获取资源的方法及装置与流程

本发明涉及通信领域,尤其是涉及一种混合部署下获取资源的方法及装置。



背景技术:

随着互联网的快速发展,用户对网络服务的需求也在发生着变化,以一家网站服务运营商为例,最初只是以提供新闻类的服务为主,随着网络的快速发展及用户需求的变化,逐步的还会提供视频类业务、游戏类业务等。

由于业务的增加,必然导致服务提供商需要增加新的物理机或虚拟机去承载这些新增的业务。进一步的,因为新业务的不断增加,提供的服务越来越多样、服务更新及撤换的周期也越来越短,便造成了服务运营商对物理机或虚拟机的资源管理越来越复杂。为了有效的解决这一问题,现在业界普遍的做法是通过使用kubernetes来管理服务运营商所使用的所有物理机或虚拟机的资源。

尽管,kubernetes是一个开源的容器集群管理系统,可以部署在虚拟机、物理机中,能方便的对虚拟机、物理机中的应用(业界也称之为业务或容器)进行管理。换言之,kubernetes通过一次性获取虚拟机、物理机中的可用资源,并将这些资源统计在数据中,然后使用特定组件对虚拟机、物理机中的可用资源进行分配和控制。

但,就目前情况而言(包括官方支持情况来看),都是推荐将kubernetes安装在干净的虚拟机或物理机的系统中,且一般不允许系统中有旧应用。这是因为在将kubernetes部署在已安装了旧应用的虚拟机或物理机的系统中时,由于kubernetes需要主控整体资源的分配,而旧应用并没有运行在kubernetes上,所以就会造成虚拟机或物理机中资源的混乱和竞争。

而对于服务提供商而言,随着新业务增加、旧业务的减少,承载这些业务的物理机或虚拟机的资源的使用情况也必然发生变化,这就使得服务提供商希望在现有物理机或虚拟机中的资源能够满足新增业务的需求时,为了节约成本并不会立刻更换新的,但kubernetes在诞生之初便已被决定了,它只有安装在没有安装任何操作系统(以下简称为干净的系统)的虚拟机或物理机中才能确保整个系统的正常运行。

这就出现了一个矛盾,一方面,服务提供商希望能在原有物理机或虚拟机资源够用的情况下,将新增的业务运行在其上,并且能通过kubernetes来对物理机或虚拟机中所有的新、旧应用进行管理,以提高为用户服务的质量;另一方面,由于kubernetes只有安装在干净的虚拟机或物理机中才能确保整个系统的正常运行,这将让服务提供商的成本提高。

鉴于此,如何让kubernetes能与旧应用共存于同一物理机或虚拟机中,并对其中的新、旧应用进行合理有序的管理,便成为了一个亟待解决的问题。



技术实现要素:

本发明提供一种混合部署下获取资源的方法及装置,用于解决同一物理机或虚拟机中新、旧应用存在资源混乱及竞争的技术问题。

第一方面,为解决上述技术问题,本发明实施例提供的一种混合部署下获取资源的方法的技术方案如下:

在具有预定标识的节点上启动代理进程容器;其中,所述预定标识用于标记安装有原应用的节点,所述节点为虚拟机或物理机;

通过所述代理进程容器,统计所述节点中原应用的资源使用量,以获得第一数据;

基于所述第一数据,采用预设的预测模型对未来的指定时间范围内,所述节点中所述原应用的资源使用量进行预测,以获得预测结果;其中,所述预测模型是基于历史数据获得的,所述历史数据表征所述原应用在指定历史时间范围内的资源使用情况;

根据所述预测结果,在所述指定时间范围内调整所述节点上除所述原应用之外的其它应用的资源使用状态,使所述节点的资源使用量保持在预定范围内。

可选的,在获得所述第一数据之前,进一步包括:设置所述预测模型,具体包括:

获得历史数据,并基于所述历史数据绘制曲线图,所述曲线图表示历史数据基于时间轴的变化情况;

基于所述曲线图中记录的波峰数据和波谷数据,建立所述预测模型;其中,所述波峰数据为在所述曲线图中以峰值为起点向下获取的第一预设比例范围内的数据,所述波谷数据为在所述曲线图中以谷值为起点向上获取的第二预设比例范围内的数据。

可选的,在获得所述预测结果之后,包括:

基于所述预测结果与实际结果进行比较,获得偏差数据,其中,所述实际结果表征所述原应用在所述指定时间范围内实际的资源使用量;

根据所述偏差数据,调整所述预测模型中对应的波峰数据和波谷数据。

可选的,还包括:

若所述实际结果低于其对应的预测结果,则在确定所述其他应用未申请使用资源时,按照设定增量更新所述第一数据;其中,更新后的第一数据用于在下一次对所述原应用的资源使用量进行预测。

可选的,还包括:

若所述实际结果高于其对应的预测结果,根据所述第一数据关闭部分其它应用,以释放部分资源;其中,释放出的部分资源的资源量与所述第一数据表征的资源量之和,能够满足所述实际结果的需求。

可选的,若所述实际结果高于其对应的预测结果时,还包括:

当所述原应用与所述其它应用同时申请所述节点中的资源时,基于预设优先级为所述原应用优先分配所述节点的资源。

第二方面,本发明实施例提供了一种用于混合部署下获取资源的装置,包括:

启动单元,用于在具有预定标识的节点上启动代理进程容器;其中,所述预定标识用于标记安装有原应用的节点,所述节点为虚拟机或物理机;

统计单元,用于通过所述代理进程容器,统计所述节点中原应用的资源使用量,以获得第一数据;

预测单元,用于基于所述第一数据,采用预设的预测模型对未来的指定时间范围内,所述节点中所述原应用的资源使用量进行预测,以获得预测结果;其中,所述预测模型是基于历史数据获得的,所述历史数据表征所述原应用在指定历史时间范围内的资源使用情况;

调整单元,用于根据所述预测结果,在所述指定时间范围内调整所述节点上除所述原应用之外的其它应用的资源使用状态,使所述节点的资源使用量保持在预定范围内。

可选的,在获得所述第一数据之前,所述统计单元还用于:

获得历史数据,并基于所述历史数据绘制曲线图,所述曲线图表示历史数据基于时间轴的变化情况;

基于所述曲线图中记录的波峰数据和波谷数据,建立所述预测模型;其中,所述波峰数据为在所述曲线图中以峰值为起点向下获取的第一预设比例范围内的数据,所述波谷数据为在所述曲线图中以谷值为起点向上获取的第二预设比例范围内的数据。

可选的,在获得所述预测结果之后,所述预测单元还用于:

基于所述预测结果与实际结果进行比较,获得偏差数据,其中,所述实际结果表征所述原应用在所述指定时间范围内实际的资源使用量;

根据所述偏差数据,调整所述预测模型中对应的波峰数据和波谷数据。

可选的,所述预测单元还用于:

若所述实际结果低于其对应的预测结果,则在确定所述其他应用未申请使用资源时,按照设定增量更新所述第一数据;其中,更新后的第一数据用于在下一次对所述原应用的资源使用量进行预测。

可选的,所述预测单元还用于:

若所述实际结果高于其对应的预测结果,根据所述第一数据关闭部分其它应用,以释放部分资源;其中,释放出的部分资源的资源量与所述第一数据表征的资源量之和,能够满足所述实际结果的需求。

可选的,若所述实际结果高于其对应的预测结果时,所述预测单元还用于:

当所述原应用与所述其它应用同时申请所述节点中的资源时,基于预设优先级为所述原应用优先分配所述节点的资源。

第三方面,本发明实施例还提供一种用于混合部署下获取资源的装置,包括:

至少一个处理器,以及

与所述至少一个处理器连接的存储器;

其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述至少一个处理器通过执行所述存储器存储的指令,执行如上述第一方面所述的方法。

第四方面,本发明实施例还提供一种计算机可读存储介质,包括:

所述计算机可读存储介质存储有计算机指令,当所述计算机指令在计算机上运行时,使得计算机执行如上述第一方面所述的方法。

通过本发明实施例的上述一个或多个实施例中的技术方案,本发明实施例至少具有如下技术效果:

在本申请提供的实施例中,通过预定标识识别安装有原应用的节点,进而在该节点上启动代理容器来对该节点中原应用的资源使用情况进行统计,获得第一数据;然后基于第一数据采用预设的预测模型对未来的指定时间范围内,节点中原应用的资源使用量进行预测,获得第一预测结果;最后据第一预测结果,在指定时间范围内调整节点的资源使用状态,使节点的资源使用量保持在预定范围内。从而能够有效的解决同一物理机或虚拟机中新、旧应用存在资源混乱及竞争的技术问题,实现新、进而旧应用之间资源的共享,及动态分配的技术效果。

进一步的,由于上述获取资源的方法,只是通过预测结果改变节点中运行在kubernetes之上的其它应用使用资源的数量,所以并没有改变kubernetes的整体逻辑,使得上述方法在kubernetes中的使用并不会因为kubernetes的发展而不能被使用。故上述方法能被持续的应用于kubernetes中。

进一步的,由于通过上述方法,既不会改变kubernetes的整体逻辑,又能让满足原应用对所在节点资源的使用,所以能让原应用与其它应用共存于同一节点中。从而让服务提供商能够根据实际情况,在已存在原应用的节点上使用kubernetes来增加新的应用,而不需为新的应用增加新的节点,进而能有效的降低硬件成本。

附图说明

图1为本发明实施例提供的一种混合部署下获取资源的流程图;

图2为本发明实施例提供的示例性的曲线图;

图3为本发明实施例提供的一种混合部署下获取资源的结构示意图。

具体实施方式

本发明提供一种混合部署下获取资源的方法及装置,用于解决同一物理机或虚拟机中新、旧应用存在资源混乱及竞争的技术问题。

本申请实施例中的技术方案为解决上述的技术问题,总体思路如下:

提供一种混合部署下获取资源的方法,包括:在具有预定标识的节点上启动代理进程容器;其中,所述预定标识用于标记安装有原应用的节点,所述节点为虚拟机或物理机;通过所述代理进程容器,统计所述节点中原应用的资源使用量,以获得第一数据;基于所述第一数据采用预设的预测模型对未来的指定时间范围内,所述节点中所述原应用的资源使用量进行预测,以获得第一预测结果;其中,所述预测模型是基于历史数据获得的,所述历史数据表征所述原应用在指定历史时间范围内的资源使用情况;根据所述第一预测结果,在所述指定时间范围内调整所述节点的资源使用状态,使所述节点的资源使用量保持在预定范围内。

由于在上述技术方案中,是通过预定标识识别安装有原应用的节点,进而在该节点上启动代理容器来对该节点中原应用的资源使用情况进行统计,获得第一数据;然后基于第一数据采用预设的预测模型对未来的指定时间范围内,节点中原应用的资源使用量进行预测,获得第一预测结果;最后据第一预测结果,在指定时间范围内调整节点的资源使用状态,使节点的资源使用量保持在预定范围内。从而能够有效的解决同一物理机或虚拟机中新、旧应用存在资源混乱及竞争的技术问题,实现新、进而旧应用之间资源的共享,及动态分配的技术效果。

不要理解的是,在本申请提供的实施例中,原应用就是指已经

为了更好的理解上述技术方案,下面通过附图以及具体实施例对本发明技术方案做详细的说明,应当理解本发明实施例以及实施例中的具体特征是对本发明技术方案的详细的说明,而不是对本发明技术方案的限定,在不冲突的情况下,本发明实施例以及实施例中的技术特征可以相互组合。

请参见图1,本发明实施例提供一种混合部署下获取资源的方法,该方法的处理过程如下。

步骤101:在具有预定标识的节点上启动代理进程容器;其中,预定标识用于标记安装有原应用的节点,节点为虚拟机或物理机。

在kubernetes启动代理进程容器收集各原应用的资源使用量前,首先,需要先为各原应用配置合适优先级,以便优先为原应用分配资源;其次,需要将预定标识标记到安装有原应用的节点上,以便识别安装有原应用的节点,让该节点案子本申请实施例中提供的方法进行资源管理;最后,需要更改每个节点的资源接口,以便通过该资源接口将该节点中原应用的资源使用情况定时的上报给kubernetes。

在做好上述准备工作之后,先基于预设标识用代理进程容器daemonset,将特定的pod插入到安装有原应用的节点中,再启动代理进程容器daemonset。

需要理解的是,daemonset能够让所有(或者一些特定)的节点运行同一个pod。当节点加入到kubernetes集群中,pod会被daemonset调度到该节点上运行;当节点从kubernetes集群中被移除,被daemonset调度的pod也会相应的被移除;如果删除daemonset,则所有跟这个daemonset相关的pod都会被删除。在kubernetes中,pod是最基础的调度单位。在本申请提供的实施例中,就是让特定的节点(即具有预定标识的节点)能够通过代理进程容器daemonset运行同一个pod,来主动收集具有预定标识的节点中原应用的资源使用情况。

在启动代理进程容器daemonset之后,便可收集各原应用使用所在节点的资源的情况,并定时将该情况通过更新的方式上报给kubernetes,具体的请参见步骤102。

步骤102:通过代理进程容器,统计节点中原应用的资源使用量,以获得第一数据。

代理进程容器daemonset在获得某一节点中原应用的第一数据之后,便可通过该节点的资源接口,将第一数据更新到kubernetes。

kubernetes根据接收到的第一数据对该节点中的原应用,在未来的指定时间范围内的资源使用情况进行预测,具体请见步骤103。

步骤103:基于第一数据,采用预设的预测模型对未来的指定时间范围内,节点中原应用的资源使用量进行预测,以获得预测结果;其中,预测模型是基于历史数据获得的,历史数据表征原应用在指定历史时间范围内的资源使用情况。

在获得第一数据之前,kubernetes需要先设置预设的预测模型,具体是通过以下方式设置的:首先,kubernetes获得节点中原应用资源使用量的历史数据,并基于历史数据绘制曲线图,该曲线图表示历史数据基于时间轴的变化情况;其次,kubernetes基于曲线图中记录的波峰数据和波谷数据,建立预测模型;其中,波峰数据为在曲线图中以峰值为起点向下获取的第一预设比例范围内的数据,波谷数据为在曲线图中以谷值为起点向上获取的第二预设比例范围内的数据。

举例来说,假设以表1中数据作为历史数据,设置预设的预测模型,具体为:

首先,kubernetes获取如表1中所示的历史数据,并基于该历史数据绘制出如图2中所示的曲线图。

然后,kubernetes从图2所示的曲线图中获得波峰数据1、波峰数据2、波谷数据1,其中,波峰数据1为图2中虚线指示的部分数据123206、123215、123223、123216、123200,波峰数据2为虚线指示的部分数据123149、123139、123125,波谷数据1为123012、122900、123009,根据这些波峰数据及波谷数据建预设的预测模型。

表1

需要理解的是,表1中的数据只是作为示例性的数据,简单的说明预设的预测模型是如何设置的,及对波峰数据和波谷数据做示例性的直观展示,以避免波峰数据和波谷数据理解为一个单一的峰值。在实际的应用过程中,远不止时间13:25到13:52之间的这一点点数据,有可能是一个月的数据、一年的数据,从这些海量数据中找出海量的波峰数据和波谷数据,根据这海量的波峰数据和波谷数据建立预设的预测模型。

之后,kubernetes便可根据特定的pod上报的第一数据,采用预设的预测模型对未来的指定时间范围内,节点中原应用的资源使用量进行预测,以获得预测结果;其中,预测模型是基于历史数据获得的,历史数据表征原应用在指定历史时间范围内的资源使用情况。

例如,依然以前面的例子为例,假设在第二天的13:35需要预测未来的13:40到13:52之间原应用的资源使用量,则可以通过将获得第一数据(即在13:25到13:35之间的数据)输入预设的预测模型,发现在历史数据中的13:25到13:35这个时间段的资源占用情况,与第一数据中资源的占用情况相似度非常高,例如达到了80%的相似度,那么便可根据历史数据中13:40到13:52之间的波峰数据2和波谷数据1预测出,在未来的13:40-13:42将出现波谷数据1,在未来的13:50-13:52将出现波峰数据2,这便是用预设的预测模型预测得的预测结果。

在获得预测结果之后,还可以先让预测结果与实际结果进行比较,获得偏差数据,其中,实际结果表征原应用在指定时间范围内实际的资源使用量;再根据偏差数据,调整预测模型中对应的波峰数据和波谷数据。

例如,依然以前面的例子为例,假设实际结果为在13:42原应用资源占用量为123060,预测结果123009,将预测结果与实际结果作比较,便可获得偏差数据为51,然后根据偏差数据将预测模型中波谷数据1调整为123063、122900、123060。

接下来,便可根据预测结果,调整除原应用之外的其它应用的资源使用状态了,具体的,请见步骤104。

步骤104:根据预测结果,在指定时间范围内调整节点上除原应用之外的其它应用的资源使用状态,使节点的资源使用量保持在预定范围内。

例如,依然以前面的例子为例,假设节点总的可用资源为639800,节点的总资源使用量保持在预设范围30%-80%时,该节点的资源使用状态处于健康状态。

通过预设的预测模型,预测出在未来的13:50-13:52将出现波峰数据2为123149、123139、123125,那么便可计算出其它应用在未来的13:50-13:52之间可以使用的资源量最高为639800×80%-123139=388701,最少使用量为639800×30%-123139=68801。所以,其它应用在未来的13:50-13:52根据可以使用的资源量范围68801到388701之间进行自由调节,便可使节点的资源使用量保持在预设范围内。

在根据预测结果,调整除原应用之外的其它应用的资源使用状态之后,还可能出现以下几种情况,具体的为:

第一种情况,若实际结果低于其对应的预测结果,则在确定其他应用未申请使用资源时,按照设定增量更新第一数据;其中,更新后的第一数据用于在下一次对原应用的资源使用量进行预测。

第二种情况,若实际结果高于其对应的预测结果,根据第一数据关闭部分其它应用,以释放部分资源;其中,释放出的部分资源的资源量与所述第一数据表征的资源量之和,能够满足实际结果的需求。

若实际结果高于其对应的预测结果时,出现原应用与其它应用同时申请所述节点中的资源,可基于预设优先级为原应用优先分配节点的资源。

基于同一发明构思,本发明一实施例中提供一种用于混合部署下获取资源的装置,该装置的获取资源的方法的具体实施方式可参见方法实施例部分的描述,重复之处不再赘述,请参见图3,该装置包括:

启动单元301,用于在具有预定标识的节点上启动代理进程容器;其中,所述预定标识用于标记安装有原应用的节点,所述节点为虚拟机或物理机;

统计单元302,用于通过所述代理进程容器,统计所述节点中原应用的资源使用量,以获得第一数据;

预测单元303,用于基于所述第一数据,采用预设的预测模型对未来的指定时间范围内,所述节点中所述原应用的资源使用量进行预测,以获得预测结果;其中,所述预测模型是基于历史数据获得的,所述历史数据表征所述原应用在指定历史时间范围内的资源使用情况;

调整单元304,用于根据所述预测结果,在所述指定时间范围内调整所述节点上除所述原应用之外的其它应用的资源使用状态,使所述节点的资源使用量保持在预定范围内。

可选的,在获得所述第一数据之前,所述统计单元302还用于:

获得历史数据,并基于所述历史数据绘制曲线图,所述曲线图表示历史数据基于时间轴的变化情况;

基于所述曲线图中记录的波峰数据和波谷数据,建立所述预测模型;其中,所述波峰数据为在所述曲线图中以峰值为起点向下获取的第一预设比例范围内的数据,所述波谷数据为在所述曲线图中以谷值为起点向上获取的第二预设比例范围内的数据。

可选的,在获得所述预测结果之后,所述预测单元303还用于:

基于所述预测结果与实际结果进行比较,获得偏差数据,其中,所述实际结果表征所述原应用在所述指定时间范围内实际的资源使用量;

根据所述偏差数据,调整所述预测模型中对应的波峰数据和波谷数据。

可选的,所述预测单元303还用于:

若所述实际结果低于其对应的预测结果,则在确定所述其他应用未申请使用资源时,按照设定增量更新所述第一数据;其中,更新后的第一数据用于在下一次对所述原应用的资源使用量进行预测。

可选的,所述预测单元303还用于:

若所述实际结果高于其对应的预测结果,根据所述第一数据关闭部分其它应用,以释放部分资源;其中,释放出的部分资源的资源量与所述第一数据表征的资源量之和,能够满足所述实际结果的需求。

可选的,若所述实际结果高于其对应的预测结果时,所述预测单元303还用于:

当所述原应用与所述其它应用同时申请所述节点中的资源时,基于预设优先级为所述原应用优先分配所述节点的资源。

基于同一发明构思,本发明实施例中提供了一种用于混合部署下获取资源的设备,包括:至少一个处理器,以及

与所述至少一个处理器连接的存储器;

其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述至少一个处理器通过执行所述存储器存储的指令,执行如上所述的资源获取方法。

基于同一发明构思,本发明实施例还提一种计算机可读存储介质,包括:

所述计算机可读存储介质存储有计算机指令,当所述计算机指令在计算机上运行时,使得计算机执行如上所述的资源获取方法。

在本申请提供的实施例中,通过预定标识识别安装有原应用的节点,进而在该节点上启动代理容器来对该节点中原应用的资源使用情况进行统计,获得第一数据;然后基于第一数据采用预设的预测模型对未来的指定时间范围内,节点中原应用的资源使用量进行预测,获得第一预测结果;最后据第一预测结果,在指定时间范围内调整节点的资源使用状态,使节点的资源使用量保持在预定范围内。从而能够有效的解决同一物理机或虚拟机中新、旧应用存在资源混乱及竞争的技术问题,实现新、进而旧应用之间资源的共享,及动态分配的技术效果。

进一步的,由于上述获取资源的方法,只是通过预测结果改变节点中运行在kubernetes之上的其它应用使用资源的数量,所以并没有改变kubernetes的整体逻辑,使得上述方法在kubernetes中的使用并不会因为kubernetes的发展而不能被使用。故上述方法能被持续的应用于kubernetes中。

进一步的,由于通过上述方法,既不会改变kubernetes的整体逻辑,又能让满足原应用对所在节点资源的使用,所以能让原应用与其它应用共存于同一节点中。从而让服务提供商能够根据实际情况,在已存在原应用的节点上使用kubernetes来增加新的应用,而不需为新的应用增加新的节点,进而能有效的降低硬件成本。

本领域内的技术人员应明白,本发明实施例可提供为方法、系统、或计算机程序产品。因此,本发明实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。

本发明实施例是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

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

显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

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