CN113806018B - 基于神经网络和分布式缓存的Kubernetes集群资源混合调度方法 - Google Patents

基于神经网络和分布式缓存的Kubernetes集群资源混合调度方法 Download PDF

Info

Publication number
CN113806018B
CN113806018B CN202111070586.5A CN202111070586A CN113806018B CN 113806018 B CN113806018 B CN 113806018B CN 202111070586 A CN202111070586 A CN 202111070586A CN 113806018 B CN113806018 B CN 113806018B
Authority
CN
China
Prior art keywords
resource
scheduling
resources
neural network
instance
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
Application number
CN202111070586.5A
Other languages
English (en)
Other versions
CN113806018A (zh
Inventor
杨飞
钟生海
吴江
丁晓东
平笑柔
苏醒
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Institute of Computer Technology and Applications
Original Assignee
Beijing Institute of Computer Technology and Applications
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Beijing Institute of Computer Technology and Applications filed Critical Beijing Institute of Computer Technology and Applications
Priority to CN202111070586.5A priority Critical patent/CN113806018B/zh
Publication of CN113806018A publication Critical patent/CN113806018A/zh
Application granted granted Critical
Publication of CN113806018B publication Critical patent/CN113806018B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5077Logical partitioning of resources; Management or configuration of virtualized resources
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • G06N3/084Backpropagation, e.g. using gradient descent
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/4557Distribution of virtual machine instances; Migration and load balancing
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Computational Linguistics (AREA)
  • Biophysics (AREA)
  • Evolutionary Computation (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • Biomedical Technology (AREA)
  • Artificial Intelligence (AREA)
  • Mathematical Physics (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

本发明涉及一种基于神经网络和分布式缓存的Kubernetes集群资源混合调度方法,属于资源调度领域。本发明通过采集应用历史运行情况相关信息,训练BP神经网络,构建基于kubernetes的资源预测模型;对应用当前所需要使用的资源进行预测,并将相应预测结果输入到分布式缓存系统;资源调度算法从分布式缓存系统获取预测结果,针对不同种类的资源,资源动态调度算法会生成一系列资源借贷决策,并将决策响应到容器组的请求资源限制中。本发明使用预测模型预测未来一段时间内应用的负载情况,根据资源预测结果帮助Kubernetes集群在应用由于资源不足出现性能瓶颈之前预先触发资源的动态调度和实例的自动伸缩,从而减少服务的实际响应时间。

Description

基于神经网络和分布式缓存的Kubernetes集群资源混合调度 方法
技术领域
本发明属于资源调度领域,具体涉及一种基于神经网络和分布式缓存的Kubernetes集群资源混合调度方法。
背景技术
近年来,以Docker为代表的容器技术引起了人们越来越多的关注,并逐渐成为了实现PaaS平台的关键技术之一。Docker容器的本质是运行在宿主机上的一个进程。通过写时复制机制,Docker实现了高效的文件操作。通过cgroups技术和namespace技术,Docker实现了资源的隔离与限制。在软件研发过程中使用Docker容器技术能够实现产品的快速开发和部署。相比于传统的虚拟机,Docker具有资源使用率高、启动运行速度快、性能开销小等优点,自推出以来,就受到了业界的广泛关注。经过多年的发展,已经逐渐形成了围绕Docker容器的完整生态体系,越来越多的公司将Docker作为了替代虚拟机的软件交付新方案。
批量的Docker容器难以通过人工控制的方式进行管理,因此需要一个容器管理系统来统一地管理和调度集群中的所有Docekr容器。Kubernetes作为一个开放的容器调度管理平台,凭借出色的性能很好地满足了容器跨主机调度和管理的需求。作为Google大规模容器管理系统Borg的开源版本实现,Kubernetes使用基于操作系统虚拟化技术的Docker容器引擎,拥有强大的容器编排与调度能力,可以为应用程序提供部署运行、服务发现、状态监控、资源调度、缩容扩容、均衡容灾等一整套功能。经过不断地发展,Kubernetes已经成为了企业部署Docker容器的首选系统。Kubernetes的主要功能包括:基于容器的应用部署、负载均衡与服务发现、应用的维护与滚动升级、跨主机跨地区集群调度与自动伸缩等。
随着云平台中的业务日益复杂,资源调度逐渐成为了云平台中的一项关键技术。资源调度过程是在一定的规则下对各种虚拟化的资源进行合理的分配和调节,从而满足用户需求的过程。云平台通过合理的资源调度,可以为应用程序提供充足的资源保障,降低服务的响应时间,从而提高系统的服务质量。对于Kubernetes系统,资源调度机制同样发挥着非常重要的作用,是集群管理不可或缺的重要组成部分。但是由于发展时间较短,Kubernetes在资源调度和弹性伸缩等方面还存在着很大的不足。
在Kubernetes系统中主要由调度器组件负责资源调度的工作。首次调度应用时,调度器组件根据应用的资源配置情况,通过调度策略在集群内所有的节点上选择一个最适合的节点来进行部署。这种调度策略属于静态调度策略,该调度机制虽然复杂度低,但却缺少灵活性。Kubernetes通过周期性地检查容器组中的应用负载状态,动态地调整容器组副本数量。Kubernetes中现有的资源调度策略存在一定的缺陷,不足之处主要表现在以下两个方面。
(一)Kubernetes对容器组的伸缩调度是基于阈值来实现的,这是一种响应式的调度策略。系统使用监控工具实时采集容器组中应用的负载数据,然后将负载数据与预设的阈值进行对比,判断是否做出伸缩决策。然而,对于运行在容器组中的应用,负载是动态变化的,响应式的调度策略只能被动地根据告警触发伸缩服务,存在一定的滞后性,难以应对负载突变的场景,并且从应用负载超过阈值范围开始,到完成容器组扩容或缩容操作的整个过程中,应用都是处于高负荷运行或是浪费大量系统资源的状态中,相应地会导致服务响应时间增加或系统资源利用率不高的情况。
(二)在对容器组进行调度时,资源调度器根据当前容器组的资源配置情况,在集群的所有节点中选择一个合适的节点来部署容器组。然而,默认的资源调度策略没有考虑不同类型的容器组对资源的消耗情况,容易导致容器组运行过程中对不同资源使用不均衡的情况,从而造成节点上单一资源的性能瓶颈。
由于Kubernetes在资源调度方面存在缺陷,不能有效地应对复杂的应用场景,因此有必要对Kubernetes中默认的资源调度策略进行改进,以满足相关服务的访问需求。
发明内容
(一)要解决的技术问题
本发明要解决的技术问题是如何提供一种基于神经网络和分布式缓存的Kubernetes集群资源混合调度方法,以解决Kubernetes在资源调度和弹性伸缩等方面还存在着很大的不足的问题。
(二)技术方案
为了解决上述技术问题,本发明提出一种基于神经网络和分布式缓存的Kubernetes集群资源混合调度方法,该方法包括如下步骤:
S1、通过采集应用历史运行情况相关信息,包括资源使用情况、高并发访问时间和资源利用率,训练BP神经网络,构建基于kubernetes的资源预测模型;对应用当前所需要使用的资源进行预测,并将相应预测结果输入到分布式缓存系统;
S2、利用多个计算节点本地的内存和磁盘资源,通过分布式缓存技术,构建统一的分布式缓存系统,将预测结果存储在分布式缓存系统中;
S3、资源调度算法从分布式缓存系统获取预测结果,针对不同种类的资源,资源动态调度算法会生成一系列资源借贷决策,并将决策响应到容器组的请求资源限制中。
进一步地,BP神经网络的学习过程包括信号的正向传播与误差的反向传播;正向传播时,样本从输入层传入,经各隐含层逐层进行处理后,传向输出层,若输出层的实际输出与期望输出不符,则进入误差的反向传播阶段;
反向传播时,利用sigmoid函数,将误差反传平摊到各隐含层,以此不断修正误差,直到函数收敛。
进一步地,BP神经网络的训练过程包括:对应用相关数据进行采集整理,建立神经网络结构后,从训练数据集中选取一个batch的数据进行神经网络参数训练,采用sigmoid函数作为BP网络的训练函数基准,不断修改神经网络的权重参数,当训练达到一定次数后,对测试数据集误差进行测试;如果达到条件1训练次数上限,则修改神经网络结构;如果达到条件2误差不满足要求,则返回上一步骤对数据重新进行神经网络参数训练;如果达到条件3误差满足要求,则训练过程结束,得到定型的能够预测应用资源的神经网络,能用于使用训练结果对未知数据进行预测。
进一步地,分布式缓存系统采用内存文件系统Alluxio。
进一步地,Alluxio系统包括客户端、控制节点与工作者组件,通过控制节点与工作者组件实现在客户端应用与存储之间的高速数据交换。
进一步地,kubernetes对应用资源进行调度,创建容器组,使应用正常运行;当Kubernetes上的应用实例以容器组的形式调度到集群某个节点上运行起来后,根据资源调度算法决定该容器组和容器的资源配额;
资源调度算法根据借贷原则,对于任意时刻t,将应用实例对某种资源R的需求表示为一个元组:
(Rcur,Rlimit,Rdr,Rcr,Rfuture)
其中,Rcur表示实例当前对资源R的使用量,Rlimit表示实例对资源R的最大使用量,Rdr表示该实例从其它实例借来的资源R的数值,Rcr表示该实例将资源R借给其它实例的数值,Rfuture表示未来某个时间段内实例对资源R的平均使用量;
定义借方为:从其它实例借用了资源;
定义贷方为:将资源借出给了其它实例;
对于该元组,定义的限制条件如下:
其中条件(1)表示Rdr和Rcr的值至少需要有一个为0,这样保证应用实例处于借方的状态或者贷方的状态两者之一;条件(2)表示实例当前对资源R的使用量不得超过配额的最大使用量与借到量之和的值;条件(3)表示实例当前对资源R的使用量不得超过配额的最大使用量和借出量之差的值;条件(4)中Rfuture为预测模型中对资源R的预测值,σ为估计系数,取值范围是0到1;条件(5)表示如果实例对资源R使用量的预测值为-1,暂时不参与资源的动态调度。
进一步地,条件(2)和条件(3)由Docker容器的资源限制、隔离机制和Kubernetes对容器组和多租户的资源限制机制来保证。
进一步地,对于内存资源,设置较大的σ。
进一步地,对于实例内存资源的采集和预测都采用调度时间点前后一段时间内的最大值,而其它资源可以基于一段时间内的平均值来采集和预测。
进一步地,对于节点上所有应用实例间的动态资源调度,由一个称为动态调度管理器的程序来负责,动态调度管理器根据借贷关系在每一个的调度周期进行一轮资源的动态调度;
令Rtemp为动态调度管理器临时持有的资源R的数值,该值在每一轮调度开始之前和结束之后都必须为0;动态调度管理器的一次动态调度过程如下:
在开始调度之前,首先清理目前已经被删除、停止运行或者出现异常崩溃的实例,即收回这些实例借出去以及借进来的资源;
遍历所有实例,将所有可以借出资源R的实例的资源总量暂存起来,可借出的资源量为Rcredit=Rlimit+Rdr+Rcr-max(Rfuture,Rcur(1+θ)),将其先交给动态调度管理器保管,Rcredit表示实例的可借资源量,其中θ可变因子,取值范围在0-1之间;
遍历所有实例,因为可借的资源要优先满足所有上一轮作为贷方实例的需求量,Rdepit表示实例的资源需求量,则有Rtemp=Rtemp-Rdepit;如果可借资源刚好满足所有这些实例的需求量,那就直接执行调度决策这一步;如果还剩下可借资源就执行下一步调度;如果不能满足,即可借资源量小于实例的资源需求量,就根据空缺的资源需求量将已经分配给借方的资源按比例回收,即将借给借方的资源按照贷方目前资源需求量,回收一部分,然后执行调度策略;
如果还剩下可借的资源,将剩下需要资源的实例按需求量从大到小排序;然后依次满足这些实例的需求量;满足按需求量从大到小分配,如有剩下的可借资源,则按比例返还给这一轮的贷方,然后执行调度策略;如果可用资源恰好分配完就直接执行调度策略;
将最终所有的调度决策全部应用到容器组以及容器组里运行的容器中,再等待下一个周期的调度。
(三)有益效果
本发明提出一种基于神经网络和分布式缓存的Kubernetes集群资源混合调度方法,本发明使用预测模型预测未来一段时间内应用的负载情况,根据资源预测结果帮助Kubernetes集群在应用由于资源不足出现性能瓶颈之前预先触发资源的动态调度和实例的自动伸缩,从而减少服务的实际响应时间。
附图说明
图1为本发明资源调度方法流程图;
图2为三层BP神经网络拓扑图;
图3为神经网络训练流程图;
图4为Alluxio内部结构图;
图5为资源动态调度过程。
具体实施方式
为使本发明的目的、内容和优点更加清楚,下面结合附图和实施例,对本发明的具体实施方式作进一步详细描述。
本文在此基础上提出了一种基于神经网络和分布式缓存技术的Kubernetes集群资源混合调度方法,使用预测模型预测未来一段时间内应用的负载情况,根据预测结果对资源进行预先调度,从而减少服务的实际响应时间。
本专利的目的就是提出一种基于神经网络和分布式缓存技术的Kubernetes集群资源调度方法,从资源利用最大化、应用对资源的敏感度等角度出发来制定相应的资源管理机制和调度策略。本发明包括如下步骤:
S1、通过采集应用历史运行情况相关信息,包括资源使用情况、高并发访问时间和资源利用率等,训练BP神经网络,构建基于kubernetes的资源预测模型;对应用当前所需要使用的资源进行预测,并将相应预测结果输入到分布式缓存系统。
S2、利用多个计算节点本地的内存和磁盘资源,通过分布式缓存技术,构建统一的分布式缓存系统,将预测结果存储在分布式缓存系统中,为资源调度及实例弹性伸缩任务提供就近、可重用的数据访问服务,增加资源调度的灵活性与及时性,提高系统资源的利用率。
S3、资源调度算法从分布式缓存系统获取预测结果,针对不同种类的资源,资源动态调度算法会生成一系列资源借贷决策,并将决策响应到容器组的请求资源限制中;根据资源预测结果帮助Kubernetes集群在应用由于资源不足出现性能瓶颈之前预先触发资源的动态调度和实例的自动伸缩。
集群资源调度方法流程如图1所示。
下面具体介绍本发明流程的各个步骤。
步骤一预测模型构建与数据快速获取
1.预测模型构建
本专利使用BP神经网络作为预测模型的基础模型。作为目前应用最广泛的神经网络模型之一,BP神经网络是一种使用误差逆传播算法进行训练的多层前馈网络。BP网络能够在无需事前揭示映射关系的数学方程的前提下,学习和贮存大量的输入-输出模式映射关系。BP网络通过使用最速下降法的学习规则,使用反向传播来不断调整网络的阈值和权值,使得网络的误差平方和达到最小。
通过采集应用历史运行情况相关信息,包括资源使用情况、高并发访问时间、资源利用率等,训练BP神经网络,构建基于kubernetes的资源预测模型。BP三层神经网络(如图2)所示。
BP神经网络的学习过程由两个部分组成,它们分别是信号的正向传播与误差的反向传播。
(1)正向传播时,样本从输入层传入,经各隐含层逐层进行处理后,传向输出层。若输出层的实际输出与期望输出(教师信号)不符,则进入误差的反向传播阶段。
(2)反向传播时,利用sigmoid函数,将误差反传平摊到各隐含层,以此不断修正误差,直到函数收敛。
BP神经网络训练过程(如图3)所示。
对应用相关数据进行采集整理,建立神经网络结构后,从训练数据集中选取一个batch的数据进行神经网络参数训练,采用sigmoid函数作为BP网络的训练函数基准,不断修改神经网络的权重参数,当训练达到一定次数后,对测试数据集误差进行测试。如果达到条件1训练次数上限,则修改神经网络结构。如果达到条件2误差不满足要求,则返回上一步骤对数据重新进行神经网络参数训练。如果达到条件3误差满足要求,则训练过程结束,得到定型的能够预测应用资源的神经网络,可以使用训练结果对未知数据进行预测。
经网络训练是构建预测模型的核心过程,是后续对资源进行动态调度的基础。
2.数据快速获取
当利用神经网络进行应用运行情况的一段时间后的预测信息后,系统若将预测结果存储到存储池中,调度器进行调度时访问存储池的数据会造成一定的时延,降低资源调度的灵活性。因此需要构建一套统一的分布式缓存系统,将预测结果存储在分布式缓存系统中,为资源调度机实例弹性伸缩任务提供就近、可重用的数据访问服务,提升资源调度的快速反应能力。本专利采用Alluxio作为分布式缓存的具体实现,Alluxio是一个内存文件系统,作为一个中间缓存层临界于计算框架和存储框架之间。kubernetes在调度资源时,无须访问底层存储系统,只与Alluxio访问即可。
Alluxio内部结构(如图4)所示。
典型的Alluxio系统包括客户端、控制节点与工作者等组件,通过控制节点与工作者组件实现在客户端应用与存储之间的高速数据交换。
当kubernetes通过Alluxio缓存系统获取数据时,不是像传统文件系统那样,对文件系统做一个读磁盘文件操作,而是一旦发现要访问的数据储存在本地,会直接通过一种被称作“短路读”的方式,直接对本地文件系统进行访问,从而绕开不必要的TCP网络传输过程,达到加速数据获取速度的目的。
步骤二调度算法实现
Kubernetes平台在从分布式缓存系统读取到步骤一中输出的资源预测结果后,会立刻启动调度机制,对容器组进行调度。由于kubernetes平台自带的调度器组件在应用运行时不能够按需对已分配的资源进行动态调整调度,这样就会导致主机资源利用率偏低。而且调度器在进行资源调度时没有考虑应用对资源的敏感程度,很容易造成节点上对单一资源使用时的瓶颈。
本专利在Kubernetes调度器组件的基础上增加一个考虑应用对资源敏感程度的调度算法,使得Kubernetes平台具备更精准的负载均衡功能。为了实现这些功能,需要对目前Kubernetes进行改进以达到以下目的:
(1)充分利用部署应用的节点上的资源,尽可能提高资源利用率;
(2)在集群内资源总量一定的情况下,能够服务尽量多的应用实例;
(3)提高部署在Kubernetes集群上应用的服务质量;
(4)调度算法应该考虑应用对不同资源需求的敏感程度,让调度应用的负载更加均衡。
资源动态调度算法帮助Kubernetes集群在每个节点上所有运行着的应用实例之间进行资源动态调度。当资源预测结果生成后,针对不同种类的资源,资源动态调度算法会生成一系列资源借贷决策,并将决策响应到容器组的请求资源限制中。
下面对资源动态调度算法的算法模型设计与具体资源调度过程进行详细的介绍。
1.模型设计
总结:kubernetes设计的模型,对应用资源进行调度,创建容器组,使应用正常运行。当Kubernetes上的应用实例以容器组的形式调度到集群某个节点上运行起来后,根据训练好的模型决定该容器组和容器的资源配额。
比如容器组运行起来最大内存使用量为512M,最大CPU使用率为50%,占用一个CPU核。本专利设计的算法根据借贷原则,对于任意时刻t,可以将应用实例对某种资源R的需求表示为一个元组:
(Rcur,Rlimit,Rdr,Rcr,Rfuture)
其中,Rcur表示实例当前对资源R的使用量,Rlimit表示实例对资源R的最大使用量(即配额),Rdr表示该实例从其它实例借来的资源R的数值(即借方),Rcr表示该实例将资源R借给其它实例的数值(即贷方),Rfuture表示未来某个时间段内实例对资源R的平均使用量。
定义借方为:从其它实例借用了资源。
定义贷方为:将资源借出给了其它实例。
对于该元组,定义的限制条件如下:
其中条件(1)表示Rdr和Rcr的值至少需要有一个为0,这样保证应用实例处于借方的状态或者贷方的状态两者之一。条件(2)表示实例当前对资源R的使用量不得超过配额的最大使用量与借到量之和的值。条件(3)表示实例当前对资源R的使用量不得超过配额的最大使用量和借出量之差的值。条件(2)和条件(3)由Docker容器的资源限制、隔离机制和Kubernetes对容器组和多租户(Namespace)的资源限制机制来保证。条件(4)中Rfuture为预测模型中对资源R的预测值,σ为估计系数,取值范围是0到1,σ的取值越大则调度算法越保守,越小则调度算法越激进,做到借的时候就多借,贷的时候就少贷,根据实际情况可取为0.2,保证给实例留下足够的可用资源量,首先保证实例能正常运行。条件(5)表示如果实例对资源R使用量的预测值为-1,说明该实例部署在集群上运行的时间较短,预测数据量不充足,预测模型得不到充分训练,导致得不到理想的预测结果,这样就先暂时不参与资源的动态调度。
对于内存这种特别敏感、波动特别大的资源,可设置较大的σ,避免实例因借出过多的内存资源导致内存不足,进而出现内存溢出异常,导致正常的运行被中断。因此,特别规定对于实例内存资源的采集和预测都采用调度时间点前后一段时间内的最大值,而其它资源可以基于一段时间内的平均值来采集和预测。
2.调度过程
对于节点上所有应用实例间的动态资源调度,由一个称为动态调度管理器的程序来负责,动态调度管理器根据借贷关系在每一个的调度周期进行一轮资源的动态调度。
令Rtemp为动态调度管理器临时持有的资源R的数值,该值在每一轮调度开始之前和结束之后都必须为0。动态调度管理器的一次动态调度过程如图5所示。
因为资源从当前使用量变到未来某个值不是突变的,而是有一个变化的过程,因此可以起到一个时间缓冲的作用,如果配置的调度周期比较长,可以取为较大的值,如果调度周期比较短,可以取为较小的值。像内存这种非常敏感的资源可以取较大的值。整个调度过程如下:
在开始调度之前,首先清理目前已经被删除、停止运行或者出现异常崩溃的实例,即收回这些实例借出去以及借进来的资源。排除的所有实例,因为这些实例的运行时间不足,采集到的资源使用量数据不够,达不到预测模型的训练效果,所以可以不参与调度。
遍历所有实例,将所有可以借出资源R的实例的资源总量暂存起来,可借出的资源量为Rcredit=Rlimit+Rdr+Rcr-max(Rfuture,Rcur(1+θ)),将其先交给动态调度管理器保管,Rcredit表示实例的可借资源量,其中θ可变因子,取值范围在0-1之间,表示应用资源当前一段时间内变化率。
(1)遍历所有实例,因为可借的资源要优先满足所有上一轮作为贷方实例的需求量,Rdepit表示实例的资源需求量,则有Rtemp=Rtemp-Rdepit。如果可借资源刚好满足所有这些实例的需求量,那就直接执行调度决策这一步;如果还剩下可借资源就执行下一步调度;如果不能满足,即可借资源量小于实例的资源需求量,就根据空缺的资源需求量将已经分配给借方的资源按比例回收,即将借给借方的资源按照贷方目前资源需求量,回收一部分,然后执行调度策略。
(2)如果还剩下可借的资源,将剩下需要资源的实例按需求量从大到小排序。然后依次满足这些实例的需求量。满足按需求量从大到小分配,如有剩下的可借资源,则按比例返还给这一轮的贷方,然后执行调度策略;如果可用资源恰好分配完就直接执行调度策略。
(3)将最终所有的调度决策全部应用到容器组以及容器组里运行的容器中。再等待下一个周期的调度。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明技术原理的前提下,还可以做出若干改进和变形,这些改进和变形也应视为本发明的保护范围。

Claims (7)

1.一种基于神经网络和分布式缓存的Kubernetes集群资源混合调度方法,其特征在于,该方法包括如下步骤:
S1、通过采集应用历史运行情况相关信息,包括资源使用情况、高并发访问时间和资源利用率,训练BP神经网络,构建基于kubernetes的资源预测模型;对应用当前所需要使用的资源进行预测,并将相应预测结果输入到分布式缓存系统;
S2、利用多个计算节点本地的内存和磁盘资源,通过分布式缓存技术,构建统一的分布式缓存系统,将预测结果存储在分布式缓存系统中;
S3、资源调度算法从分布式缓存系统获取预测结果,针对不同种类的资源,资源动态调度算法会生成一系列资源借贷决策,并将决策响应到容器组的请求资源限制中;
其中,
kubernetes对应用资源进行调度,创建容器组,使应用正常运行;当Kubernetes上的应用实例以容器组的形式调度到集群某个节点上运行起来后,根据资源调度算法决定该容器组和容器的资源配额;
资源调度算法根据借贷原则,对于任意时刻t,将应用实例对某种资源R的需求表示为一个元组:
(Rcur,Rlimit,Rdr,Rcr,Rfuture)
其中,Rcur表示实例当前对资源R的使用量,Rlimit表示实例对资源R的最大使用量,Rdr表示该实例从其它实例借来的资源R的数值,Rcr表示该实例将资源R借给其它实例的数值,Rfuture表示未来某个时间段内实例对资源R的平均使用量;
定义借方为:从其它实例借用了资源;
定义贷方为:将资源借出给了其它实例;
对于该元组,定义的限制条件如下:
其中条件(1)表示Rdr和Rcr的值至少需要有一个为0,这样保证应用实例处于借方的状态或者贷方的状态两者之一;条件(2)表示实例当前对资源R的使用量不得超过配额的最大使用量与借到量之和的值;条件(3)表示实例当前对资源R的使用量不得超过配额的最大使用量和借出量之差的值;条件(4)中Rfuture为预测模型中对资源R的预测值,σ为估计系数,取值范围是0到1;条件(5)表示如果实例对资源R使用量的预测值为-1,暂时不参与资源的动态调度;
对于节点上所有应用实例间的动态资源调度,由一个称为动态调度管理器的程序来负责,动态调度管理器根据借贷关系在每一个的调度周期进行一轮资源的动态调度;
令Rtemp为动态调度管理器临时持有的资源R的数值,该值在每一轮调度开始之前和结束之后都必须为0;动态调度管理器的一次动态调度过程如下:
在开始调度之前,首先清理目前已经被删除、停止运行或者出现异常崩溃的实例,即收回这些实例借出去以及借进来的资源;
遍历所有实例,将所有可以借出资源R的实例的资源总量暂存起来,可借出的资源量为Rcredit=Rlimit+Rdr+Rcr-max(Rfuture,Rcur(1+θ)),将其先交给动态调度管理器保管,Rcredit表示实例的可借资源量,其中θ可变因子,取值范围在0-1之间;
遍历所有实例,因为可借的资源要优先满足所有上一轮作为贷方实例的需求量,Rdepit表示实例的资源需求量,则有Rtemp=Rtemp-Rdepit;如果可借资源刚好满足所有这些实例的需求量,那就直接执行调度决策这一步;如果还剩下可借资源就执行下一步调度;如果不能满足,即可借资源量小于实例的资源需求量,就根据空缺的资源需求量将已经分配给借方的资源按比例回收,即将借给借方的资源按照贷方目前资源需求量,回收一部分,然后执行调度策略;
如果还剩下可借的资源,将剩下需要资源的实例按需求量从大到小排序;然后依次满足这些实例的需求量;满足按需求量从大到小分配,如有剩下的可借资源,则按比例返还给这一轮的贷方,然后执行调度策略;如果可用资源恰好分配完就直接执行调度策略;
将最终所有的调度决策全部应用到容器组以及容器组里运行的容器中,再等待下一个周期的调度。
2.如权利要求1所述的基于神经网络和分布式缓存的Kubernetes集群资源混合调度方法,其特征在于,BP神经网络的学习过程包括信号的正向传播与误差的反向传播;正向传播时,样本从输入层传入,经各隐含层逐层进行处理后,传向输出层,若输出层的实际输出与期望输出不符,则进入误差的反向传播阶段;反向传播时,利用sigmoid函数,将误差反传平摊到各隐含层,以此不断修正误差,直到函数收敛。
3.如权利要求2所述的基于神经网络和分布式缓存的Kubernetes集群资源混合调度方法,其特征在于,BP神经网络的训练过程包括:对应用相关数据进行采集整理,建立神经网络结构后,从训练数据集中选取一个batch的数据进行神经网络参数训练,采用s igmoid函数作为BP网络的训练函数基准,不断修改神经网络的权重参数,当训练达到一定次数后,对测试数据集误差进行测试;如果达到条件1训练次数上限,则修改神经网络结构;如果达到条件2误差不满足要求,则返回上一步骤对数据重新进行神经网络参数训练;如果达到条件3误差满足要求,则训练过程结束,得到定型的能够预测应用资源的神经网络,能用于使用训练结果对未知数据进行预测。
4.如权利要求1所述的基于神经网络和分布式缓存的Kubernetes集群资源混合调度方法,其特征在于,分布式缓存系统采用内存文件系统Alluxio。
5.如权利要求4所述的基于神经网络和分布式缓存的Kubernetes集群资源混合调度方法,其特征在于,Alluxio系统包括客户端、控制节点与工作者组件,通过控制节点与工作者组件实现在客户端应用与存储之间的高速数据交换。
6.如权利要求1所述的基于神经网络和分布式缓存的Kubernetes集群资源混合调度方法,其特征在于,条件(2)和条件(3)由Docker容器的资源限制、隔离机制和Kubernetes对容器组和多租户的资源限制机制来保证。
7.如权利要求1所述的基于神经网络和分布式缓存的Kubernetes集群资源混合调度方法,其特征在于,对于实例内存资源的采集和预测都采用调度时间点前后一段时间内的最大值,而其它资源基于一段时间内的平均值来采集和预测。
CN202111070586.5A 2021-09-13 2021-09-13 基于神经网络和分布式缓存的Kubernetes集群资源混合调度方法 Active CN113806018B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202111070586.5A CN113806018B (zh) 2021-09-13 2021-09-13 基于神经网络和分布式缓存的Kubernetes集群资源混合调度方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111070586.5A CN113806018B (zh) 2021-09-13 2021-09-13 基于神经网络和分布式缓存的Kubernetes集群资源混合调度方法

Publications (2)

Publication Number Publication Date
CN113806018A CN113806018A (zh) 2021-12-17
CN113806018B true CN113806018B (zh) 2023-08-01

Family

ID=78941108

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111070586.5A Active CN113806018B (zh) 2021-09-13 2021-09-13 基于神经网络和分布式缓存的Kubernetes集群资源混合调度方法

Country Status (1)

Country Link
CN (1) CN113806018B (zh)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111950770A (zh) * 2020-07-20 2020-11-17 上海淇馥信息技术有限公司 一种管理资源返还辅助策略的方法、装置和电子设备
CN114780170B (zh) * 2022-04-11 2023-07-21 远景智能国际私人投资有限公司 容器资源的配置方法、装置、设备及存储介质
CN115237570B (zh) * 2022-07-29 2023-06-16 上海佑瞻智能科技有限公司 一种基于云计算的策略生成方法及云平台
CN115543577B (zh) * 2022-08-08 2023-08-04 广东技术师范大学 基于协变量的Kubernetes资源调度优化方法、存储介质及设备
CN115061702A (zh) * 2022-08-19 2022-09-16 荣耀终端有限公司 一种ide管理方法及电子设备
CN116610534B (zh) * 2023-07-18 2023-10-03 贵州海誉科技股份有限公司 一种基于Kubernetes集群资源的改进预测性弹性伸缩方法

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11868896B2 (en) * 2016-01-27 2024-01-09 Microsoft Technology Licensing, Llc Interface for working with simulations on premises
CN108092797A (zh) * 2017-11-21 2018-05-29 北京奇艺世纪科技有限公司 一种容器管理方法及装置
US20210064432A1 (en) * 2018-02-05 2021-03-04 Telefonaktiebolaget Lm Ericsson (Publ) Resource needs prediction in virtualized systems: generic proactive and self-adaptive solution
US20190317825A1 (en) * 2018-04-16 2019-10-17 Kazuhm, Inc. System for managing deployment of distributed computing resources
CN111262906B (zh) * 2020-01-08 2021-05-25 中山大学 分布式边缘计算服务系统下的移动用户终端任务卸载方法
CN111984381A (zh) * 2020-07-10 2020-11-24 西安理工大学 一种基于历史数据预测的Kubernetes资源调度优化方法
CN112000421B (zh) * 2020-07-15 2023-11-17 北京计算机技术及应用研究所 基于超融合架构的管理调度技术
CN112698925B (zh) * 2021-03-24 2021-06-08 江苏红网技术股份有限公司 一种服务器集群的容器混合运行处理方法
CN113094116B (zh) * 2021-04-01 2022-10-11 中国科学院软件研究所 一种基于负载特征分析的深度学习应用云配置推荐方法及系统
CN112799854B (zh) * 2021-04-15 2021-07-13 腾讯科技(深圳)有限公司 任务处理方法、装置、电子设备及可读存储介质

Also Published As

Publication number Publication date
CN113806018A (zh) 2021-12-17

Similar Documents

Publication Publication Date Title
CN113806018B (zh) 基于神经网络和分布式缓存的Kubernetes集群资源混合调度方法
CN108829494B (zh) 基于负载预测的容器云平台智能资源优化方法
US11507430B2 (en) Accelerated resource allocation techniques
CN109491790B (zh) 基于容器的工业物联网边缘计算资源分配方法及系统
CN110389838A (zh) 一种适用于虚拟资源的实时调度和在线迁移管控方法
Tang et al. Efficient auto-scaling approach in the telco cloud using self-learning algorithm
TWI725744B (zh) 透過多層次相關性建立系統資源預測及資源管理模型的方法
CN110231976B (zh) 一种基于负载预测的边缘计算平台容器部署方法及系统
KR20220006490A (ko) 워크로드 동적 자원 배치 및 최적화 수행관리를 위한 하이브리드 클라우드 자원 배분 방법
CN104657220A (zh) 混合云中基于截止时间和费用约束的调度模型及方法
US11757790B2 (en) Method and server for adjusting allocation of computing resources to plurality of virtualized network functions (VNFs)
CN109783225B (zh) 一种多租户大数据平台的租户优先级管理方法及系统
CN104050043A (zh) 基于共享缓存感知的虚拟机调度方法和装置
CN112799817A (zh) 一种微服务资源调度系统和方法
CN111813502B (zh) 面向工业边缘节点的计算资源管理调度方法
CN113110914A (zh) 一种基于微服务架构的物联网平台构建方法
CN107992353A (zh) 一种基于最小迁移量的容器动态迁移方法及系统
CN112416578B (zh) 一种基于深度强化学习的容器云集群资源利用优化方法
CN116069512B (zh) 一种基于强化学习的Serverless高效资源分配方法及系统
CN115543577B (zh) 基于协变量的Kubernetes资源调度优化方法、存储介质及设备
CN115168027A (zh) 一种基于深度强化学习的算力资源度量方法
CN115543626A (zh) 采用异构计算资源负载均衡调度的电力缺陷图像仿真方法
ElMekkawy et al. Real-time scheduling with deadlock avoidance in flexible manufacturing systems
Yang et al. Design of kubernetes scheduling strategy based on LSTM and grey model
CN115562841B (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
GR01 Patent grant
GR01 Patent grant