容器集群管理系统的动态调度方法和装置与流程

文档序号:17585989发布日期:2019-05-03 21:19阅读:166来源:国知局
容器集群管理系统的动态调度方法和装置与流程

本申请涉及云计算技术领域,尤其涉及一种容器集群管理系统的动态调度方法和装置。



背景技术:

docker虚拟化的实现是基于linux内核的cgroup和namespace技术,省去了hypervisor层的开销,因此它是轻量级的虚拟化技术。docker可以更加简单地创建和管理容器,因此可以使用docker容器技术对应用进行封装。当容器达到一定规模后,可组成容器集群,为了合理有效地使用集群的资源,满足差异化的数据服务和多样的任务的资源请求,需要一个集群资源调度系统对容器集群进行管理调度。kubernetes凭借其强大的容器编排能力和轻量开源的特点在众多容器集群调度系统中应用最广泛。kubernetes容器集群管理系统的主要功能包括:使用docker对应用程序进行打包、实例化及运行;以集群的方式运行及管理跨主机的容器;解决位于不同主机之间所运行的容器之间的通信问题等。

然而kubernetes的资源调度策略和系统自带的调度算法都较为单一,无法适用于复杂的应用场景。现有的调度策略只考虑了容器在创建时候的调度策略,当容器运行起来,由于容器中的应用所占用的资源随着时间变化,就会造成节点负载不均衡,集群不稳定。



技术实现要素:

本申请的实施例提供一种容器集群管理系统的动态调度方法和装置,用于解决现有技术中调度策略单一以及调度时机不易把控的技术问题。

为达到解决上述技术问题的目的,本申请的实施例采用如下技术方案:

第一方面,本申请的实施例提供了一种容器集群管理系统的动态调度方法,所述容器集群中包括多个节点,所述节点为计算机设备,每个所述节点包括多个容器,所述容器为运行在所述计算机设备上的应用程序,该方法包括:

获取容器集群中所有node的参数信息以及pod的参数信息,所述参数信息包括cpu使用率、内存使用率、镜像网络存储传输速率和持久化网络存储传输速率中的至少一项;根据所述参数信息分别计算所有的node得分以及pod得分,所述node得分用于表示所述node的负载状况,所述pod得分用于表示所述pod的计算资源需求状况;分别构建所述node得分与获取所述参数信息的时间值的对应关系作为用于训练第一预测模型的第一样本数据以及构建所述pod得分与获取所述参数信息的时间值的对应关系作为用于训练第二预测模型的第二样本数据;通过所述第一样本数据训练得到第一预测模型以及通过所述第二样本数据训练得到第二预测模型;通过所述第一预测模型预测未来时段内的node得分以及通过所述第二预测模型预测未来时段内的pod得分;若node的node得分小于预设门限值,则将所述node下pod得分低于第一阈值的pod迁移到node得分高于第二阈值的node下。

第二方面,本申请的实施例提供了一种容器集群管理系统的动态调度装置,所述容器集群中包括多个节点,所述节点为计算机设备,每个所述节点包括多个容器,所述容器为运行在所述计算机设备上的应用程序,其特征在于,应用于容器集群中容器运行期间,该装置包括:

获取单元,用于获取容器集群中所有node的参数信息以及pod的参数信息,所述参数信息包括cpu使用率、内存使用率、镜像网络存储传输速率和持久化网络存储传输速率中的至少一项;计算单元,用于根据所述参数信息分别计算所有的node得分以及pod得分,所述node得分用于表示所述node的负载状况,所述pod得分用于表示所述pod的计算资源需求状况;构建单元,用于分别构建所述node得分与获取所述参数信息的时间值的对应关系作为用于训练第一预测模型的第一样本数据以及构建所述pod得分与获取所述参数信息的时间值的对应关系作为用于训练第二预测模型的第二样本数据;训练单元,用于通过所述第一样本数据训练得到第一预测模型以及通过所述第二样本数据训练得到第二预测模型;预测单元,用于通过所述第一预测模型预测未来时段内的node得分以及通过所述第二预测模型预测未来时段内的pod得分;调度单元,用于若node的node得分小于预设门限值,则将所述node下pod得分低于第一阈值的pod迁移到node得分高于第二阈值的node下。

第三方面,提供了一种存储一个或多个程序的计算机可读存储介质,所述一个或多个程序包括指令,所述指令当被计算机执行时使所述计算机执行如第一方面所述的容器集群管理系统的动态调度方法。

第四方面,提供了一种包含指令的计算机程序产品,当所述指令在计算机上运行时,使得计算机执行如第一方面所述的容器集群管理系统的动态调度方法。

