CN113010260A - 容器数量弹性伸缩方法以及容器数量弹性伸缩方法系统 - Google Patents

容器数量弹性伸缩方法以及容器数量弹性伸缩方法系统 Download PDF

Info

Publication number
CN113010260A
CN113010260A CN202011052586.8A CN202011052586A CN113010260A CN 113010260 A CN113010260 A CN 113010260A CN 202011052586 A CN202011052586 A CN 202011052586A CN 113010260 A CN113010260 A CN 113010260A
Authority
CN
China
Prior art keywords
containers
prediction
index
predicted value
contracting
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.)
Granted
Application number
CN202011052586.8A
Other languages
English (en)
Other versions
CN113010260B (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.)
E Capital Transfer Co ltd
Original Assignee
E Capital Transfer Co ltd
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 E Capital Transfer Co ltd filed Critical E Capital Transfer Co ltd
Priority to CN202011052586.8A priority Critical patent/CN113010260B/zh
Publication of CN113010260A publication Critical patent/CN113010260A/zh
Application granted granted Critical
Publication of CN113010260B publication Critical patent/CN113010260B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • 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/45575Starting, stopping, suspending or resuming virtual machine instances
    • 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/45591Monitoring or debugging support

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

本发明涉及容器数量弹性伸缩方法以及系统。该方法包括下述步骤:数据记录步骤,记录Kubernetes集群的历史交易时序数据;指标预测步骤,对所述数据记录步骤记录的历史交易时序数据使用规定算法模型进行建模而形成预测模型,使用所述预测模型以及所述历史交易时序数据来预测未来规定时间的交易时序数据,并且建立未来规定时间的预测指标;以及动态分配步骤,根据所述预测指标对于所述Kubernetes集群中的容器数量进行弹性伸缩。根据本发明,能够提前预测资源需求并提前对资源分配进行调整。

Description

