一种基于使用量预测的容器资源动态调度方法及系统技术方案

技术编号:35064148 阅读:23 留言:0更新日期:2022-09-28 11:20
本发明专利技术公开了一种基于使用量预测的容器资源动态调度方法及系统,采用基于Transformer的容器资源使用量预测模型对应用资源的使用进行预测,程序应用在不同时间节点对于CPU的使用率、内存使用量、网络使用量、磁盘使用量的需求也不相同,将这些资源的使用情况按时间序列进行采集,将其标准化后按合适的时间窗口整理成时序特征序列并将其输入到预测模型行中进行容器资源使用量预测;然后在预测结果的基础上计算出下一个周期期望的副本数,并与响应式的伸缩算法计算出当前期望的副本数进行比较,根据HPA策略进行容器资源动态调度,在保证可靠性的同时,达到提高系统的资源使用率、降低系统宕机风险的目的。降低系统宕机风险的目的。降低系统宕机风险的目的。

【技术实现步骤摘要】
一种基于使用量预测的容器资源动态调度方法及系统


[0001]本专利技术涉及容器资源调度
,具体涉及一种基于使用量预测的容器资源动态调度方法及系统。

技术介绍

[0002]目前,越来越多的应用程序被部署在容器中。通常,为了使托管的应用程序可以安稳运行,我们都会为其调配充足的资源。但大多数情况下托管的应用程序不是以最高负载的状态运行,并且CPU、内存等各项资源也不会同时处于最高负载的状态,因此预先调配的资源在大多数时候会处于空闲状态,从而造成了资源的浪费。此外当应用处在负载较高的状态,预先分配的资源也不一定够用。目前容器中的应用都是依靠宿主机的操作系统进行资源分配、限制和设置权重。这样做会出现的问题就是:每个容器的资源分配权重和限制都是一开始固定的,不能进行动态调整,很容易造成资源的浪费以及出现资源不足的情况。
[0003]为了解决此类问题,在云计算中通常使用特定的预测算法来预测虚拟机和应用的资源需求,并提前做好资源分配优化,来提高资源的使用率和服务质量,帮助提前做好资源分配,优化Docker的资源管理。在现有的Kubernetes系统中,资源调度的工作主要由Scheduler组件负责。在应用首次被调度时,由Scheduler根据应用的资源配置情况,在集群内所有的Node节点上选择一个最适合的Node节点来部署,即静态调度策略,该调度机制虽然简单,却缺乏灵活性。首先,该机制只能在应用初次部署时进行资源配置,无法在应用运行时按需对已分配的资源进行动态调整,这样会导致主机资源使用率低。其次,由于缺乏对资源使用情况的预测,报警机制不能在资源指标违例之前发出警报,Scheduler也不能对应用在出现资源消耗瓶颈之前进行资源调度或实例自动伸缩。而且Scheduler没有考虑应用对资源的敏感程度,很容易造成Node节点上对单一资源的瓶颈。因此必须从资源利用最大化、应用对资源的敏感度等角度出发来制定相应的资源管理机制和调度策略,使其能够在应用出现瓶颈之前就能预先触发资源动态调度和实例自动伸缩,从而提高系统资源的使用率,增加调度的灵活性。

技术实现思路

[0004]本专利技术的目的在于提供一种基于使用量预测的容器资源动态调度方法及系统,能够提高系统资源的使用率,增加调度的灵活性,实现容器能够对部署在容器上的应用程序的资源需求预先响应。
[0005]实现本专利技术目的的技术解决方案为:
[0006]一种基于使用量预测的容器资源动态调度方法,包括步骤:
[0007]设置扩容或者缩容的阈值,并且设置缩容判断次数的阈值以及监控周期;
[0008]监控集群中的容器和每一个节点的资源使用情况,对每个节点的机器上的资源及容器进行实时的监控和性能数据采集,获取应用所有副本的资源指标及使用率;
[0009]基于资源指标及使用率聚合系统状态、系统资源指标和应用程序性能指标,并将
聚合好的数据保存到对应的文件中;
[0010]计算应用历史的负载序列数据,通过深度学习算法搭建容器资源使用量预测模型,对未来时刻的容器资源使用量进行预测;
[0011]根据预测得到的负载数据计算出下一周期期望的副本数,同时采用响应式的伸缩算法计算出当前期望的副本数,两者比较后确定最终的副本数作为HPA策略的输入,进行容器资源的动态收缩。
[0012]进一步地,所述性能数据包括CPU使用情况、内存使用情况、网络吞吐量以及文件系统的使用情况。
[0013]进一步地,所述监控集群中的容器和每一个节点的资源使用情况,对每个节点的机器上的资源及容器进行实时的监控和性能数据采集,获取应用所有副本的资源指标及使用率具体步骤为:
[0014]步骤2