第五方面,提供一种容器集群管理系统的动态调度装置,包括:处理器、存储器和通信接口;其中,通信接口用于所述动态调度装置和其他设备或网络通信;所述存储器用于存储一个或多个程序,该一个或多个程序包括计算机执行指令,当该动态调度装置运行时,处理器执行该存储器存储的该计算机执行指令,以执行上述第一方面所述的容器集群管理系统的动态调度方法。

本申请的实施例提供一种容器集群管理系统的动态调度方法和装置,采用在容器运行期间获取到的所有node以及pod的参数信息,计算node得分以及pod得分,并得到与时间值的对应关系作为训练预测模型的样本数据,从而预测未来时间段的node得分以及pod得分,最后根据预测结果动态的调度容器集群中的pod,解决了node负载不均衡,容器集群不稳定的问题。

附图说明

图1为本申请的实施例提供的一种容器集群管理系统的系统架构示意图;

图2为本申请的实施例提供的一种容器集群管理系统的动态调度方法流程示意图;

图3为本申请的实施例提供的一种容器集群管理系统的动态调度装置示意图一;

图4为本申请的实施例提供的一种容器集群管理系统的动态调度装置示意图二。

具体实施方式

下面结合附图,对本申请实施例提供的一种容器集群管理系统的动态调度方法和装置进行详细的描述。

本申请的说明书以及附图中的术语“第一”和“第二”等是用于区别不同的对象,或者用于区别对同一对象的不同处理,而不是用于描述对象的特定顺序。

此外,本申请的描述中所提到的术语“包括”和“具有”以及它们的任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括其他没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。

需要说明的是,本申请实施例中,“示例性的”或者“例如”等词用于表示作例子、例证或说明。本申请实施例中被描述为“示例性的”或者“例如”的任何实施例或设计方案不应被解释为比其它实施例或设计方案更优选或更具优势。确切而言,使用“示例性的”或者“例如”等词旨在以具体方式呈现相关概念。

在本申请的描述中,除非另有说明,“多个”的含义是指两个或两个以上

本申请的实施例提供了一种容器集群管理系统的动态调度方法,可应用于多种容器集群中,例如使用docker容器技术对应用进行封装而组成的容器集群。该容器集群中包括多个物理节点node,该node为计算机设备,如手机、电脑、智能手表等,每个该node包括多个pod,pod为容器集群管理系统中的最小调度单元,每个pod中包括不少于一个的容器,该动态调度方法应用于容器集群管理系统中容器运行期间。

参考图1所示,本申请实施例以kubernetes容器集群管理系统为例进行说明,该容器集群管理系统10包括接口服务器(apiserver)11、存储器(etcd)12、控制器(controllermanager)13以及调度器(scheduler)14,接口服务器11用于与其他设备进行数据传输,存储器12用于存储系统数据,控制器13用于控制系统运行,调度器14用于调度容器集群中的pod。容器集群中的每个node上都集成有kubelet组件15、监控器(cadvisor)16以及日志收集工具(fluentd)17。

参考图2所示,该方法包括步骤s101-s106:

s101、获取容器集群中所有node的参数信息以及pod的参数信息。

在kubernetes容器集群管理系统中,监控器16的监控功能已经集成到了每个node的kubelet组件15中,每个node上都会启动kubelet组件15,用于处理容器集群管理系统10下发到本node的任务以及管理容器,kubelet组件15会在接口服务器11上注册节点信息,并定期向监控器16上报pod和node的资源使用量。然而监控器16只提供单节点的pod资源占用情况,在大规模容器集群中,需要对所有的node和全部pod进行性能监控。因此本实施例采用heapster工具来实现容器集群性能数据的采集。

容器集群中的容器在运行期间会产生多种参数信息,pod的参数信息由该pod所包含的容器在运行期间生成的参数信息推算得到,node的参数信息由该node上所有可用pod的参数信息组成。该参数信息包括cpu使用率、内存使用率、镜像网络存储传输速率和持久化网络存储传输速率中的至少一项。在容器运行期间,node与pod的参数信息会不断的发生变化,通过heapster调用节点监控器16的restapi,分别获取容器集群中所有node以及pod的参数信息,提供整个容器集群的资源监控。

s102、根据该参数信息分别计算所有的node得分以及pod得分。

通过步骤s101获取了所有node的参数信息以及pod的参数信息后,根据这些参数信息分别计算所有的node得分以及pod得分,该node得分用于表示该node的负载状况,该pod得分用于表示该pod的计算资源需求状况。

计算方法包括:分别计算所有node以及pod的各个参数信息与对应参数信息平均值的比值,例如计算node的镜像网络存储传输速率与镜像网络存储平均传输速率的比值,需要到日志系统采集数据,在每个node上安装日志收集工具17,主要用来收集容器日志信息,通过日志收集工具17采集每个可用node的网络存储平均传输速率与所有可用node的网络存储平均传输速率总和,计算两者的比值并以时间戳和数据的形式记录于系统。同理可得该node的其他参数信息的比值,以及pod的各个参数信息的比值。分别获取系统中记录的node和pod的所有参数信息的比值,并根据预设权重值以及该比值计算各个node以及pod的得分。