容器数量弹性伸缩方法以及容器数量弹性伸缩方法系统
技术领域
本发明涉及计算机技术,具体地涉及一种基于时序数据预测模型的容器数量弹性伸缩方法以及基于时序数据预测模型的容器数量弹性伸缩系统。
背景技术
对于各种IT系统,其所承载的负载不是一成不变的。当用户数量较多时,其负载会增高,导致所需要的资源(如cpu、内存等)也相应增加。反之,当用户数量较少时,其负载降低,所需资源相应减少。
为了保证服务质量,传统的解决方法是按照服务所需的最大资源进行分配,并一直保持这种资源配置。充足的资源保证了IT系统面对高负载仍然能够保证服务质量。然而it系统的服务高峰期往往比较短,大多数时间负载并不高。在系统处于低负载时,资源需求降低,大量已分配的资源得不到利用。这些无法利用的资源会带来大量的采购、维护及电力成本,给企业造成损失,所以it工程师一直通过各种方法减少资源浪费。
发明内容
鉴于上述问题,本发明旨在提出一种能够提前预测负载情况并提前进行资源准备的基于时序数据预测模型的容器数量弹性伸缩方法以及基于时序数据预测模型的容器数量弹性伸缩系统。
本发明的一方面的容器数量弹性伸缩方法,其特征在于,包括下述步骤:
数据记录步骤,记录Kubernetes集群的历史交易时序数据;
指标预测步骤,对所述数据记录步骤记录的历史交易时序数据使用规定算法模型进行建模而形成预测模型,使用所述预测模型以及所述历史交易时序数据来预测未来规定时间的交易时序数据,并且建立未来规定时间的预测指标;以及
动态分配步骤,根据所述预测指标对于所述Kubernetes集群中的容器数量进行弹性伸缩。
可选地,在所述数据记录步骤中,采用Prometheus、cAdvisor以及Zabbix中的任意一种采集历史交易时序数据。
可选地,在所述指标预测步骤中,使用Prophet算法模型或者ARIMA模型进行建模。
可选地,在所述指标预测步骤中,以接口形式提供对预测到的未来规定时间的预测指标的查询。
可选地,在所述数据记录步骤中采用Prometheus采集历史交易时序数据,在所述指标预测步骤中使用Prophet算法模型进行建模。
可选地,在所述动态分配步骤中,将所述预测指标聚合到Kubernetes API服务器,以提供水平自动伸缩即HPA查询的目标数据,并且根据所述HPA查询的目标数据以及所述预测指标对Kubernetes集群中的容器数量进行弹性伸缩。
可选地,在所述动态分配步骤中,对Kubernetes集群中的容器数量进行弹性伸缩是通过由HPA对象自动向Kubernetes发出命令以调整Kubernetes集群中的容器数量。
可选地,在所述动态分配步骤中,判断当前的Kubernetes集群中的容器数量是否满足第一规定时间的预测值,如果容器数量不满足第一规定时间的预测值则进行调整容器数量以满足第一规定时间的预测值,如果容器数量满足第一规定时间的预测值则进一步判断是否满足第二规定时间的预测值,如果第一规定时间的预测值小于第二规定时间的预测值,则不进行容器数量调整,否则进行调整容器数量调整以满足第一规定时间的预测值。
本发明一方面的容器数量弹性伸缩系统,其特征在于,包括:
数据记录模块,用于记录Kubernetes集群的历史交易时序数据;
指标预测模块,用于使用规定算法模型对所述数据记录模块采集的历史交易时序数据进行建模而形成预测模型,使用所述预测模型来预测未来规定时间的交易时序数据并且建立预测指标;以及
动态分配模块,用于根据所述预测指标对于所述Kubernetes集群中的容器数量进行弹性伸缩。
可选地,所述数据记录模块采用Prometheus、cAdvisor以及Zabbix中的任意一种采集历史交易时序数据。
可选地,所述指标预测模块使用Prophet算法模型或者ARIMA模型进行建模。
可选地,所述指标预测模块以接口形式提供对预测到的未来规定时间的预测指标的查询。
可选地,所述动态分配模块将所述预测指标聚合到Kubernetes API服务器,以提供水平自动伸缩即HPA查询的目标数据,并且根据所述HPA查询的目标数据以及所述预测指标对Kubernetes集群中的容器数量进行弹性伸缩。
可选地,在所述动态分配模块中,判断当前的Kubernetes集群中的容器数量是否满足第一规定时间的预测值,如果容器数量不满足第一规定时间的预测值则调整容器数量以满足第一规定时间的预测值,如果容器数量满足第一规定时间的预测值则进一步判断是否满足第二规定时间的预测值,如果第一规定时间的预测值小于第二规定时间的预测值,则不进行容器数量调整,否则进行调整容器数量调整以满足第一规定时间的预测值。
本发明的计算机可读介质,其上存储有计算机程序,其特征在于,该计算机程序被处理器执行时实现上述的容器数量弹性伸缩方法。
本发明的计算机设备,包括存储模块、处理器以及存储在存储模块上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现上述的容器数量弹性伸缩方法。
附图说明
图1是表示本发明的一个方面的基于时序数据预测模型的容器数量弹性伸缩方法的流程示意图。
图2是表示本发明一个发明的基于时序数据预测模型的容器数量弹性伸缩系统的结构框图。
图3是表示本发明一个实施方式的基于时序数据预测模型的容器数量弹性伸缩系统的结构框图。
图4是表示本发明的一个实施方式的基于时序数据预测模型的容器数量弹性伸缩方法的流程示意图。
具体实施方式
下面介绍的是本发明的多个实施例中的一些,旨在提供对本发明的基本了解。并不旨在确认本发明的关键或决定性的要素或限定所要保护的范围。
出于简洁和说明性目的,本文主要参考其示范实施例来描述本发明的原理。但是,本领域技术人员将容易地认识到,相同的原理可等效地应用于所有类型的基于时序数据预测模型的容器数量弹性伸缩方法以及基于时序数据预测模型的容器数量弹性伸缩系统,并且可以在其中实施这些相同的原理,以及任何此类变化不背离本专利申请的真实精神和范围。
而且,在下文描述中,参考了附图,这些附图图示特定的示范实施例。在不背离本发明的精神和范围的前提下可以对这些实施例进行电、机械、逻辑和结构上的更改。此外,虽然本发明的特征是结合若干实施/实施例的仅其中之一来公开的,但是如针对任何给定或可识别的功能可能是期望和/或有利的,可以将此特征与其他实施/实施例的一个或多个其他特征进行组合。因此,下文描述不应视为在限制意义上的,并且本发明的范围由所附权利要求及其等效物来定义。
诸如“具备”和“包括”之类的用语表示除了具有在说明书和权利要求书中有直接和明确表述的单元(模块)和模块以外,本发明的技术方案也不排除具有未被直接或明确表述的其它单元(模块)和模块的情形。
在对本发明的基于时序数据预测模型的容器数量弹性伸缩方法以及基于时序数据预测模型的容器数量弹性伸缩系统进行说明之前,首先对于将要出现的一些相关技术用语进行简单说明。
Docker(容器技术)是一组Paas(平台即服务)产品,使用操作系统级别的虚拟化将软件、库和配置文件捆绑在一起来进行软件交付。
Kubernetes是用于自动部署、扩展和管理容器化应用程序的开源系统。
Pod是Kubernetes应用程序的基本执行单元,其封装了应用程序容器以及存储、网络等相关依赖资源。每个Pod表示运行给定应用程序的单个实例,如果希望横向扩展应用程序,则应该在Kubernetes集群中运行多个Pod。
在Kubernetes集群中,Pod是所有业务类型的基础,它是一个或多个容器的组合。这些容器共享存储、网络和命名空间,以及如何运行的规范。在Pod中,所有容器都被统一安排和调度,并运行在共享的上下文中。对于具体应用而言,Pod是它们的逻辑主机,Pod包含业务相关的多个应用容器。Kubernetes不只是支持Docker容器,它也支持其他容器。Pod 的上下文可以理解成多个Linux命名空间的联合。
Deployments是用于为Pod和ReplicaSet提供描述性更新方式的控制器资源对象。通过更新Deployments来创建新的ReplicaSet,以受控速率将Pod从旧的ReplicaSet移动到新的ReplicaSet。 ReplicaSet是用于确保在任何时候都有特定数量的Pod副本处于运行状态的控制器资源对象,主要被Deployments 用作协调 Pod 创建、删除和更新的机制。
HPA(HorizontalPodAutoscaler,水平自动伸缩)是Kubernetes的一种资源对象,能够根据某些指标对在Deployment等集合中的Pod数量进行动态伸缩,使运行在上面的服务对指标的变化有一定的自适应能力。HPA特性由Metrics API和控制器实现。控制器根据HPA的定义,从resource metrics API或custom metrics API获取指标,将该指标与目标设定值相比较,生成一个缩放比例。
Prometheus是一个开源的服务监控系统和时间序列数据库,使用Go语言开发,可以与Kubernetes集成,从Kubernetes部署的Pod中采集数据。k8s-prometheus-adapter是部署在Kubernetes集群中用于为HPA提供custom metrics API的运行实例。
时间序列是指将同一统计指标的数值按其发生的时间先后顺序排列而成的数列。
时间序列数据库是用于存储时间序列的专用数据库。
Prophet是Facebook开源的用于时间序列分析的模型,适合用于拟合具有较强周期性的数据,对缺失值、趋势便宜和异常值都有较好的支持。
Kubernetes-apiserver即指Kubernetes API服务器,为API对象验证和配置数据,这些对象包含Pod、Service、ReplicationController等等。
接着,对于本发明的基于时序数据预测模型的容器数量弹性伸缩方法以及基于时序数据预测模型的容器数量弹性伸缩系统的概要进行说明。
根据对现有技术的研究,本发明的发明人发现了现有技术的问题在于:对系统负载的调整具有滞后性,这种滞后主要是由于新资源的分配需要时间,例如在系统负载逐渐升高阶段,Kubernetes首先感知到cpu使用率升高,再根据当前情况计算出需要增加的资源,然后完成一次资源分配,这个过程一般需要几分钟时间,可以看出,当前的资源分配实际上是针对几分钟之前的系统负载情况做出的,具有滞后性。如果系统负载长时间持续增长,那么整个增长过程中,所分配的资源会一直低于所需要资源,同时,系统资源负载不能完全契合实际业务情况,即可能出现业务处理能力已经达到瓶颈时,cpu使用率并没达到触发HPA的阈值,导致资源调整不及时。
针对这样的技术问题,在本发明中,基于实际业务数据,并结合Prophet算法对数据进行预测,由此能够提前掌握业务的负载情况,保证在业务负载增大时容器资源也能够提前准备好。具体地,旨在实现在业务高峰期开启较多的服务以保证服务质量,在业务低峰期开启较少的服务以降低资源使用,在本发明中通过预测业务访问量,以开启相应数量的服务,从而达到提高服务质量并同时降低资源使用的目的。
在本发明中,主要采用的技术手段是使用Prophet算法,对一段时期内的历史业务指标进行学习,预测出今后一段时间的业务指标发展情况。根据预测结果,在系统运行过程中动态调整资源分配。本发明主要涉及Kubernetes容器架构,本发明的基于时序数据预测模型的容器数量弹性伸缩方法以及基于时序数据预测模型的容器数量弹性伸缩系统能够适合于例如在线交易系统(OLTP),在金融行业有广泛的应用场景,例如支付、账户类系统。
图1是表示本发明的一个方面的基于时序数据预测模型的容器数量弹性伸缩方法的流程示意图。
如图1所示,本发明的一个方面的基于时序数据预测模型的容器数量弹性伸缩方法,包括下述步骤:
数据记录步骤S100:记录Kubernetes集群的历史交易时序数据;
指标预测步骤S200:对所述数据记录步骤记录的历史交易时序数据使用规定算法模型进行建模而形成预测模型,使用所述预测模型以及所述历史交易时序数据来预测未来规定时间的交易时序数据,并且建立未来规定时间的预测指标;以及
动态分配步骤S300:根据所述预测指标对于所述Kubernetes集群中的容器数量进行弹性伸缩。
其中,在数据记录步骤S100中,采用Prometheus、cAdvisor以及Zabbix中的任意一种记录历史交易时序数据。其中,由于在k8s领域Prometheus的兼容性和适用性最好,可以优选采用Prometheus来记录历史交易时序数据。
在指标预测步骤S200中,使用Prophet算法模型或者ARIMA模型进行建模而形成预测模型。作为一个示例,预测模型的输入数据是单位时间内业务系统发生的交易事务总数、以及CPU、内存等性能数据,其输出数据是下一个单位时间内业务系统预计会产生的交易事务总数。
而且,在指标预测步骤S200中,以接口形式提供对预测到的未来规定时间的预测指标的查询。通过以接口形式提供,则其他容器可以通过HTTP GET方法访问预测模型容器固定地址,通常为http://<预测容器地址>/metrics,返回值即某一时间段的预测数据。其优点在于,便于Prometheus监控采集(Prometheus默认访问地址http://<预测容器地址>/metrics来进行指标采集)。
在指标预测步骤S200中建立预测指标的目的在于,预测指标是HPA对容器进行弹性伸缩的依据,传统方式下,HPA仅根据Pod的实时负载情况控制容器数量,这种方式不能准确反映业务是否真正即将达到高峰。在本发明中,根据Prophet算法建立的预测模型计算出预测数据,再由Prometheus监控采集保存为时序数据的指标,例如,以当前时间为12:00为例,预测模型预测出下一分钟业务交易数据为100笔,则Prometheus保存12:01的预测指标为100。
在动态分配步骤S300中,将所述预测指标聚合到Kubernetes API服务器,以提供水平自动伸缩即HPA查询的目标数据,并且根据所述HPA查询的目标数据以及所述预测指标对Kubernetes集群中的容器数量进行弹性伸缩。
具体地,将所述预测指标聚合到Kubernetes API服务器的过程包括:修改kube-apiserver的启动项以开启聚合功能;创建APIService对象,用于将自定义的API对象和Prometheus的查询目标绑定;使用k8s-prometheus-adapter镜像部署custom-metrics-apiserver对象到Kubernetes集群中,该对象告知Prometheus需要采集的目标数据以提供HPA查询的目标数据。
而且,在动态分配步骤S300中,对Kubernetes集群中的容器数量进行弹性伸缩是通过由HPA对象自动向Kubernetes发出命令以调整Kubernetes集群中的容器数量。
在动态分配步骤S300中,判断当前的Kubernetes集群中的容器数量是否满足第一规定时间的预测值,如果容器数量不满足第一规定时间的预测值则进行调整容器数量以满足第一规定时间的预测值,如果容器数量满足第一规定时间的预测值则进一步判断是否满足第二规定时间的预测值,如果第一规定时间的预测值小于第二规定时间的预测值,则不进行容器数量调整,否则进行调整容器数量调整以满足第一规定时间的预测值。
图2是表示本发明一个发明的基于时序数据预测模型的容器数量弹性伸缩系统的结构框图。
如图2所示,本发明一个发明的基于时序数据预测模型的容器数量弹性伸缩系统,其特征在于,包括:
数据记录模块10,用于记录Kubernetes集群的历史交易时序数据;
指标预测模块20,用于使用规定算法模型对所述数据记录模块采集的历史交易时序数据进行建模而形成预测模型,使用所述预测模型来预测未来规定时间的交易时序数据并且建立预测指标;以及
动态分配模块30,用于根据所述预测指标对于所述Kubernetes集群中的容器数量进行弹性伸缩。
其中,数据记录模块10采用Prometheus、cAdvisor以及Zabbix中的任意一种采集历史交易时序数据。
指标预测模块20使用Prophet算法模型或者ARIMA模型进行建模而形成预测模型。而且,指标预测模块20以接口形式提供对预测到的未来规定时间的预测指标的查询。
其中,动态分配模块30用于将所述预测指标聚合到Kubernetes API服务器,以提供水平自动伸缩即HPA查询的目标数据,并且用于根据所述预测指标对于所述Kubernetes集群中的容器数量进行弹性伸缩。
其中,述动态分配模块30中,判断当前的Kubernetes集群中的容器数量是否满足第一规定时间的预测值,如果容器数量不满足第一规定时间的预测值则调整容器数量以满足第一规定时间的预测值,如果容器数量满足第一规定时间的预测值则进一步判断是否满足第二规定时间的预测值,如果第一规定时间的预测值小于第二规定时间的预测值,则不进行容器数量调整,否则进行调整容器数量调整以满足第一规定时间的预测值。
接着,对于本发明的一个实施方式的基于时序数据预测模型的容器数量弹性伸缩方法以及基于时序数据预测模型的容器数量弹性伸缩系统进行说明。
在本实施方式中采用Prometheus来记录历史交易时序数据,采用Prophet算法建立预测模型,对一段时间内的历史业务指标进行学习,预测出未来一段时间内的业务指标,根据预测结果,调整Kubernetes集群中的资源分布。
图3是表示本发明一个实施方式的基于时序数据预测模型的容器数量弹性伸缩系统的结构框图。
如图3所示,本发明一个实施方式的基于时序数据预测模型的容器数量弹性伸缩系统包括:
数据记录模块100,用于采集Kubernetes集群的历史交易时序数据,例如每间隔1分钟对历史交易时序数据进行采集,得出每分钟该业务总的指标并使用时间序列数据库存储这些历史记录,并记录为This
指标预测模块200,用于使用Prophet算法模型对所述数据记录模块100采集的历史交易时序数据进行建模而形成预测模型,并且使用所述预测模型以及数据记录模块100记录的历史交易时序数据来预测未来规定时间的交易时序数据,并且建立预测指标,例如,指标预测模块200每隔1小时,读取最近一端时间(如1周)历史资源使用量This,然后使用Prophet算法模型,计算出从当前时间开始1小时内每分钟业务指标预测值{T1,T2,T3...T60},将结果存入时间序列数据库;以及
动态分配模块300,用于将所述指标预测模块200生成的预测指标聚合到KubernetesAPI服务器,以提供水平自动伸缩即HPA查询的目标数据,并且,根据所述HPA查询的目标数据以及所述预测指标对Kubernetes集群中的容器数量进行弹性伸缩。
其中,动态分配模块300将指标预测模块200生成的预测指标聚合到KubernetesAPI服务器的过程包括:通过修改kube-apiserver的启动项以开启聚合功能,并且,创建APIService对象,以用于将自定义的API对象和Prometheus的查询目标绑定,使用k8s-prometheus-adapter 镜像部署 custom-metrics-apiserver对象到Kubernetes集群中,该对象告知Prometheus需要采集的目标数据以提供HPA查询的目标数据。
以下举例说明动态分配模块300进行动态资源分配的具体动作。
动态分配模块300通过读取指标预测模块200中的业务指标预测值,判断是否需要调整资源分配,如果需要调整资源分布,则向Kubernetes集群发出资源调整指令。例如,动态分配模块300每间隔1分钟读取指标预测模块200的业务指标预测值,获取未来30分钟内每分钟的业务指标预测值。然后执行如下过程:
(1)判断当前资源是否满足需求。首先查看当前时刻5分钟后的预测业务指标值T5。计算5分钟后需要pod的数量max{ ceil(T5/Tpod) }。如果pod的需求量与当前已部署pod数量相等,则不进行pod数量调整。待一分钟后重新进行检测。若不相等,则进入下一步。
(2)判断资源调整是否过于频繁。如果当前pod数小于5分钟后需求量,那么直接增加pod数量。如果当前pod数大于5分钟后需求量,则判断是否存在Ti ∈ {T6,T7,T8...T30}使得T5 < Ti。若Ti存在,则说明资源需求在降低之后短时间内重新回升。为避免过于频繁的pod数量变化,在此种情况下不进行pod数量调整。若不存在Ti,则向Kubernetes发出资源调整指令。
(3)调整资源分配。由HPA对象自动向Kubernetes发出命令,调整pod数量至max{ceil(T5/Tpod)}。
图4是表示本发明的一个实施方式的基于时序数据预测模型的容器数量弹性伸缩方法的流程示意图。
如图4所示,本发明的一个实施方式的基于时序数据预测模型的容器数量弹性伸缩方法包括:
S1:在Kubernetes集群中以pod为单元执行业务;
S2:通过Prometheus监控收集Kubernetes集群的历史交易时序数据;
S3:利用S2中使用Prometheus监控采集Kubernetes集群的历史交易时序数据,通过Prophet算法模型预测未来规定时间的交易时序数据,并且建立未来规定时间的预测指标;
S4:将所述预测指标聚合到Kubernetes API服务器,包括将自定义的API对象和Prometheus的查询目标绑定,使用k8s-prometheus-adapter镜像部署custom-metrics-apiserver对象到Kubernetes集群中;
S5:提供水平自动伸缩即HPA查询的目标数据,即提供一个缩放比例;以及
S6:按照HPA查询的目标数据(缩放比例)对Kubernetes集群中的容器数量进行弹性伸缩。
另外,本发明还提供一种计算机可读介质,其上存储有计算机程序,其特征在于,该计算机程序被处理器执行时实现上述所述的基于时序数据预测模型的容器数量弹性伸缩方法。
进一步,本发明还提供一种计算机设备,包括存储模块、处理器以及存储在存储模块上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现上述的基于时序数据预测模型的容器数量弹性伸缩方法。
如上所述,根据本发明的基于时序数据预测模型的容器数量弹性伸缩方法以及基于时序数据预测模型的容器数量弹性伸缩系统,相对于现有技术中在实现资源的弹性分配过程中需要先检测到资源需求变化然后才能进行调整而具有一定滞后性的问题(尤其对于系统压力持续攀升的情况,在攀升时间段资源将长时间无法满足需求),本发明中,通过对资源需求的预测,提前对资源分配进行调整,可以大幅度避免滞后性。而且,相对于现有技术中的弹性分配过程中是根据cpu、内存使用量等常规系统负载指标而无法完全契合业务负载情况的问题,在本发明中通过采集实际业务指标并自定义指标服务供Kubernetes集群使用,可以实现根据业务量对资源进行弹性分配。
以上例子主要说明了本发明的基于时序数据预测模型的容器数量弹性伸缩方法以及基于时序数据预测模型的容器数量弹性伸缩系统。尽管只对其中一些本发明的具体实施方式进行了描述,但是本领域普通技术人员应当了解,本发明可以在不偏离其主旨与范围内以许多其他的形式实施。因此,所展示的例子与实施方式被视为示意性的而非限制性的,在不脱离如所附各权利要求所定义的本发明精神及范围的情况下,本发明可能涵盖各种的修改与替换。

