一种应用容器引擎容器资源调度方法及装置与流程

文档序号:12733295阅读:341来源:国知局
一种应用容器引擎容器资源调度方法及装置与流程

本发明涉及软件应用开发技术领域,特别是涉及一种应用容器引擎容器资源调度方法及装置。



背景技术:

Docker是采用go语言开发的一种基于LXC技术构建的应用容器引擎,是近年来新兴发展的一种虚拟化工具,它可以和虚拟机一样实现资源和系统环境的隔离。应用容器引擎Docker的主要目标是“Build,Ship and Run Any App,Anywhere”,即通过对应用组件的封装(Packaging)、分发(Distribution)、部署(Deployment)、运行(Runtime)等生命周期的管理,达到应用组件级别的“一次封装,到处运行”,支持在多种主流云平台(PaaS)和本地系统上部署。可以说Docker为应用的开发和部署提供了“一站式”的解决方案。

现有技术中,应用容器引擎Docker使用Cgroups归类运行在容器中的进程,管理一组进程的资源,通过相应的应用程序接口对容器资源进行控制和调度,但对容器资源的配置和调度是由开发人员人工操作进行,并没有实现容器资源的自动调度。



技术实现要素:

本发明的目的是提供一种应用容器引擎容器资源调度方法及装置,实现了对容器资源的自动调度和更新。

为实现上述目的,本发明提供如下技术方案:

一种应用容器引擎容器资源调度方法,包括:

每隔第一预设时间从队列中获取指定容器的资源信息,并获取系统的资源信息,所述队列由系统内各容器的资源信息构成;

以系统的资源信息为参考,根据获取的所述指定容器的资源信息,当判断所述指定容器的资源不满足预设条件时,对所述指定容器的资源进行调度和更新。

可选地,还包括:每隔第二预设时间收集系统内各容器的资源信息,更新到所述队列中。

可选地,容器的资源信息为在所述第二预设时间的间隔内所述容器的资源信息平均值。

可选地,还包括:

当监测到系统内出现新增容器时,建立用于执行对所述新增容器的资源进行调度的线程;

当监测到系统内的容器销毁时,停止用于执行对该销毁容器的资源进行调度的线程。

可选地,容器的资源包括CPU资源和内存资源;

所述以系统的资源信息为参考,根据获取的所述指定容器的资源信息,当判断所述指定容器的资源不满足预设条件时,对所述指定容器的资源进行调度和更新包括:

以系统的CPU资源信息为参考,根据获取的所述指定容器的CPU资源信息,当判断所述指定容器的CPU资源不满足预设条件时,对所述指定容器的CPU资源进行调度和更新;

以系统的内存资源信息为参考,根据获取的所述指定容器的内存资源信息,当判断所述指定容器的内存资源不满足预设条件时,对所述指定容器的内存资源进行调度和更新。

一种应用容器引擎容器资源调度装置,包括:

获取模块,用于每隔第一预设时间从队列中获取指定容器的资源信息,并获取系统的资源信息,所述队列由系统内各容器的资源信息构成;

调度模块,用于以系统的资源信息为参考,根据获取的所述指定容器的资源信息,当判断所述指定容器的资源不满足预设条件时,对所述指定容器的资源进行调度和更新。

可选地,还包括队列更新模块,用于每隔第二预设时间收集系统内各容器的资源信息,更新到所述队列中。

可选地,容器的资源信息为在所述第二预设时间的间隔内所述容器的资源信息平均值。

可选地,还包括线程控制模块,用于当监测到系统内出现新增容器时,建立用于执行对所述新增容器的资源进行调度的线程,当监测到系统内的容器销毁时,停止用于执行对该销毁容器的资源进行调度的线程。

可选地,容器的资源包括CPU资源和内存资源;

所述调度模块具体用于:

以系统的CPU资源信息为参考,根据获取的所述指定容器的CPU资源信息,当判断所述指定容器的CPU资源不满足预设条件时,对所述指定容器的CPU资源进行调度和更新;

以系统的内存资源信息为参考,根据获取的所述指定容器的内存资源信息,当判断所述指定容器的内存资源不满足预设条件时,对所述指定容器的内存资源进行调度和更新。

由上述技术方案可知,本发明所提供的应用容器引擎资源调度方法及装置,以系统内各容器的资源信息创建队列,每隔预设时间从队列中获取指定容器的资源信息,并获取系统的资源信息,然后以系统的资源信息为参考,根据获取的指定容器的资源信息,当判断所述指定容器的资源不满足预设条件时,对指定容器的资源进行调度和更新。可以看出,本发明应用容器引擎容器资源调度方法及装置,实现了对容器资源的自动调度和更新。