应用程序在运行期间,如果发生例如访问用户数突然增多等外部原因,最直接的表现就是cpu使用率和内存使用率升高,因此通常cpu使用率和内存使用率这两种参数信息设置的权重较高。例如可以设置cpu使用率和内存使用率的权重分别为0.3,镜像网络存储传输速率和持久化网络存储传输速率的权重值分别为0.2。因此node得分或pod得分就等于0.3*cpu使用率的比值+0.3*内存使用率的比值+0.2*镜像网络存储传输速率的比值+0.2*持久化网络存储传输速率的比值。

s103、分别构建该node得分与获取该参数信息的时间值的对应关系作为用于训练第一预测模型的第一样本数据以及构建pod得分与获取该参数信息的时间值的对应关系作为用于训练第二预测模型的第二样本数据。

通过步骤s102得到了node得分和pod得分,获取同时记录于系统中的时间戳,该时间戳即为获取该参数信息的时间值,构建node得分与时间戳的对应关系作为用于训练第一预测模型的第一样本数据,构建pod得分与该时间戳的对应关系作为用于训练第二预测模型的第二样本数据。本实施例中以12个小时为单位,预测未来12个小时内的node得分和pod得分,因此样本数据都是12*1的矩阵。

s104、通过该第一样本数据训练得到第一预测模型以及通过该第二样本数据训练得到第二预测模型。

通过将步骤s103得到的第一样本数据和第二样本数据作为时间序列数据,时间序列数据具有噪声、不稳定、随机性等特点,对于这类数据的预测方法现有技术主要有自动回归滑动平均arma和神经网络等。但这些方法有一些缺点是很难克服的,arma包含的是线性行为,对于非线性的因素没有包含;而神经网络的结构需要事先指定或应用启发式算法在训练过程中修正,同时神经网络得到的解是局部最优而非全局最优。这些不足极大地限制了这些方法在实际中的应用。而支持向量机svm则不存在上述问题,因此申请本实施例采用支持向量机svm作为训练模型。

收集一段时间内的样本数据,若是要预测未来12个小时内的node得分和pod得分,则以12个小时为维度,所有的输入变量都是12*1的矩阵。将第一样本数据和第二样本数据作为训练集,采用交叉验证的思想来调整模型参数。在本次训练中,采用均方误差mse检验第一预测模型和第二预测模型的拟合效果和预测效果,确定是否有效拟合原时间序列数据,当检测结果满足要求后,第一预测模型和第二预测模型即可用于预测未来12小时内的node得分和pod得分。

s105、通过该第一预测模型预测未来时段内的node得分以及通过该第二预测模型预测未来时段内的pod得分。

通过步骤s104得到了第一预测模型和第二预测模型后,继而通过该第一预测模型预测未来12小时内的node得分以及通过该第二预测模型预测未来12小时内的pod得分。

s106、若node的node得分小于预设门限值,则将该node下pod得分低于第一阈值的pod迁移到node得分高于第二阈值的node下。

设立一个预设门限值,若node的node得分小于该预设门限值,则将该node下pod得分低于第一阈值的pod迁移到node得分高于第二阈值的节点下,该第一阈值和第二阈值可以根据需求进行调整。

可选的,若node得分小于该预设门限值,则将该node下pod得分最低的pod迁移到node得分最高的node下。

可选的,若运行中的容器比如web应用,由于某一时段访问量突然增大,系统检测到某个应用的cpu、内存访问量、网络传输速率等突增,若此时去调度,就会出现业务时延增大,甚至中断的情况。因此若node的node得分小于预设门限值,则可以在该node得分对应时间值之前的预设时间将该node下pod得分低于第一阈值的pod迁移到node得分高于第二阈值的node下。例如预测得到该node在未来某天0-12点钟的12个node得分中,8点钟的node得分小于预设门限值,且整个调度过程需要30秒,则该预设时间为30秒,因此需在7点59分30秒的时间点执行该调度线程。

本申请的实施例提供一种容器集群管理系统的动态调度方法,采用在容器运行期间获取到的所有node的参数信息以及pod的参数信息,计算node得分以及pod得分,并得到与时间值的对应关系作为训练预测模型的样本数据,从而预测未来时间段的node得分以及pod得分,最后根据预测结果动态的调度容器集群中的容器,解决了节点负载不均衡,容器集群不稳定的问题。

本申请实施例可以根据上述方法示例对装置进行功能模块或者功能单元的划分,例如,可以对应各个功能划分各个功能模块或者功能单元,也可以将两个或两个以上的功能集成在一个处理模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块或者功能单元的形式实现。其中,本申请实施例中对模块或者单元的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。