Claims (16)

1.一种容器数量弹性伸缩方法,其特征在于,包括:
数据记录步骤,记录Kubernetes集群的历史交易时序数据;
指标预测步骤,对所述数据记录步骤记录的历史交易时序数据使用规定算法模型进行建模形成预测模型,使用所述预测模型以及所述历史交易时序数据来预测未来规定时间的交易时序数据并且建立未来规定时间的预测指标;以及
动态分配步骤,根据所述预测指标对于所述Kubernetes集群中的容器数量进行弹性伸缩。
2.如权利要求1所述的容器数量弹性伸缩方法,其特征在于,
在所述数据记录步骤中,采用Prometheus、cAdvisor以及Zabbix中的任意一种采集历史交易时序数据。
3.如权利要求1所述的容器数量弹性伸缩方法,其特征在于,
在所述指标预测步骤中,使用Prophet算法模型或者ARIMA模型进行建模。
4.如权利要求1所述的容器数量弹性伸缩方法,其特征在于,
在所述指标预测步骤中,以接口形式提供对预测到的未来规定时间的预测指标的查询。
5.如权利要求1所述的容器数量弹性伸缩方法,其特征在于,
在所述数据记录步骤中采用Prometheus采集历史交易时序数据,在所述指标预测步骤中使用Prophet算法模型进行建模。
6.如权利要求1所述的容器数量弹性伸缩方法,其特征在于,
在所述动态分配步骤中,将所述预测指标聚合到Kubernetes API服务器,以提供水平自动伸缩即HPA查询的目标数据,并且根据所述HPA查询的目标数据以及所述预测指标对Kubernetes集群中的容器数量进行弹性伸缩。
7.如权利要求1所述的容器数量弹性伸缩方法,其特征在于,
在所述动态分配步骤中,对Kubernetes集群中的容器数量进行弹性伸缩是通过由HPA对象自动向Kubernetes发出命令以调整Kubernetes集群中的容器数量。
8.如权利要求1所述的容器数量弹性伸缩方法,其特征在于,
在所述动态分配步骤中,判断当前的Kubernetes集群中的容器数量是否满足第一规定时间的预测值,如果容器数量不满足第一规定时间的预测值则进行调整容器数量以满足第一规定时间的预测值,如果容器数量满足第一规定时间的预测值则进一步判断是否满足第二规定时间的预测值,如果第一规定时间的预测值小于第二规定时间的预测值,则不进行容器数量调整,否则进行调整容器数量调整以满足第一规定时间的预测值。
9.一种容器数量弹性伸缩系统,其特征在于,包括:
数据记录模块,用于记录Kubernetes集群的历史交易时序数据;
指标预测模块,用于使用规定算法模型对所述数据记录模块采集的历史交易时序数据进行建模形成预测模型,使用所述预测模型来预测未来规定时间的交易时序数据并且建立预测指标;以及
动态分配模块,用于根据所述预测指标对于所述Kubernetes集群中的容器数量进行弹性伸缩。
10.如权利要求9所述的容器数量弹性伸缩系统,其特征在于,
所述数据记录模块采用Prometheus、cAdvisor以及Zabbix中的任意一种采集历史交易时序数据。
11.如权利要求9所述的容器数量弹性伸缩系统,其特征在于,
所述指标预测模块使用Prophet算法模型或者ARIMA模型进行建模。
12.如权利要求9所述的容器数量弹性伸缩系统,其特征在于,
所述指标预测模块以接口形式提供对预测到的未来规定时间的预测指标的查询。
13.如权利要求9所述的容器数量弹性伸缩系统,其特征在于,
所述动态分配模块将所述预测指标聚合到Kubernetes API服务器,以提供水平自动伸缩即HPA查询的目标数据,并且根据所述HPA查询的目标数据以及所述预测指标对Kubernetes集群中的容器数量进行弹性伸缩。
14.如权利要求9所述的容器数量弹性伸缩系统,其特征在于,
在所述动态分配模块中,判断当前的Kubernetes集群中的容器数量是否满足第一规定时间的预测值,如果容器数量不满足第一规定时间的预测值则调整容器数量以满足第一规定时间的预测值,如果容器数量满足第一规定时间的预测值则进一步判断是否满足第二规定时间的预测值,如果第一规定时间的预测值小于第二规定时间的预测值,则不进行容器数量调整,否则进行调整容器数量调整以满足第一规定时间的预测值。
15.一种计算机可读介质,其上存储有计算机程序,其特征在于,
该计算机程序被处理器执行时实现权利要求1~8任意一项所述的容器数量弹性伸缩方法。
16.一种计算机设备,包括存储模块、处理器以及存储在存储模块上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1~8任意一项所述的容器数量弹性伸缩方法。
CN202011052586.8A 2020-09-29 2020-09-29 容器数量弹性伸缩方法以及容器数量弹性伸缩方法系统 Active CN113010260B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011052586.8A CN113010260B (zh) 2020-09-29 2020-09-29 容器数量弹性伸缩方法以及容器数量弹性伸缩方法系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011052586.8A CN113010260B (zh) 2020-09-29 2020-09-29 容器数量弹性伸缩方法以及容器数量弹性伸缩方法系统