附图说明

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

图1为本发明实施例提供的一种应用容器引擎容器资源调度方法的流程图;

图2为本发明实施例提供的一种应用容器引擎容器资源调度装置的示意图。

具体实施方式

为了使本技术领域的人员更好地理解本发明中的技术方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。

请参考图1,本发明实施例提供的一种应用容器引擎容器资源调度方法,包括步骤:

S10:每隔第一预设时间从队列中获取指定容器的资源信息,并获取系统的资源信息,所述队列由系统内各容器的资源信息构成。

创建队列,该队列由系统内各容器的资源信息构成。

对于需要进行动态资源调度的指定容器,每隔第一预设时间从队列中获取该指定容器的资源信息,

其中,容器的资源包括CPU资源和内存资源,比如,容器的CPU资源信息指该容器所占用的CPU数目,容器的内存资源信息指该容器所使用的内存大小。

相应的,系统的资源包括CPU资源和内存资源,系统的CPU资源信息指系统的CPU总数目,系统的内存资源信息指系统的内存总容量。

S11:以系统的资源信息为参考,根据获取的所述指定容器的资源信息,当判断所述指定容器的资源不满足预设条件时,对所述指定容器的资源进行调度和更新。

以系统的资源信息为参考,根据所述指定容器的资源信息,可得知该指定容器资源的使用情况,包括CPU资源和内存资源,当判断指定容器的资源不满足预设条件时,对指定容器的资源进行调度和更新。

可以看出,本实施例应用容器引擎容器资源调度方法,实现了对容器资源的自动调度和更新。一方面可提高系统硬件资源的使用率,另一方面提升容器内运行程序的性能。

下面对本实施例应用容器引擎容器资源调度方法进行详细说明。

本实施例应用容器引擎容器资源调度方法,包括步骤:

S10:每隔第一预设时间从队列中获取指定容器的资源信息,并获取系统的资源信息,所述队列由系统内各容器的资源信息构成。

具体的,可以为系统内各容器分配唯一的标识号(ID),以标识号为标识,将各容器的资源信息存储到所述队列中。当系统内出现新增容器时,会为新增容器分配标识号。

在收集容器的资源信息时,会收集容器的标识号,并获取容器的资源信息,对应标识号,将资源信息存储到所述队列中。

优选的,本实施例方法中,每隔第二预设时间收集系统内各容器的资源信息,更新到所述队列中。这样,每隔一定时间收集一次系统内各容器的资源信息,更新到所述队列中,能够实时地获取各容器的资源信息。

具体的,容器的资源包括CPU资源和内存资源,比如,容器的CPU资源信息指该容器所占用的CPU数目,容器的内存资源信息指该容器所使用的内存大小。

本方法中,容器的资源信息为在所述第二预设时间的间隔内所述容器的资源信息平均值。比如,对于容器的CPU资源信息,为在第二预设时间的间隔内该容器所占用CPU数目的平均值;对于容器的内存资源,为在第二预设时间的间隔内该容器所使用的内存大小的平均值。

在每次从队列中获取到指定容器的资源信息后,同时获取系统的资源信息,包括系统的CPU资源信息和内存资源信息。

在具体实施中,可采用一个函数a,用于获取系统内所有容器的标识号;采用一个函数b,用于获取指定标识号容器的资源信息,包括CPU资源信息和内存资源信息。

可采用一个线程c,用于调用函数a和函数b,收集在第二预设时间的间隔内各容器各自的资源信息平均值,将结果放入到创建的所述队列中。

可采用一个函数d,用于获取系统当前的资源信息,包括CPU资源信息和内存资源信息。

S11:以系统的资源信息为参考,根据获取的所述指定容器的资源信息,当判断所述指定容器的资源不满足预设条件时,对所述指定容器的资源进行调度和更新。

以系统的资源信息为参考,根据所述指定容器的资源信息,可得知该指定容器资源的使用情况,包括CPU资源和内存资源,当判断指定容器的资源不满足预设条件时,对指定容器的资源进行调度和更新。

并具体包括:以系统的CPU资源信息为参考,根据获取的所述指定容器的CPU资源信息,当判断所述指定容器的CPU资源不满足预设条件时,对所述指定容器的CPU资源进行调度和更新;