参照图3中所示,本申请实施例提供了一种容器集群管理系统的动态调度装置,可以应用于如上所示的容器集群管理系统的动态调度方法。该容器集群管理系统的动态调度装置100包括:

获取单元101,用于获取容器集群中所有node的参数信息以及pod的参数信息,该参数信息包括cpu使用率、内存使用率、镜像网络存储传输速率和持久化网络存储传输速率中的至少一项。

计算单元102,用于根据该参数信息分别计算所有的node得分以及pod得分,该node得分用于表示该node的负载状况,该pod得分用于表示该pod的计算资源需求状况。

构建单元103,用于分别构建该node得分与获取该参数信息的时间值的对应关系作为用于训练第一预测模型的第一样本数据以及构建该pod得分与获取该参数信息的时间值的对应关系作为用于训练第二预测模型的第二样本数据。

训练单元104,用于通过该第一样本数据训练得到第一预测模型以及通过该第二样本数据训练得到第二预测模型。

预测单元105,用于通过该第一预测模型预测未来时段内的node得分以及通过该第二预测模型预测未来时段内的pod得分。

调度单元106,用于若node的node得分小于预设门限值,则将该node下pod得分低于第一阈值的pod迁移到node得分高于第二阈值的node下。

可选的,该计算单元102,具体用于:

分别计算所有node以及pod的各个参数信息与对应参数信息平均值的比值;根据预设权重值以及该比值计算各个node的node得分以及pod的pod得分。

可选的,该调度单元106,还用于:

若node的node得分小于预设门限值,则将该node下pod得分最低的pod迁移到node得分最高的node下。

可选的,该调度单元106,还用于:

若node的node得分小于预设门限值,则在对应时间值之前的预设时间将该node下pod得分低于第一阈值的pod迁移到node得分高于第二阈值的node下。

本申请的实施例提供一种存储一个或多个程序的计算机可读存储介质,所述一个或多个程序包括指令,所述指令当被计算机执行时使计算机执行如图2中所述的容器集群管理系统的动态调度方法。

本申请的实施例提供一种包含指令的计算机程序产品,当指令在计算机上运行时,使得计算机执行如图2中所述的容器集群管理系统的动态调度方法。

图4示出了上述实施例中所涉及容器集群管理系统的动态调度装置的又一种可能的结构示意图。该装置包括:处理器202和通信接口203。处理器202用于对装置的动作进行控制管理,例如,执行上述获取单元101、计算单元102、构建单元103、训练单元104、预测单元105以及调度单元106执行的步骤,和/或用于执行本文所描述的技术的其它过程。通信接口203用于支持该装置与其他网络实体的通信。终端还可以包括存储器201和总线204,存储器201用于存储装置的程序代码和数据。

其中,上述处理器202可以实现或执行结合本申请公开内容所描述的各种示例性的逻辑方框,单元和电路。该处理器可以是中央处理器,通用处理器,数字信号处理器,专用集成电路,现场可编程门阵列或者其他可编程逻辑器件、晶体管逻辑器件、硬件部件或者其任意组合。其可以实现或执行结合本申请公开内容所描述的各种示例性的逻辑方框,单元和电路。所述处理器也可以是实现计算功能的组合,例如包含一个或多个微处理器组合,dsp和微处理器的组合等。

存储器201可以包括易失性存储器,例如随机存取存储器;该存储器也可以包括非易失性存储器,例如只读存储器,快闪存储器,硬盘或固态硬盘;该存储器还可以包括上述种类的存储器的组合。

总线204可以是扩展工业标准结构(extendedindustrystandardarchitecture,eisa)总线等。总线404可以分为地址总线、数据总线、控制总线等。为便于表示,图4中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。

通过以上的实施方式的描述,所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,仅以上述各功能单元的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元完成,即将装置的内部结构划分成不同的功能单元,以完成以上描述的全部或者部分功能。上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

由于本申请的实施例中的容器集群管理系统的动态调度装置、计算机可读存储介质、计算机程序产品可以应用于上述方法,因此,其所能获得的技术效果也可参考上述方法实施例,本申请实施例在此不再赘述。

需要说明的是,上述各单元可以为单独设立的处理器,也可以集成在控制器的某一个处理器中实现,此外,也可以以程序代码的形式存储于控制器的存储器中,由控制器的某一个处理器调用并执行以上各单元的功能。这里所述的处理器可以是一个中央处理器(centralprocessingunit,cpu),或者是特定集成电路(applicationspecificintegratedcircuit,asic),或者是被配置成实施本申请实施例的一个或多个集成电路。

应理解,在本申请的各种实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。

本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

在本申请所提供的几个实施例中,应该理解到,所揭露的系统、设备和方法,可以通过其它的方式实现。例如,以上所描述的设备实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,设备或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。

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