Publications (2)

Publication Number Publication Date
CN113010260A true CN113010260A (zh) 2021-06-22
CN113010260B CN113010260B (zh) 2024-06-21

Family

ID=76383420

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011052586.8A Active CN113010260B (zh) 2020-09-29 2020-09-29 容器数量弹性伸缩方法以及容器数量弹性伸缩方法系统

Country Status (1)

Country Link
CN (1) CN113010260B (zh)

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113673822A (zh) * 2021-07-15 2021-11-19 微梦创科网络科技(中国)有限公司 一种弹性调度方法及系统
CN114003340A (zh) * 2021-10-26 2022-02-01 深圳证券信息有限公司 容器集群弹性伸缩方法、装置、设备及存储介质
CN114428666A (zh) * 2022-01-27 2022-05-03 中国铁道科学研究院集团有限公司电子计算技术研究所 一种基于cpu和内存占用率的智能弹性伸缩方法及系统
CN114489944A (zh) * 2022-01-24 2022-05-13 合肥工业大学 基于Kubernetes的预测式弹性伸缩方法
CN114637650A (zh) * 2022-03-11 2022-06-17 电子科技大学 一种基于Kubernetes集群的弹性伸缩方法
CN114840313A (zh) * 2022-07-04 2022-08-02 北京邮电大学 一种容器组件的调度方法及装置
CN115118602A (zh) * 2022-06-21 2022-09-27 中船重工信息科技有限公司 一种基于使用量预测的容器资源动态调度方法及系统
CN115473804A (zh) * 2022-09-06 2022-12-13 中国建设银行股份有限公司 一种基于交易量负载进行弹性伸缩的方法及装置
WO2024022443A1 (zh) * 2022-07-29 2024-02-01 华为云计算技术有限公司 一种资源弹性伸缩方法、装置及设备

Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150310043A1 (en) * 2013-04-24 2015-10-29 Charles Nathan Adelman Nested Media Container, Panel and Organizer
CN107404409A (zh) * 2017-09-01 2017-11-28 广西大学 面向突变负载的容器云弹性供给容器数量预测方法与系统
CN108965455A (zh) * 2018-08-01 2018-12-07 中国联合网络通信集团有限公司 一种视频容器云的调整方法和系统
CN109067862A (zh) * 2018-07-23 2018-12-21 北京邮电大学 API Gateway自动伸缩的方法与装置
CN109446032A (zh) * 2018-12-19 2019-03-08 福建新大陆软件工程有限公司 Kubernetes副本扩缩容的方法及系统
CN109710500A (zh) * 2018-11-29 2019-05-03 西安工程大学 一种基于自动伸缩Docker集群的组合预测方法
CN110149396A (zh) * 2019-05-20 2019-08-20 华南理工大学 一种基于微服务架构的物联网平台构建方法
US20200027014A1 (en) * 2015-12-30 2020-01-23 Nutanix, Inc. Method for forecasting distributed resource utilization in a virtualization environment
CN111124689A (zh) * 2019-12-31 2020-05-08 中国电子科技集团公司信息科学研究院 一种集群中容器资源动态分配方法
CN111399986A (zh) * 2020-03-24 2020-07-10 中国建设银行股份有限公司 Pod资源配额配置方法及装置
CN111625343A (zh) * 2019-02-27 2020-09-04 北京京东尚科信息技术有限公司 容器调度方法、装置、计算机设备及存储介质