以系统的内存资源信息为参考,根据获取的所述指定容器的内存资源信息,当判断所述指定容器的内存资源不满足预设条件时,对所述指定容器的内存资源进行调度和更新。

在具体实施中,可通过采用一个线程f,用于每隔第一预设时间,从队列中获取指定容器的资源信息,并调用函数d,获取系统的资源信息;以系统的资源信息为参考,当判断所述指定容器的资源不满足预设条件时,调用函数g和函数h,对所述指定容器的资源进行调度和更新。

函数g用于对指定容器的CPU资源进行调度和更新;

函数h用于对指定容器的内存资源进行调度和更新。

本实施例方法中,还包括:当监测到系统内出现新增容器时,建立用于执行对所述新增容器的资源进行调度的线程;

当监测到系统内的容器销毁时,停止用于执行对该销毁容器的资源进行调度的线程。

具体实施中,可采用一个函数,调用函数a,监测系统内出现的新增容器和销毁容器,为新增容器建立用于执行对所述新增容器的资源进行调度的线程,对销毁容器,停止用于执行对该销毁容器的资源进行调度的线程。

相应的,请参考图2,本发明实施例还提供一种应用容器引擎容器资源调度装置,包括:

获取模块20,用于每隔第一预设时间从队列中获取指定容器的资源信息,并获取系统的资源信息,所述队列由系统内各容器的资源信息构成;

调度模块21,用于以系统的资源信息为参考,根据获取的所述指定容器的资源信息,当判断所述指定容器的资源不满足预设条件时,对所述指定容器的资源进行调度和更新。

可以看出,本实施例应用容器引擎容器资源调度装置,包括获取模块和调度模块,以系统内各容器的资源信息创建队列,每隔预设时间从队列中获取指定容器的资源信息,并获取系统的资源信息,然后以系统的资源信息为参考,根据获取的指定容器的资源信息,当判断所述指定容器的资源不满足预设条件时,对指定容器的资源进行调度和更新。可以看出,本实施例应用容器引擎容器资源调度装置,实现了对容器资源的自动调度和更新。

本实施例应用容器引擎容器资源调度装置,还包括队列更新模块,用于每隔第二预设时间收集系统内各容器的资源信息,更新到所述队列中。

具体的,为系统内各容器分配唯一的标识号(ID),以标识号为标识,将各容器的资源信息存储到所述队列中。当系统内出现新增容器时,会为新增容器分配标识号。

在收集系统内各容器的资源信息时,会收集系统内当前存在的所有容器的标识号,并获取各容器的资源信息,对应标识号,将资源信息存储到所述队列中。

由队列更新模块每隔一定时间收集一次系统内各容器的资源信息,更新到所述队列中,能够实时地获得各容器的资源信息。

具体的,容器的资源包括CPU资源和内存资源,比如,容器的CPU资源信息指该容器所占用的CPU数目,容器的内存资源信息指该容器所使用的内存大小。

本装置中,容器的资源信息为在所述第二预设时间的间隔内所述容器的资源信息平均值。比如,对于容器的CPU资源信息,为在第二预设时间的间隔内该容器所占用CPU数目的平均值;对于容器的内存资源,为在第二预设时间的间隔内该容器所使用的内存大小的平均值。

获取模块20在每次从队列中获取到指定容器的资源信息后,同时获取系统的资源信息,包括系统的CPU资源信息和内存资源信息,系统的CPU资源信息指系统的CPU总数目,系统的内存资源信息指系统的内存总容量。

本实施例中,所述调度模块21具体用于:

以系统的CPU资源信息为参考,根据获取的所述指定容器的CPU资源信息,当判断所述指定容器的CPU资源不满足预设条件时,对所述指定容器的CPU资源进行调度和更新;

以系统的内存资源信息为参考,根据获取的所述指定容器的内存资源信息,当判断所述指定容器的内存资源不满足预设条件时,对所述指定容器的内存资源进行调度和更新。

本实施例应用容器引擎容器资源调度装置,还包括线程控制模块,用于当监测到系统内出现新增容器时,建立用于执行对所述新增容器的资源进行调度的线程,当监测到系统内的容器销毁时,停止用于执行对该销毁容器的资源进行调度的线程。

,以上对本发明所提供的一种应用容器引擎容器资源调度方法及装置进行了详细介绍。本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以对本发明进行若干改进和修饰,这些改进和修饰也落入本发明权利要求的保护范围内。

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