1:Heapster采用Kubernetes从Master节点获取系统中所有的节点信息列表;
[0015]步骤2

2:在每个节点中,Kubelet使用cAdvisor收集部署在该节点上的容器和整个物理节点的资源利用信息;
[0016]步骤2

3:获取每个节点的资源利用信息后,Heapster将这些数据存储数据库中,在InfluxDB中新建一个名为“k8s”的数据库,通过Grafana查询“k8s”数据库中的数据,并且将查询数据显示在图形界面上。
[0017]进一步地,所述基于资源指标及使用率聚合系统状态、系统资源指标和应用程序性能指标,并将聚合好的数据保存到对应的文件中具体包括步骤:
[0018]步骤3

1:使用Kubernetes CLI kubectl在系统中获取信息,从整个系统中检索有关节点、名称空间、Pod和服务的信息;对于每个命名空间,比较每个Pod和每个服务的标签,然后记录Pod和服务的映射;
[0019]步骤3

2:通过InfluxDB中的HTTP接口以及InfluxDB数据库的InfluxQL语句从数据库中查询存储在数据库中的资源指标值;
[0020]步骤3

3:将查询的数据整理保存到JSON文件中。
[0021]进一步地,所述计算应用历史的负载序列数据为:采用动态加权的来计算每一个应用的负载,综合考虑到每一种资源指标,根据每一种资源指标的使用率进行加权计算,得出应用的综合负载序列数据。
[0022]进一步地,所述计算应用历史的负载序列数据具体包括步骤:
[0023]假设在采集到的数据中在某一时刻一个应用有n个Pod副本,表示为P=[p1,p2,

,p
d
],每一个Pod副本的资源请求量为R=[r1,r2,

,r
d
],资源使用量为Q=[q1,q2,

,q
d
],另D=[1,2,3,

,d]表示每一个Pod副本的资源维度;
[0024]每一个应用的资源使用率表示为U=[u1,u2,

,u
d
],其计算公式如下:
[0025][0026]每一维资源的权重为:
[0027][0028]则综合负载为:
[0029][0030]将上式计算的某一时刻的负载加入到负载队列中,直到负载队列里面的序列个数达到预先设置的大小时,更新负载队列,将最早的那个负载值从队列里面删除,将最新计算的负载值加入到负载队列里面。
[0031]进一步地,所述容器资源使用量预测模型的输入为CPU使用率、内存使用量、网络使用量和磁盘使用量,输出为容器负载,其包括编码器和解码器;所述编码器由6个同构的网络层堆叠而成,每一个网络层包含有多头注意力子层和基于位置的前馈神经网络;所述解码器和编码器结构一致,在输入序列提取特征时采用的是Masked多头注意力层,整个模型使用残差连接和规范化处理对各层输出优化。
[0032]进一步地,所述容器资源使用量预测模型将模型输入数据预处理,得到输入X=[x1,x2,..本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于使用量预测的容器资源动态调度方法,其特征在于,包括步骤:设置扩容或者缩容的阈值,并且设置缩容判断次数的阈值以及监控周期;监控集群中的容器和每一个节点的资源使用情况,对每个节点的机器上的资源及容器进行实时的监控和性能数据采集,获取应用所有副本的资源指标及使用率;基于资源指标及使用率聚合系统状态、系统资源指标和应用程序性能指标,并将聚合好的数据保存到对应的文件中;计算应用历史的负载序列数据,通过深度学习算法搭建容器资源使用量预测模型,对未来时刻的容器资源使用量进行预测;根据预测得到的负载数据计算出下一周期期望的副本数,同时采用响应式的伸缩算法计算出当前期望的副本数,两者比较后确定最终的副本数作为HPA策略的输入,进行容器资源的动态收缩。2.权利要求1所述的一种基于使用量预测的容器资源动态调度方法,其特征在于:所述性能数据包括CPU使用情况、内存使用情况、网络吞吐量以及文件系统的使用情况。3.权利要求1所述的一种基于使用量预测的容器资源动态调度方法,其特征在于:所述监控集群中的容器和每一个节点的资源使用情况,对每个节点的机器上的资源及容器进行实时的监控和性能数据采集,获取应用所有副本的资源指标及使用率具体步骤为:步骤2

1:Heapster采用Kubernetes从Master节点获取系统中所有的节点信息列表;步骤2

2:在每个节点中,Kubelet使用cAdvisor收集部署在该节点上的容器和整个物理节点的资源利用信息;步骤2

3:获取每个节点的资源利用信息后,Heapster将这些数据存储数据库中,在InfluxDB中新建一个名为“k8s”的数据库,通过Grafana查询“k8s”数据库中的数据,并且将查询数据显示在图形界面上。4.权利要求1所述的一种基于使用量预测的容器资源动态调度方法,其特征在于:所述基于资源指标及使用率聚合系统状态、系统资源指标和应用程序性能指标,并将聚合好的数据保存到对应的文件中具体包括步骤:步骤3

1:使用Kubernetes CLI kubectl在系统中获取信息,从整个系统中检索有关节点、名称空间、Pod和服务的信息;对于每个命名空间,比较每个Pod和每个服务的标签,然后记录Pod和服务的映射;步骤3

2:通过InfluxDB中的HTTP接口以及InfluxDB数据库的InfluxQL语句从数据库中查询存储在数据库中的资源指标值;步骤3

3:将查询的数据整理保存到JSON文件中。5.权利要求1所述的一种基于使用量预测的容器资源动态调度方法,其特征在于:所述计算应用历史的负载序列数据为:采用动态加权的来计算每一个应用的负载,综合考虑到每一种资源指标,根据每一种资源指标的使用率进行加权计算,得出应用的综合负载序列数据。6.权利要求5所述的一种基于使用量预测的容器资源动态调度方法,其特征在于:所述计算应用历史的负载序列数据具体包括步骤:假设在采集到的数据中在某一时刻一个应用有n个Pod副本,表示为P=[p1,p2,

,p
d
],每一个Pod副本的资源请求量为R=[r1,r2,

,r
d
],资源使用量为Q=[q1,q2,

,q
d
],另D=
[1,2,3,

,d]表示每一个Pod副本的资源维度;每一个应用的资源使用率表示为U=[u1,u2,

,u
d
],其计算公式如下:每一维资源的权重为:则综合负载为:将上式计算的某一时刻的负载加入到负载队列中,直到负载队列里面的序列个数达到预先设置的大小时,更新负载队列,将最早的那个负载值从队列里面删除,将最新计算的负载值加入到负载队列里面。7.权利要求1所述的一种基于使用量预测的容器资源动态调度方法,其特征在于:所述容器资源使用量预测模型的输入为CPU使用率、内存使用量、网络使用量和磁盘使用量,输出为容器负载,其包括编码器和解码器;所述编码器由6个同构的网络层堆叠而成,每一个网络层包含有多头注意力子层和基于位置的前馈神经网络;所述解码器...

【专利技术属性】
技术研发人员:朱大鹏刘彩云姜厚禄侍守创胡昌平胡翔宇徐雷左刚单文金杨庆
申请(专利权)人:中国船舶重工集团公司第七一六研究所江苏杰瑞信息科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1