Patent Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150310043A1 (en) * 2013-04-24 2015-10-29 Charles Nathan Adelman Nested Media Container, Panel and Organizer
US20200027014A1 (en) * 2015-12-30 2020-01-23 Nutanix, Inc. Method for forecasting distributed resource utilization in a virtualization environment
CN107404409A (zh) * 2017-09-01 2017-11-28 广西大学 面向突变负载的容器云弹性供给容器数量预测方法与系统
CN109067862A (zh) * 2018-07-23 2018-12-21 北京邮电大学 API Gateway自动伸缩的方法与装置
CN108965455A (zh) * 2018-08-01 2018-12-07 中国联合网络通信集团有限公司 一种视频容器云的调整方法和系统
CN109710500A (zh) * 2018-11-29 2019-05-03 西安工程大学 一种基于自动伸缩Docker集群的组合预测方法
CN109446032A (zh) * 2018-12-19 2019-03-08 福建新大陆软件工程有限公司 Kubernetes副本扩缩容的方法及系统
CN111625343A (zh) * 2019-02-27 2020-09-04 北京京东尚科信息技术有限公司 容器调度方法、装置、计算机设备及存储介质
CN110149396A (zh) * 2019-05-20 2019-08-20 华南理工大学 一种基于微服务架构的物联网平台构建方法
CN111124689A (zh) * 2019-12-31 2020-05-08 中国电子科技集团公司信息科学研究院 一种集群中容器资源动态分配方法
CN111399986A (zh) * 2020-03-24 2020-07-10 中国建设银行股份有限公司 Pod资源配额配置方法及装置

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
张兆伟;冯鹏;董洋;杨英奎;: "Kubernetes HPA技术在气象通信系统中的应用", 信息技术, no. 03, 25 March 2020 (2020-03-25) *
王强;王瑞刚;周德永;: "基于Docker的动态负载均衡弹性伸缩系统", 计算机与数字工程, no. 06, 20 June 2018 (2018-06-20) *
赵 尘: ""组合预测式容器弹性伸缩方案的研究与实现"", 《中国优秀硕士学位论文全文数据库》, pages 19 - 67 *

Cited By (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113673822A (zh) * 2021-07-15 2021-11-19 微梦创科网络科技(中国)有限公司 一种弹性调度方法及系统
CN113673822B (zh) * 2021-07-15 2023-08-11 微梦创科网络科技(中国)有限公司 一种弹性调度方法及系统
CN114003340A (zh) * 2021-10-26 2022-02-01 深圳证券信息有限公司 容器集群弹性伸缩方法、装置、设备及存储介质
CN114489944A (zh) * 2022-01-24 2022-05-13 合肥工业大学 基于Kubernetes的预测式弹性伸缩方法
CN114428666A (zh) * 2022-01-27 2022-05-03 中国铁道科学研究院集团有限公司电子计算技术研究所 一种基于cpu和内存占用率的智能弹性伸缩方法及系统
CN114637650A (zh) * 2022-03-11 2022-06-17 电子科技大学 一种基于Kubernetes集群的弹性伸缩方法
CN114637650B (zh) * 2022-03-11 2023-04-18 电子科技大学 一种基于Kubernetes集群的弹性伸缩方法
CN115118602A (zh) * 2022-06-21 2022-09-27 中船重工信息科技有限公司 一种基于使用量预测的容器资源动态调度方法及系统
CN115118602B (zh) * 2022-06-21 2024-05-07 中船重工信息科技有限公司 一种基于使用量预测的容器资源动态调度方法及系统
CN114840313A (zh) * 2022-07-04 2022-08-02 北京邮电大学 一种容器组件的调度方法及装置
WO2024022443A1 (zh) * 2022-07-29 2024-02-01 华为云计算技术有限公司 一种资源弹性伸缩方法、装置及设备
CN115473804A (zh) * 2022-09-06 2022-12-13 中国建设银行股份有限公司 一种基于交易量负载进行弹性伸缩的方法及装置

Also Published As

Publication number Publication date
CN113010260B (zh) 2024-06-21

Similar Documents

Publication Publication Date Title
CN113010260A (zh) 容器数量弹性伸缩方法以及容器数量弹性伸缩方法系统
CN108632365B (zh) 服务资源调整方法、相关装置和设备
CN111818159B (zh) 数据处理节点的管理方法、装置、设备及存储介质
US9037505B2 (en) Mechanisms for executing a process in a cloud computing environment
US8473956B2 (en) Priority based scheduling system for server
US9396008B2 (en) System and method for continuous optimization of computing systems with automated assignment of virtual machines and physical machines to hosts
US11726836B2 (en) Predicting expansion failures and defragmenting cluster resources
US9176789B2 (en) Capacity control
US11018991B1 (en) System and method for autonomous and dynamic resource allocation in storage systems
US20120221730A1 (en) Resource control system and resource control method
CN110289994B (zh) 一种集群容量调整方法及装置
CN107656807B (zh) 一种虚拟资源的自动弹性伸缩方法及装置
JP2010244181A (ja) 仮想マシン管理システム,仮想マシン配置設定方法及びそのプログラム
WO2020172852A1 (en) Computing resource scheduling method, scheduler, internet of things system, and computer readable medium
CN112068934B (zh) 一种容器云服务实例收缩的控制系统和方法
CN111381970A (zh) 集群任务的资源分配方法及装置、计算机装置及存储介质
KR101630125B1 (ko) 클라우드 컴퓨팅 자원관리 시스템에서의 자원 요구량 예측 방법
CN113672345A (zh) 一种基于io预测的云虚拟化引擎分布式资源调度方法
JP5515889B2 (ja) 仮想マシンシステム、自動マイグレーション方法および自動マイグレーションプログラム
CN107203256B (zh) 一种网络功能虚拟化场景下的节能分配方法与装置
CN117369941A (zh) Pod调度方法和系统
US11836365B2 (en) Automatically adjusting storage system configurations in a storage-as-a-service environment using machine learning techniques
CN114090201A (zh) 资源调度方法、装置、设备及存储介质
JP2022038919A (ja) リソース構成見積もりシステムおよびリソース構成見積もり方法
Khalil et al. Auto resource management to enhance reliability and energy consumption in heterogeneous cloud computing

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