CN116257360B - 一种基于历史使用数据规划容器组资源的方法和系统 - Google Patents
一种基于历史使用数据规划容器组资源的方法和系统 Download PDFInfo
- Publication number
- CN116257360B CN116257360B CN202310226993.3A CN202310226993A CN116257360B CN 116257360 B CN116257360 B CN 116257360B CN 202310226993 A CN202310226993 A CN 202310226993A CN 116257360 B CN116257360 B CN 116257360B
- Authority
- CN
- China
- Prior art keywords
- resource
- resource usage
- historical
- instance
- usage data
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
- G06F9/5077—Logical partitioning of resources; Management or configuration of virtualized resources
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- Y—GENERAL 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
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE 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/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本申请涉及云原生技术领域,提供了一种基于历史使用数据规划容器组资源的方法和系统。对目标运行实例的历史资源使用数据进行分析,以确定目标运行实例的资源使用特征;基于目标运行实例的资源使用特征和新近资源使用数据,对目标运行实例对应的资源文件中的资源使用上限字段和资源需求字段中的至少一个值进行修改;响应于目标运行实例对应的资源文件发生变化,对目标运行实例进行重调度,以完成对容器云平台中资源的规划。由此,基于历史资源使用数据对目标运行实例的资源使用上限和资源需求进行优化,实现了对目标运行实例的资源使用上限和资源需求的智能化调整,使得容器云平台整体的资源分配更加合理,提升了容器云平台的资源使用效率。
Description
技术领域
本申请涉及容器云技术领域,特别涉及一种基于历史使用数据规划容器组资源的方法、系统、计算机可读存储介质和电子设备。
背景技术
通常在将业务应用部署在容器云平台中时,由应用管理员手动为该业务应用对应的资源文件(比如Deployment文件)的资源使用上限字段(比如Limit字段)和资源需求字段(比如Request字段)设置值。
目前,为了提高资源使用上限字段和资源需求字段的值的精准性,减少大量资源被浪费的情况,容器云平台提供了资源管理的垂直自动扩缩(Vertical Pod Autoscaler,简称VPA)能力,用于动态调整运行实例占用的资源。具体是通过VPA控制器对运行实例对应的资源文件中资源使用上限字段和资源需求字段的值进行修改,并在修改完成后,以重调度的形式完成运行实例占用资源的调整,即根据修改后的资源使用上限字段和资源需求字段的值创建新的容器组,并将运行实例部署在新的容器组中,以完成对运行实例占用的资源的调整。
但在重调度过程中,运行实例必须重启,且重启期间运行实例将处于不可用状态,因此既不适宜在业务应用处于高负载状态时对其进行垂直扩容,也不适宜频繁地对其进行垂直扩容。
故,需要一种针对上述现有技术不足的技术方案。
发明内容
本申请的目的在于提供一种基于历史使用数据规划容器组资源的方法、系统、计算机可读存储介质和电子设备,以解决或缓解上述现有技术中存在的问题。
为了实现上述目的,本申请提供如下技术方案:
本申请提供了一种基于历史使用数据规划容器组资源的方法,所述方法包括:
周期性获取并存储目标运行实例的资源使用数据;其中,所述目标运行实例部署在容器云平台中的第一容器组中;
对所述目标运行实例的历史资源使用数据进行分析,以确定所述目标运行实例的资源使用特征;
基于所述目标运行实例的资源使用特征和新近资源使用数据,对所述目标运行实例对应的资源文件中的资源使用上限字段和资源需求字段中的至少一个值进行修改;
响应于所述目标运行实例对应的资源文件发生变化,对所述目标运行实例进行重调度,以完成对所述容器云平台中资源的规划。
在一种可能的实现中,所述对所述目标运行实例的历史资源使用数据进行分析,以确定所述目标运行实例的资源使用特征,包括:
将所述历史资源使用数据中资源使用量超过第一阈值且持续时长超过第二阈值的时间段作为资源使用高峰期;其中,所述第一阈值根据所述历史资源使用数据中资源使用量的平均值、最大值、最小值确定,所述第二阈值根据所述目标运行实例的历史资源使用数据的获取周期确定;
将所述历史资源使用数据中除所述资源使用高峰期以外的时间段作为资源使用低谷期;
响应于所述历史资源使用数据中不存在所述资源使用高峰期,将所述目标运行实例确定为资源平稳型;
响应于所述历史资源使用数据中存在所述资源使用高峰期,且所述资源使用高峰期随机出现,将所述目标运行实例确定为资源波动型;
响应于所述历史资源使用数据中存在所述资源使用高峰期,且所述资源使用高峰期按规律重复出现,将所述目标运行实例确定为资源潮汐型。
在一种可能的实现中,所述基于所述目标运行实例的资源使用特征和新近资源使用数据,对所述目标运行实例对应的资源文件中的资源使用上限字段和资源需求字段中的至少一个值进行修改,包括:
响应于所述目标运行实例为所述资源平稳型,将所述新近资源使用数据中资源使用量的均值作为资源平稳基数;
将所述资源需求字段的值修改为所述资源平稳基数与资源平稳系数的乘积;其中,所述资源平稳系数根据所述历史资源使用数据中资源使用量的平均值确定。
在一种可能的实现中,所述基于所述目标运行实例的资源使用特征和新近资源使用数据,对所述目标运行实例对应的资源文件中的资源使用上限字段和资源需求字段中的至少一个值进行修改,包括:
响应于所述目标运行实例为所述资源波动型,将所述新近资源使用数据中属于所述资源使用高峰期的资源使用量的均值作为第一资源波动基数,并将所述新近资源使用数据中属于所述资源使用低谷期的资源使用量的均值作为第二资源波动基数;
将所述资源使用上限字段的值修改为所述第一资源波动基数与第一资源波动系数的乘积;
将所述资源需求字段的值修改为所述第二资源波动基数与第二资源波动系数的乘积;
其中,所述第一资源波动系数根据所述历史资源使用数据中资源使用量的平均值和所述第一资源波动基数之间的差异确定,所述第二资源波动系数根据所述历史资源使用数据中资源使用量的平均值和所述第二资源波动基数之间的差异确定。
在一种可能的实现中,所述基于所述目标运行实例的资源使用特征和新近资源使用数据,对所述目标运行实例对应的资源文件中的资源使用上限字段和资源需求字段中的至少一个值进行修改,包括:
响应于所述目标运行实例为所述资源潮汐型,将所述新近资源使用数据中属于所述资源使用高峰期的资源使用量的均值作为第一资源潮汐基数,并将所述新近资源使用数据中属于所述资源使用低谷期的资源使用量的均值作为第二资源潮汐基数;
基于所述历史资源使用数据预测所述资源使用高峰期或者所述资源使用低谷期是否将要出现;
响应于预测到所述资源使用高峰期将要出现,将所述资源使用上限字段的值修改为所述第一资源潮汐基数与第一资源潮汐系数的乘积,并将所述资源需求字段的值修改为所述第二资源潮汐基数与第一资源潮汐系数的乘积;
响应于预测到所述资源使用低谷期将要出现,将所述资源使用上限字段的值修改为所述第一资源潮汐基数与第二资源潮汐系数的乘积,并将所述资源需求字段的值修改为所述第二资源潮汐基数与第二资源潮汐系数的乘积;
其中,所述第一资源潮汐系数和所述第二资源潮汐系数根据所述历史资源使用数据中属于资源使用高峰期的资源使用量的平均值和属于资源使用低谷期的资源使用量的平均值确定。
在一种可能的实现中,基于所述历史资源使用数据预测所述资源使用高峰期或者所述资源使用低谷期是否将要出现,具体为:
对所述历史资源使用数据中所述资源使用高峰期的出现时间点和结束时间点进行汇总;
确定每个所述出现时间点和所述结束时间点对应的时间特征,并依据多个所述时间特征对所述出现时间点和所述结束时间点进行统计,以确定所述出现时间点、所述结束时间点与每个所述时间特征之间的关联关系;其中,所述时间特征包括日期、星期、时刻、假期;
基于所述关联关系预测所述资源使用高峰期或者所述资源使用低谷期是否将要出现。
在一种可能的实现中,所述响应于所述目标运行实例对应的资源文件发生变化,对所述目标运行实例进行重调度,具体为:
所述容器云平台的Kubelet组件通过API-Server组件对所述目标运行实例对应的资源文件进行监听;
响应于监听到所述目标运行实例对应的资源文件中的所述资源使用上限字段和所述资源需求字段中的至少一个值发生变化,根据变化后的所述资源使用上限字段和所述资源需求字段的值在所述容器云平台中创建第二容器组,以部署所述目标运行实例;
将所述第一容器组删除,以将所述第一容器组所占用的资源释放。
本申请实施例提供一种基于历史使用数据规划容器组资源的系统,所述系统包括:
资源处理单元,用于周期性获取并存储目标运行实例的资源使用数据;其中,所述目标运行实例部署在容器云平台中的第一容器组中;
资源分析单元,用于对所述目标运行实例的历史资源使用数据进行分析,以确定所述目标运行实例的资源使用特征;
字段修改单元,用于基于所述目标运行实例的资源使用特征和新近资源使用数据,对所述目标运行实例对应的资源文件中的资源使用上限字段和资源需求字段中的至少一个值进行修改;
资源规划单元,用于响应于所述目标运行实例对应的资源文件发生变化,对所述目标运行实例进行重调度,以完成对所述容器云平台中资源的规划。
本申请实施例还提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时,实现如上任一所述的一种基于历史使用数据规划容器组资源的方法。
本申请实施例还提供一种电子设备,包括:存储器、处理器、以及存储在所述存储器中并可在所述处理器上运行的程序,所述处理器执行所述程序时实现如上任一所述的一种基于历史使用数据规划容器组资源的方法。
有益效果:
本申请提供的基于历史使用数据规划容器组资源的方法中,通过周期性获取并存储目标运行实例的历史资源使用数据,以利用历史资源使用数据分析目标运行实例的资源使用特征,然后根据目标运行实例的资源使用特征和新近资源使用数据,对目标运行实例对应的资源文件中的资源使用上限字段和资源需求字段中的至少一个值进行修改,使得根据历史资源使用数据进行动态调整的资源使用上限字段和资源需求字段的值更加科学和精细,进而当目标运行实例对应的资源文件发生变化时,对目标运行实例进行重调度,以完成对容器云平台中资源的规划。由此,基于历史资源使用数据对目标运行实例的资源使用上限和资源需求进行优化,实现了对目标运行实例的资源使用上限和资源需求的智能化调整,使得容器云平台整体的资源分配更加合理,既能够在业务应用处于高负载状态时确保运行实例能够使用充足的资源,又能够及时将运行实例所占用的闲置资源及时划归容器云平台统一调配,提升了容器云平台的资源使用效率。
附图说明
构成本申请的一部分的说明书附图用来提供对本申请的进一步理解,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。其中:
图1为根据本申请的一些实施例提供的一种基于历史使用数据规划容器组资源的方法的逻辑示意图;
图2为根据本申请的一些实施例提供的一种基于历史使用数据规划容器组资源的方法的流程示意图;
图3为根据本申请的一些实施例提供的一种基于历史使用数据规划容器组资源的系统的结构示意图;
图4为根据本申请的一些实施例提供的电子设备的结构示意图;
图5为根据本申请的一些实施例提供的电子设备的硬件结构图。
具体实施方式
下面将参考附图并结合实施例来详细说明本申请。
各个示例通过本申请的解释的方式提供而非限制本申请。实际上,本领域的技术人员将清楚,在不脱离本申请的范围或精神的情况下,可在本申请中进行修改和变型。例如,示为或描述为一个实施例的一部分的特征可用于另一个实施例,以产生又一个实施例。因此,所期望的是,本申请包含归入所附权利要求及其等同物的范围内的此类修改和变型。
容器技术是一种将硬件资源划至孤立的分组中的技术,使得孤立的分组能够平衡有冲突的硬件资源使用需求,在云原生场景下对容器进行统一编排的轻量化PaaS平台称作容器云平台。
以Kubernetes集群为代表的容器云平台能够提供资源调度、服务编排、应用部署、监控日志、配置管理、存储网络管理、平台安全等各项功能。将业务应用部署在容器云平台中,实际上就是将业务应用部署在容器云平台的容器组中。容器组(Pod)由单个容器或者多个紧耦合在一起的容器组成,是容器云平台中最小的可部署单元,能够部署一个单独的业务应用的运行实例。
部署在容器云平台中的业务应用对应有多个运行实例,共同对指向业务应用的请求进行响应。容器云平台为同一个业务应用对应的所有运行实例建立了负载均衡机制,根据每个运行实例的负载情况,将请求均匀地分发至每个运行实例。
业务应用对应的资源文件用于记载该业务应用的资源清单,即以YAML文件的形式对容器云平台中的各类资源进行编排部署,在容器云平台中创建期望的容器组来部署该业务应用对应的运行实例。因此,业务应用对应的运行实例为业务应用的一个副本,相应地,运行实例对应的资源文件即为业务应用对应的资源文件的一个副本。
通常在将业务应用部署在容器云平台中时,由应用管理员手动为该业务应用对应的资源文件(比如Deployment文件)的资源使用上限字段和资源需求字段设置值。具体是在将运行实例部署至容器云平台中的容器组之前,对运行实例进行压力测试,并根据测试数据设置前述资源使用上限字段和资源需求字段的值,且该值由应用管理员根据测试数据人为估算得到。
业务应用的资源使用量主要取决于业务应用本身和访问流量的大小,业务应用在长期运行过程中,业务应用本身会进行升级迭代,访问流量也会发生变化,进而导致业务应用的资源使用量随之发生变化,而应用管理员不可能在业务应用部署时提前预估以后出现的变化,因此,为了确保运行实例能够在容器云平台中长期正常运行,通常会将资源使用上限字段和资源需求字段的值估算得较大。
而在将运行实例部署至容器云平台中的容器组之后,运行实例所在容器组平时只需使用较少的资源,即便在高峰期也无需使用预估值的资源,导致许多资源被该容器组占用后处于闲置状态,并且容器云平台中存在大量的容器组,导致庞大的资源被占用后处于闲置状态,造成资源浪费。
例如:运行实例平时只需使用100m的CPU资源,应用管理员在经过估算后将CPU资源的资源使用上限字段和资源需求字段的值设置为1000m,使得大约900m的CPU资源长期处于闲置状态,造成资源浪费。
其中,m(毫核)是CPU使用量的单位,是将一个CPU内核抽象化,分成1000等份,每一份即为一个millicore,即千分之一个核,或毫核。100m的CPU资源表示单核的十分之一,两个核的CPU资源总量为2000m。
亦或是,运行实例在低谷期使用100m的CPU资源,在高峰时使用1000m的CPU资源,应用管理员在经过估算后将CPU资源的资源使用上限字段和资源需求字段的值设置为4000m,使得大约3900m的CPU资源长期处于闲置状态,即便在高峰期也有大约3000m的CPU资源长期处于闲置状态,造成资源浪费。
目前,为了解决应用管理员人工估算值的方式不精准,导致容器云平台的资源管理不够精细化,造成大量资源在分配给容器组后处于闲置状态的问题,容器云平台提供了资源管理的垂直自动扩缩(Vertical Pod Autoscaler,简称VPA)能力,用于动态调整运行实例占用的资源,也就是在业务应用负载高时,自动为该业务应用对应的每个运行实例分配更多的资源,以提升该业务应用的负载能力。而在业务应用负载低时,自动减少该业务应用对应的每个运行实例分得的资源,进而减少该业务应用整体占用的资源。
具体是通过VPA控制器对运行实例对应的资源文件中资源使用上限字段和资源需求字段的值进行修改,并在修改完成后,以重调度的形式完成运行实例占用资源的调整,即根据修改后的资源使用上限字段和资源需求字段的值创建新的容器组,并将运行实例部署在新的容器组中,以完成对运行实例占用的资源的调整。
但在重调度过程中,运行实例必须重启,重启期间运行实例将处于不可用状态,因此既不适宜在业务应用处于高负载状态时对其进行垂直扩容,也不适宜频繁地对其进行垂直扩容。
因此,一方面要确保容器云平台为运行实例分配足够的资源,使得业务应用处于高负载状态时资源充足,另一方面也要避免资源分配给运行实例后被闲置,将运行实例所占用的闲置资源及时划归容器云平台统一调配,以提升容器云平台资源使用效率,本申请提供一种基于历史使用数据规划容器组资源的方法,该方法根据运行实例的历史资源使用数据,智能化调整该运行实例的资源使用上限字段和资源需求字段的值,以确保值的合理性,实现对运行实例所占用资源的精细化管理,使得容器云平台整体的资源分配更加合理,提升了容器云平台的资源使用效率。
示例性方法
参照附图1和附图2,本申请实施例提供了一种基于历史使用数据规划容器组资源的方法,图1为根据本申请的一些实施例提供的一种基于历史使用数据规划容器组资源的方法的逻辑示意图;图2为根据本申请的一些实施例提供的一种基于历史使用数据规划容器组资源的方法的流程示意图,其中,所述方法包括:
步骤S101,周期性获取并存储目标运行实例的资源使用数据。
其中,目标运行实例部署在容器云平台中的第一容器组中。
需要说明的是,Kubernetes集群由若干个节点组成,按照功能不同可以分为控制节点和工作节点,其中部署在控制节点中的组件包括运行实例对应的资源文件、API-Server组件、调度器、控制组件和监控系统,部署在工作节点中的运行组件包括Kubelet组件、Kubelet服务代理(kube-proxy)和容器运行时(Docker、rkt或者其他)。Kubernetes集群中的组件之间无法直接通信,只能通过API-Server组件进行通信,并通过向API-Server组件发送请求来变更集群状态。
基于此,本申请实施例利用监控系统周期性地收集部署至容器云平台中的第一容器组中的目标运行实例在运行过程中的CPU、内存、I/O等资源使用数据,且监控系统提供外部访问接口,以供其他组件获取资源使用数据。
需要说明的是,资源使用数据的类型包括CPU、内存、I/O、入网流量和出网流量中的至少一种。
步骤S102,对目标运行实例的历史资源使用数据进行分析,以确定目标运行实例的资源使用特征。
具体的,一些场景中,目标运行实例在不同时间的资源使用情况不同,存在特定时间段处于资源使用高峰期或资源使用低谷期,比如每个月月初或者节假日期间为CPU资源的使用高峰期,而在其他时期处于使用低谷期。如果运行实例的历史资源使用情况长期处于较为平稳状态,也即不存在高峰期和低谷期的变化,说明该运行实例属于资源使用稳定的情况;如果运行实例的历史资源使用情况存在高峰期和低谷期的变化,且高峰期随机出现,说明该运行实例属于资源使用波动的情况;如果运行实例的历史资源使用情况存在高峰期和低谷期的变化,且高峰期的出现存在规律性,说明该运行实例属于资源使用规律性浮动的情况,因此基于上述特征,本申请实施例对目标运行实例的历史资源使用数据进行分析,以确定目标运行实例的资源使用特征。
其中,确定目标运行实例的资源使用特征的具体步骤是:
将历史资源使用数据中资源使用量超过第一阈值且持续时长超过第二阈值的时间段作为资源使用高峰期;其中,第一阈值根据历史资源使用数据中资源使用量的平均值、最大值、最小值确定,第二阈值根据目标运行实例的历史资源使用数据的获取周期确定;
将历史资源使用数据中除资源使用高峰期以外的时间段作为资源使用低谷期;
响应于历史资源使用数据中不存在资源使用高峰期,将目标运行实例确定为资源平稳型;
响应于历史资源使用数据中存在资源使用高峰期,且资源使用高峰期随机出现,将目标运行实例确定为资源波动型;
响应于历史资源使用数据中存在资源使用高峰期,且资源使用高峰期按规律重复出现,将目标运行实例确定为资源潮汐型。
本申请实施例基于预设采样频率(即获取周期)实时获取目标运行实例的资源使用数据,并在持久化存储后作为目标运行实例的历史资源使用数据,为了保证数据不受极端值的影响,在对历史资源使用数据进行分析后,首先计算历史资源使用数据中资源使用量的最大值和最小值的差值,并将最大值和最小值的差值的1/4作为补充数值,然后计算历史资源使用数据中资源使用量的平均值,将平均值和补充数值之和作为第一阈值,进而统计历史资源使用数据中资源使用量连续超过第一阈值的时长;又考虑到监控组件监控的信号不平滑,存在不稳定情况,也即是以突发毛刺高峰的形式出现,容易造成数据误差,因此本申请实施例将多个获取周期所对应的时间段作为资源使用高峰期判定的时间窗口,即将多个获取周期所对应的时长作为第二阈值,因此基于历史资源使用数据的资源使用量和获取周期,确定资源使用量超过第一阈值且持续时长超过第二阈值所对应的时间段作为资源使用高峰期,例如,每15s实时获取一次资源使用数据并进行存储,作为历史资源使用数据,在对历史资源使用数据进行分析后,如果出现连续10个15s内的历史资源使用数据中资源使用量都超过第一阈值,则将10*15=150s所对应的时间段作为资源使用高峰期。
需要说明的是,获取周期是实施者根据场景人为设置的,本申请不做限制,但通常情况下,默认获取周期为15s。
由于资源使用数据除资源使用高峰期外,其他情况下属于资源使用低谷期,因此将历史资源使用数据中除资源使用高峰期以外的时间段作为资源使用低谷期。
至此,根据目标运行实例的历史资源使用数据能够确定目标运行实例的资源使用特征,以实现对目标运行实例进行分类的目的。
步骤S103,基于目标运行实例的资源使用特征和新近资源使用数据,对目标运行实例对应的资源文件中的资源使用上限字段和资源需求字段中的至少一个值进行修改。
具体的,为了保证容器组中的应用正常运行,不仅需要占用一定的资源需求量,而且在对容器组内的运行的进程产生不利影响时,对容器组的使用量也需要进行限制,因此运行实例对应的资源文件(比如Deployment文件)中设置有资源使用上限字段(比如Limit字段)和资源需求字段(比如Request字段)。
资源使用上限字段的值用于定义该运行实例能够使用的资源数量上限,如果运行实例所在容器组占用的资源超过资源使用上限字段的值,将导致该容器组被闲置;资源需求字段的值用于定义该运行实例所需的资源数量下限,如果节点的剩余资源数量低于资源需求字段的值,该运行实例将无法被调度至该节点。也即是将运行实例占用的资源分为两个部分,一部分是数量为资源需求字段的值所对应的资源,即被固定不变地分配给运行实例使用的资源,另一部分是请求容器云平台额外分配给运行实例使用的资源。
换句话说,资源需求字段的值定义的资源数量是容器云平台明确分配给运行实例使用的资源,不能再分配给容器云平台中的其他运行实例和组件使用,而资源使用上限字段的值定义的资源数量则是运行实例最多能够使用的资源,如果运行实例要使用的资源数量超过了资源需求字段的值,则可以请求容器云平台为其分配更多的资源,但该运行实例使用的所有资源的数量最多不能超过资源使用上限字段的值。
基于此可知,资源文件中资源使用上限字段和资源需求字段的值是保证运行实例正常运行的重要条件,但在一些场景中,节点在不同时间的资源使用情况不同,容器组在不同时间的资源需求也不同,例如,将运行实例部署至Kubernetes集群之前,应用管理员人为估算对应的资源文件中资源使用上限字段和资源需求字段的值,并将其作为初始值进行设置,通常资源使用上限字段和资源需求字段设置的初始值较大,很容易造成资源浪费,因此在运行过程中,智能化为运行实例的资源使用上限字段和资源需求字段设置值是非常必要的,能够减少资源浪费,提升容器云平台资源使用效率。
本申请实施例中,基于目标运行实例的资源使用特征和新近资源使用数据,对目标运行实例对应的资源文件中资源使用上限字段和资源需求字段中的至少一个值进行修改,以使得后续根据变化后的资源使用上限字段和资源需求字段的值对目标运行实例进行重调度,实现对资源的精细化管理。
其中,响应于目标运行实例为资源平稳型,对目标运行实例对应的资源文件中资源使用上限字段和资源需求字段中的至少一个值进行修改的具体步骤为:
将新近资源使用数据中资源使用量的均值作为资源平稳基数。
将资源需求字段的值修改为资源平稳基数与资源平稳系数的乘积;资源平稳系数根据历史资源使用数据中资源使用量的平均值确定。
作为一个示例,将历史资源使用数据中资源使用量的平均值作为历史资源平稳基数,计算资源平稳基数与历史资源平稳基数的差值绝对值,获取差值绝对值与历史资源平稳基数之间的比值,将比值与常数1的和作为资源平稳调整系数,则资源平稳系数的计算公式为:
其中,γw为资源平稳系数;A1为资源平稳基数;A2为历史资源平稳基数;|A1-A2|为资源平稳基数与历史资源平稳基数的差值绝对值;1为常数。
需要说明的是,计算资源平稳型下的历史资源平稳基数与新近资源使用数据下的资源平稳基数的差值绝对值,用于表征资源数据之间的资源差异,进而计算差值绝对值与历史资源平稳基数之间的比值,用于表征资源差值越大,新近资源使用数据相较于历史资源使用数据的变化越大,对应比值越大;常数1用于表示资源平稳系数的基数,故,比值越大,对应资源平稳系数越大。
基于前述说明可知,资源需求字段的值所对应的资源被固定不变地分配给运行实例使用,而资源使用上限字段的值则是用于定义该运行实例能够使用的资源数量上限,因此计算节点的剩余资源数量是将节点的总资源数量减去节点中所有容器组的资源需求字段的值,也就是说,资源使用上限字段的值对应的资源实际上并没有被分配给运行实例所在的容器组,因此对于资源平稳型的目标运行实例,可以设置资源使用上限字段的值与资源需求字段的值始终保持一致,还可以将资源使用上限字段的值设置为一个固定值,但资源使用上限字段的值永远不能小于资源需求字段的值。
其中,响应于目标运行实例为资源波动型,对目标运行实例对应的资源文件中资源使用上限字段和资源需求字段中的至少一个值进行修改的具体步骤为:
将新近资源使用数据中属于资源使用高峰期的资源使用量的均值作为第一资源波动基数,并将新近资源使用数据中属于资源使用低谷期的资源使用量的均值作为第二资源波动基数。
将资源使用上限字段的值修改为第一资源波动基数与第一资源波动系数的乘积,将资源需求字段的值修改为第二资源波动基数与第二资源波动系数的乘积。
其中,第一资源波动系数根据历史资源使用数据中资源使用量的平均值和第一资源波动基数之间的差异确定,第二资源波动系数根据历史资源使用数据中资源使用量的平均值和第二资源波动基数之间的差异确定。
作为一个示例,计算历史资源使用数据中属于资源使用高峰期的资源使用量的平均值作为历史高峰资源基数,计算历史高峰资源基数和资源使用上限字段的当前值之间的第一差值绝对值,计算第一资源波动基数和资源使用上限字段的当前值之间的第二差值绝对值,计算第一差值绝对值与第二差值绝对值之间的比值,基于比值得到第一资源波动系数,则第一资源波动系数的计算公式为:
其中,γD1为第一资源波动系数;B0为资源使用上限字段的当前值,也即是修改前资源使用上限字段的值;B2为历史高峰资源基数;B1为第一资源波动基数;|B0-B2|为第一差值绝对值;|B0-B1|为第二差值绝对值;1为常数。
需要说明的是,由于第一差值绝对值|B0-B2|,用于表征历史高峰资源基数与资源使用上限字段的当前值之间的高峰资源差异,且资源使用上限字段的值是通过不断尝试设置的,没有参考标准,因此将第一差值绝对值|B0-B2|为资源差异参考标准;为了使得资源使用上限字段的修改值能够确保业务应用处于高负载状态时资源充足,计算第二差值绝对值|B0-B1|,用于表征第一资源波动基数和资源使用上限字段的当前值之间的高峰资源差异,通过计算第一差值绝对值与第二差值绝对值之间的比值间接反映历史高峰资源基数和第一资源波动基数之间的资源差异情况,资源差异越大,比值越偏离1,也即第一资源波动基数大于历史高峰资源基数时,对应第一资源波动系数较大,第一资源波动基数小于历史高峰资源基数时,对应第一资源波动系数较小,进而使得根据资源差异情况获取的第一资源波动系数更加合理。
基于先验可知,如果容器组的资源使用量远低于资源需求值,那么会导致资源浪费;如果资源使用量高于资源使用上限值,那么会使目标运行实例所在容器组被闲置,因此在实际操作中,可以将资源需求字段的值上下浮动25%,以作为一个良性参考标准,基于此,本申请计算历史资源使用数据中属于资源使用低谷期的资源使用量的平均值作为历史低谷资源基数,计算历史低谷资源基数与第二资源波动基数之间的比值,基于比值和浮动系数获取第二资源波动系数,则第二资源波动系数的计算公式为:
其中,γD2为第二资源波动系数;C1为第二资源波动基数;C2为历史低谷资源基数;1为常数;25%为浮动系数。
需要说明的是,历史低谷资源基数C2反映了历史低谷期的资源使用量,第二资源波动基数C1反映了新近低谷期的资源使用量,计算历史低谷资源基数与第二资源波动基数之间的比值用于表征新近资源使用数据与历史资源使用数据之间的资源差异,由于浮动系数25%为资源数据发生变动情况下资源需求字段的调整系数,进而通过计算比值和浮动系数之间的乘积/>来体现差异浮动程度,资源差异越大,对应比值/>越偏离1,即第二资源波动基数大于历史低峰资源基数时,对应第二资源波动系数较大,第二资源波动基数小于历史低峰资源基数时,对应第二资源波动系数较小,进而使得根据第二资源波动系数γD2修改的资源需求字段的值越合理。
其中,响应于目标运行实例为资源潮汐型,对目标运行实例对应的资源文件中资源使用上限字段和资源需求字段中的至少一个值进行修改的具体步骤为:
将新近资源使用数据中属于资源使用高峰期的资源使用量的均值作为第一资源潮汐基数,并将新近资源使用数据中属于资源使用低谷期的资源使用量的均值作为第二资源潮汐基数。
基于历史资源使用数据预测资源使用高峰期或者资源使用低谷期是否将要出现。
响应于预测到资源使用高峰期将要出现,将资源使用上限字段的值修改为第一资源潮汐基数与第一资源潮汐系数的乘积,并将资源需求字段的值修改为第二资源潮汐基数与第一资源潮汐系数的乘积。
响应于预测到资源使用低谷期将要出现,将资源使用上限字段的值修改为第一资源潮汐基数与第二资源潮汐系数的乘积,并将资源需求字段的值修改为第二资源潮汐基数与第二资源潮汐系数的乘积。
其中,第一资源潮汐系数和第二资源潮汐系数根据历史资源使用数据中属于资源使用高峰期的资源使用量的平均值和属于资源使用低谷期的资源使用量的平均值确定。
一些方式中,基于历史资源使用数据预测资源使用高峰期或者资源使用低谷期是否将要出现,具体为:
对历史资源使用数据中资源使用高峰期的出现时间点和结束时间点进行汇总。
确定每个出现时间点和结束时间点对应的时间特征,并依据多个时间特征对出现时间点和结束时间点进行统计,以确定出现时间点、结束时间点与每个时间特征之间的关联关系。
其中,时间特征包括日期、星期、时刻、假期。
基于关联关系预测资源使用高峰期或者资源使用低谷期是否将要出现。
预测模型的类别有很多种,比如BP神经网络、回归树模型、长短期记忆神经网络和支持向量机等。优选的,本申请实施例利用支持向量机预测资源使用高峰期或者资源使用低谷期的出现。
具体的,支持向量机(Support Vector Machine,SVM)是一类按监督学习(supervised learning)方式对数据进行二元分类的广义线性分类器(generalizedlinear classifier),其决策边界是对学习样本求解的最大边距超平面(maximum-marginhyperplane)。
从线性可分模式分类角度看,SVM的主要思想是:建立一个最优决策超平面,使得该平面两侧距平面最近的两类样本之间的距离最大化,从而对分类问题提供良好的泛化能力。SVM建立的分类超平面,能够在保证分类精度的同时,使超平面两侧的空白区域最大化,从而实现对线性可分问题的最优分类,其中,支持向量机的算法过程如下:
输入样本X={X1,X2,X3,…,XP},期望输出为d=±1(代表两类类别标识,即负类和正类),用于分类的超平面方程为:
WTXP+b=0
式中,XP为输入样本;W为权值向量;b为偏置。
计算任一点XP到超平面的距离为:
其中,‖W‖为超平面的范数。
从而有判别函数:g(X)=r‖W‖=WTXP+b,将判别函数进行归一化,是所有出现时间点的时间特征向量都满足:
WTXP+b≥+1,dP=+1
WTXP+b≤-1,dP=-1
所有在上间隔边界上方的样本属于正类,在下间隔边界下方的样本属于负类。
基于此,本申请实施例利用支持向量机预测资源使用高峰期或者资源使用低谷期是否将要出现。在对历史资源使用数据中资源使用高峰期的出现时间点和结束时间点进行汇总后,以日期、星期、时刻、假期作为时间特征,对于资源使用高峰期的每个出现时间点,分别将每个出现时间点对应的日期、星期、时刻、假期组成对应出现时间点的4维时间特征向量。
比如资源使用高峰期出现的一个时间点为2023年1月21日晚上6点零5分,该天为星期六,且为法定假期,因此基于该时间点可以构建对应的4维时间特征向量[21,6,18,1],其中,时间特征向量的第一维数值21表示时间点在21日,第二维数值6表示时间点在星期六,第三维数值18表示时间点在晚上6点到7点之间,第四维数值1表示时间点在法定假期(如果该时间点不在法定假期,则第四维数值为0)。
根据每个出现时间点对应的时间特征向量训练支持向量机,进而利用训练好的支持向量机预测资源使用高峰期的下个出现时间点。其中,支持向量机的训练过程属于公知技术,不在此赘述。
需要说明的是,本申请实施例中将日期、星期、时刻、假期组成4维的时间特征向量作为支持向量机的输入样本,对于时间特征,本申请实施例不做限制。
同理,对于资源使用高峰期的每个结束时间点,分别将每个结束时间点对应的日期、星期、时刻、假期组成对应结束时间点的时间特征向量,根据每个结束时间点对应的时间特征向量训练支持向量机,进而利用训练好的支持向量机预测资源使用高峰期的下个结束时间点。
进一步的,在目标运行实例为资源潮汐型下,分别计算历史资源使用数据中属于资源使用高峰期的资源使用量的平均值和属于资源使用低谷期的资源使用量的平均值,对应作为历史高峰资源基数和历史低谷资源基数,根据第一资源潮汐基数和历史高峰资源基数之间的资源差异,获取高峰调整系数,根据第二资源潮汐基数和历史低谷资源基数之间的资源差异,获取低谷调整系数,取高峰调整系数和低谷调整系数的较大值作为第一资源潮汐系数,则第一资源潮汐系数的计算公式为:
其中,γC1为第一资源潮汐系数;max为最大值函数;D0为资源使用上限字段的当前值,也即修改前资源使用上限字段的值;D1为第一资源潮汐基数;D2为历史高峰资源基数;E1为第二资源潮汐基数;E2为历史低谷资源基数;ΔE为浮动资源量;25%为浮动系数;1为常数。
需要说明的是,通过分析新近使用数据和历史资源使用数据之间高峰期资源使用差异和低峰期资源使用差异,得到高峰调整系数和低谷调整系数间接反映资源波动情况,而通常高峰期下资源需求量较大,故选择资源波动情况较大所对应时期下所对应的调整系数(高峰调整系数或低谷调整系数),作为资源使用高峰期下的第一资源潮汐系数,进而使得利用第一资源潮汐系数修改后的资源使用上限字段和资源需求字段的值,不但能够保证容器组正运行、业务应用处于高负载状态时资源充足,而且能够提升容云器平台的资源使用效率,使得调度更为合理。
同理,取高峰调整系数和低谷调整系数的较小值作为第二资源潮汐系数,则第二资源潮汐系数的计算公式为:
其中,γC2为二资源潮汐系数;min为最小值函数。
需要说明的是,通过分析新近使用数据和历史资源使用数据之间高峰期资源使用差异和低峰期资源使用差异,得到高峰调整系数和低谷调整系数间接反映资源波动情况,通常低峰期的资源需求量较小,故选择资源波动情况较小所对应时期下所对应的调整系数(高峰调整系数或低谷调整系数),作为资源使用低谷期下的第二资源潮汐系数,以避免资源使用上限字段和资源需求字段的值修改过大,造成大量资源浪费。
至此,基于目标运行实例的资源使用特征和新近资源使用数据,完成对目标运行实例对应的资源文件中的资源使用上限字段和资源需求字段中的至少一个值的修改。
步骤S104,响应于目标运行实例对应的资源文件发生变化,对目标运行实例进行重调度,以完成对容器云平台中资源的规划。
具体的,容器云平台的Kubelet组件通过API-Server组件对目标运行实例对应的资源文件进行监听。响应于监听到目标运行实例对应的资源文件中的资源使用上限字段和资源需求字段中的至少一个值发生变化,根据变化后的资源使用上限字段和资源需求字段的值在容器云平台中创建第二容器组,以部署目标运行实例。同时,将第一容器组删除,以将第一容器组所占用的资源释放。
综上所述,本申请提供的基于历史使用数据规划容器组资源的方法中,通过周期性获取并存储目标运行实例的历史资源使用数据,以利用历史资源使用数据分析目标运行实例的资源使用特征,然后根据目标运行实例的资源使用特征和新近资源使用数据,对目标运行实例对应的资源文件中的资源使用上限字段和资源需求字段中的至少一个值进行修改,使得根据历史资源使用数据进行动态调整的资源使用上限字段和资源需求字段的值更加科学和精细,进而当目标运行实例对应的资源文件发生变化时,对目标运行实例进行重调度,以完成对容器云平台中资源的规划。由此,基于历史资源使用数据对目标运行实例的资源使用上限和资源需求进行优化,实现了对目标运行实例的资源使用上限和资源需求的智能化调整,使得容器云平台整体的资源分配更加合理,既能够在业务应用处于高负载状态时确保运行实例能够使用充足的资源,又能够及时将运行实例所占用的闲置资源及时划归容器云平台统一调配,提升了容器云平台的资源使用效率。
本申请实施例利用上述基于历史使用数据规划容器组资源的方法解决现有技术中存在的资源浪费问题:
某运行实例长期使用100m的CPU资源,也即是资源平稳基数为100m,CPU资源的资源使用上限字和资源需求字段的当前值都设置为1000m,而根据该运行实例的历史资源使用数据确定该运行实例属于资源平稳型后,则根据资源平稳系数130%将CPU资源的资源需求字段的值修改为130m,同时保持资源使用上限字段不变,也即是CPU资源的资源使用上限字段的值仍为1000m。如此,既保障了运行实例对CPU资源的正常使用,也保留了对该运行实例的资源使用限制,在正常运行时可以让出870m的CPU资源供其他运行实例使用,在访问流量突然增大时也允许该运行实例使用1000m的CPU资源。
某运行实例在低谷期使用100m的CPU资源,在高峰时使用1000m的CPU资源,且高峰期随机出现,CPU资源的资源使用上限字段和资源需求字段的当前值设置为4000m,而根据该运行实例的历史资源使用数据确定该运行实例属于资源波动型后,根据第一资源波动系数200%将CPU资源的资源使用上限字段修改为2000m,根据第二资源波动系数120%将CPU资源的资源需求字段修改为120m。如此,既保障了运行实例对资源的正常使用,也保留了对该运行实例的资源使用限制,在正常运行时可以让出3880m的CPU资源供其他运行实例使用,在访问流量突然增大时也允许该运行实例使用2000m的CPU资源。
某运行实例在低谷期使用100m的CPU资源,在高峰时使用1000m的CPU资源,且每个月月初或者节假日期间为CPU资源的使用高峰期,CPU资源的资源使用上限字段和资源需求字段的当前值都设置为4000m,而根据该运行实例的历史资源使用数据确定该运行实例属于资源潮汐型后,先对历史资源使用数据进行支持向量机的训练,并根据训练好的支持向量机模对高峰期和低谷期的未来出现时间进行预测。如果预测到低谷期即将到来,根据第二资源潮汐系数150%分别将CPU资源的资源使用上限字段和资源需求字段修改为1500m和150m;如果预测到高峰期即将到来,根据第一资源潮汐系数200%分别将CPU资源的资源使用上限字段和资源需求字段修改为2000m和200m。如此,既保障了运行实例对资源的正常使用,也保留了对该运行实例的资源使用限制,在低谷期可以让出3850m的CPU资源供其他运行实例使用,在访问流量突然增大时也允许该运行实例使用1500m的CPU资源,在高峰期也可以让出3800m的CPU资源供其他运行实例使用,在访问流量突然增大时也允许该运行实例使用2000m的CPU资源。
由此可知,根据历史资源使用数据对运行实例进行分类,按照不同策略设置资源使用上限字段和资源需求字段的值,使得值设置更加科学和精细,更加符合运行实例的要求,进而既能够在业务应用处于高负载状态时确保运行实例能够使用充足的资源,又能够及时将运行实例所占用的闲置资源及时划归容器云平台统一调配,提升了容器云平台资源使用效率。
示例性系统
基于与上述基于历史使用数据规划容器组资源的方法的相同发明构思,本申请实施例提供基于历史使用数据规划容器组资源的系统,如附图3所示,图3为根据本申请的一些实施例提供的基于历史使用数据规划容器组资源的系统的结构示意图,该系统包括:资源处理单元301、资源分析单元302、字段修改单元303和资源规划单元304。其中:
资源处理单元301,用于周期性获取并存储目标运行实例的资源使用数据;其中,目标运行实例部署在容器云平台中的第一容器组中。
资源分析单元302,用于对目标运行实例的历史资源使用数据进行分析,以确定目标运行实例的资源使用特征。
字段修改单元303,用于基于目标运行实例的资源使用特征和新近资源使用数据,对目标运行实例对应的资源文件中的资源使用上限字段和资源需求字段中的至少一个值进行修改。
资源规划单元304,用于响应于目标运行实例对应的资源文件发生变化,对目标运行实例进行重调度,以完成对容器云平台中资源的规划。
本申请实施例提供的一种基于历史使用数据规划容器组资源的系统,能够实现上述任一实施例提供的一种基于历史使用数据规划容器组资源的方法的流程、步骤,并达到相同的技术效果,在此不再一一赘述。
示例性设备
图4为根据本申请的一些实施例提供的电子设备的结构示意图;如图4所示,该电子设备包括:
一个或多个处理器401;
计算机可读介质,可以配置为存储一个或多个程序402,一个或多个处理器401执行一个或多个程序402时,实现如下步骤:周期性获取并存储目标运行实例的资源使用数据;目标运行实例部署在容器云平台中的第一容器组中;对目标运行实例的历史资源使用数据进行分析,以确定目标运行实例的资源使用特征;基于目标运行实例的资源使用特征和新近资源使用数据,对目标运行实例对应的资源文件中的资源使用上限字段和资源需求字段中的至少一个值进行修改;响应于目标运行实例对应的资源文件发生变化,对目标运行实例进行重调度,以完成对容器云平台中资源的规划。
图5为根据本申请的一些实施例提供的电子设备的硬件结构;如图5所示,该电子设备的硬件结构可以包括:处理器501、通信接口502、计算机可读介质503和通信总线504。
其中,处理器501、通信接口502、计算机可读存储介质503通过通信总线504完成相互间的通信。
可选地,通信接口502可以为通信模块的接口,如GSM模块的接口。
其中,处理器501具体可以配置为:周期性获取并存储目标运行实例的资源使用数据;其中,目标运行实例部署在容器云平台中的第一容器组中;对目标运行实例的历史资源使用数据进行分析,以确定目标运行实例的资源使用特征;基于目标运行实例的资源使用特征和新近资源使用数据,对目标运行实例对应的资源文件中的资源使用上限字段和资源需求字段中的至少一个值进行修改;响应于目标运行实例对应的资源文件发生变化,对目标运行实例进行重调度,以完成对容器云平台中资源的规划。
处理器501可以是通用处理器,包括中央处理器(central processing unit,简称CPU)、网络处理器(Network Processor,简称NP)等,还可以是数字信号处理器(DSP)、专用集成电路(ASIC)、现成可编程门阵列(FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本申请实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
本申请实施例的电子设备以多种形式存在,包括但不限于:
(1)移动通信设备:这类设备的特点是具备移动通信功能,并且以提供话音、数据通信为主要目标。这类终端包括:智能手机(例如:iPhone)、多媒体手机、功能性手机,以及低端手机等。
(2)超移动个人计算机设备:这类设备属于个人计算机的范畴,有计算和处理功能,一般也具备移动上网特性。这类终端包括:PDA、MID和UMPC设备等,例如iPad。
(3)便携式娱乐设备:这类设备可以显示和播放多媒体内容。该类设备包括:音频、视频播放器(例如:iPod),掌上游戏机,电子书,以及智能玩具和便携式车载导航设备。
(4)服务器:提供计算服务的设备,服务器的构成包括处理器、硬盘、内存、系统总线等,服务器和通用的计算机架构类似,但是由于需要提供高可靠的服务,因此在处理能力、稳定性、可靠性、安全性、可扩展性、可管理性等方面要求较高。
(5)其他具有数据交互功能的电子装置。
需要指出,根据实施的需要,可将本申请实施例中描述的各个部件/步骤拆分为更多部件/步骤,也可以将两个或多个部件/步骤或者部件/步骤的部分操作组合成新的部件/步骤,以实现本申请实施例的目的。
上述根据本申请实施例的方法可在硬件、固件中实现,或者被实现为可存储在记录介质(诸如CD ROM、RAM、软盘、硬盘或磁光盘)中的软件或计算机代码,或者被实现通过网络下载的原始存储在远程记录介质或非暂时机器存储介质中并将被存储在本地记录介质中的计算机代码,从而在此描述的方法可被存储在使用通用计算机、专用处理器或者可编程或专用硬件(诸如ASIC或FPGA)的记录介质上的这样的软件处理。可以理解,计算机、处理器、微处理器控制器或可编程硬件包括可存储或接收软件或计算机代码的存储组件(例如,RAM、ROM、闪存等),当软件或计算机代码被计算机、处理器或硬件访问且执行时,实现在此描述的基于历史使用数据规划容器组资源的方法。此外,当通用计算机访问用于实现在此示出的方法的代码时,代码的执行将通用计算机转换为用于执行在此示出的方法的专用计算机。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及方法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和涉及约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请实施例的范围。
需要说明的是,本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于设备及系统实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。
以上所描述的设备及系统实施例仅仅是示意性的,其中作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元提示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
以上仅为本申请的优选实施例,并不用于限制本申请,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
Claims (9)
1.一种基于历史使用数据规划容器组资源的方法,其特征在于,所述方法包括:
周期性获取并存储目标运行实例的资源使用数据;其中,所述目标运行实例部署在容器云平台中的第一容器组中;
对所述目标运行实例的历史资源使用数据进行分析,以确定所述目标运行实例的资源使用特征;
基于所述目标运行实例的资源使用特征和新近资源使用数据,对所述目标运行实例对应的资源文件中的资源使用上限字段和资源需求字段中的至少一个值进行修改;
响应于所述目标运行实例对应的资源文件发生变化,对所述目标运行实例进行重调度,以完成对所述容器云平台中资源的规划;
确定所述目标运行实例的资源使用特征的具体步骤是:
将所述历史资源使用数据中资源使用量超过第一阈值且持续时长超过第二阈值的时间段作为资源使用高峰期;其中,所述第一阈值根据所述历史资源使用数据中资源使用量的平均值、最大值、最小值确定,所述第二阈值根据所述目标运行实例的历史资源使用数据的获取周期确定;
将所述历史资源使用数据中除所述资源使用高峰期以外的时间段作为资源使用低谷期;
响应于所述历史资源使用数据中不存在所述资源使用高峰期,将所述目标运行实例确定为资源平稳型;
响应于所述历史资源使用数据中存在所述资源使用高峰期,且所述资源使用高峰期随机出现,将所述目标运行实例确定为资源波动型;
响应于所述历史资源使用数据中存在所述资源使用高峰期,且所述资源使用高峰期按规律重复出现,将所述目标运行实例确定为资源潮汐型。
2.根据权利要求1所述的基于历史使用数据规划容器组资源的方法,其特征在于,所述基于所述目标运行实例的资源使用特征和新近资源使用数据,对所述目标运行实例对应的资源文件中的资源使用上限字段和资源需求字段中的至少一个值进行修改,包括:
响应于所述目标运行实例为所述资源平稳型,将所述新近资源使用数据中资源使用量的均值作为资源平稳基数;
将所述资源需求字段的值修改为所述资源平稳基数与资源平稳系数的乘积;其中,所述资源平稳系数根据所述历史资源使用数据中资源使用量的平均值确定。
3.根据权利要求1所述的基于历史使用数据规划容器组资源的方法,其特征在于,所述基于所述目标运行实例的资源使用特征和新近资源使用数据,对所述目标运行实例对应的资源文件中的资源使用上限字段和资源需求字段中的至少一个值进行修改,包括:
响应于所述目标运行实例为所述资源波动型,将所述新近资源使用数据中属于所述资源使用高峰期的资源使用量的均值作为第一资源波动基数,并将所述新近资源使用数据中属于所述资源使用低谷期的资源使用量的均值作为第二资源波动基数;
将所述资源使用上限字段的值修改为所述第一资源波动基数与第一资源波动系数的乘积;
将所述资源需求字段的值修改为所述第二资源波动基数与第二资源波动系数的乘积;
其中,所述第一资源波动系数根据所述历史资源使用数据中资源使用量的平均值和所述第一资源波动基数之间的差异确定,所述第二资源波动系数根据所述历史资源使用数据中资源使用量的平均值和所述第二资源波动基数之间的差异确定。
4.根据权利要求1所述的基于历史使用数据规划容器组资源的方法,其特征在于,所述基于所述目标运行实例的资源使用特征和新近资源使用数据,对所述目标运行实例对应的资源文件中的资源使用上限字段和资源需求字段中的至少一个值进行修改,包括:
响应于所述目标运行实例为所述资源潮汐型,将所述新近资源使用数据中属于所述资源使用高峰期的资源使用量的均值作为第一资源潮汐基数,并将所述新近资源使用数据中属于所述资源使用低谷期的资源使用量的均值作为第二资源潮汐基数;
基于所述历史资源使用数据预测所述资源使用高峰期或者所述资源使用低谷期是否将要出现;
响应于预测到所述资源使用高峰期将要出现,将所述资源使用上限字段的值修改为所述第一资源潮汐基数与第一资源潮汐系数的乘积,并将所述资源需求字段的值修改为所述第二资源潮汐基数与第一资源潮汐系数的乘积;
响应于预测到所述资源使用低谷期将要出现,将所述资源使用上限字段的值修改为所述第一资源潮汐基数与第二资源潮汐系数的乘积,并将所述资源需求字段的值修改为所述第二资源潮汐基数与第二资源潮汐系数的乘积;
其中,所述第一资源潮汐系数和所述第二资源潮汐系数根据所述历史资源使用数据中属于资源使用高峰期的资源使用量的平均值和属于资源使用低谷期的资源使用量的平均值确定。
5.根据权利要求4所述的基于历史使用数据规划容器组资源的方法,其特征在于,基于所述历史资源使用数据预测所述资源使用高峰期或者所述资源使用低谷期是否将要出现,具体为:
对所述历史资源使用数据中所述资源使用高峰期的出现时间点和结束时间点进行汇总;
确定每个所述出现时间点和所述结束时间点对应的时间特征,并依据多个所述时间特征对所述出现时间点和所述结束时间点进行统计,以确定所述出现时间点、所述结束时间点与每个所述时间特征之间的关联关系;其中,所述时间特征包括日期、星期、时刻、假期;
基于所述关联关系预测所述资源使用高峰期或者所述资源使用低谷期是否将要出现。
6.根据权利要求1-5中任一项所述的基于历史使用数据规划容器组资源的方法,其特征在于,所述响应于所述目标运行实例对应的资源文件发生变化,对所述目标运行实例进行重调度,具体为:
所述容器云平台的Kubelet组件通过API-Server组件对所述目标运行实例对应的资源文件进行监听;
响应于监听到所述目标运行实例对应的资源文件中的所述资源使用上限字段和所述资源需求字段中的至少一个值发生变化,根据变化后的所述资源使用上限字段和所述资源需求字段的值在所述容器云平台中创建第二容器组,以部署所述目标运行实例;
将所述第一容器组删除,以将所述第一容器组所占用的资源释放。
7.一种基于历史使用数据规划容器组资源的系统,其特征在于,所述系统包括:
资源处理单元,用于周期性获取并存储目标运行实例的资源使用数据;其中,所述目标运行实例部署在容器云平台中的第一容器组中;
资源分析单元,用于对所述目标运行实例的历史资源使用数据进行分析,以确定所述目标运行实例的资源使用特征;
字段修改单元,用于基于所述目标运行实例的资源使用特征和新近资源使用数据,对所述目标运行实例对应的资源文件中的资源使用上限字段和资源需求字段中的至少一个值进行修改;
资源规划单元,用于响应于所述目标运行实例对应的资源文件发生变化,对所述目标运行实例进行重调度,以完成对所述容器云平台中资源的规划;
所述资源分析单元进一步配置为:
将所述历史资源使用数据中资源使用量超过第一阈值且持续时长超过第二阈值的时间段作为资源使用高峰期;其中,所述第一阈值根据所述历史资源使用数据中资源使用量的平均值、最大值、最小值确定,所述第二阈值根据所述目标运行实例的历史资源使用数据的获取周期确定;
将所述历史资源使用数据中除所述资源使用高峰期以外的时间段作为资源使用低谷期;
响应于所述历史资源使用数据中不存在所述资源使用高峰期,将所述目标运行实例确定为资源平稳型;
响应于所述历史资源使用数据中存在所述资源使用高峰期,且所述资源使用高峰期随机出现,将所述目标运行实例确定为资源波动型;
响应于所述历史资源使用数据中存在所述资源使用高峰期,且所述资源使用高峰期按规律重复出现,将所述目标运行实例确定为资源潮汐型。
8.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时,实现权利要求1-6任一所述的基于历史使用数据规划容器组资源的方法。
9.一种电子设备,其特征在于,包括:存储器、处理器、以及存储在所述存储器中并可在所述处理器上运行的程序,所述处理器执行所述程序时实现如权利要求1-6任一所述的基于历史使用数据规划容器组资源的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310226993.3A CN116257360B (zh) | 2023-03-09 | 2023-03-09 | 一种基于历史使用数据规划容器组资源的方法和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310226993.3A CN116257360B (zh) | 2023-03-09 | 2023-03-09 | 一种基于历史使用数据规划容器组资源的方法和系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116257360A CN116257360A (zh) | 2023-06-13 |
CN116257360B true CN116257360B (zh) | 2023-09-08 |
Family
ID=86680728
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310226993.3A Active CN116257360B (zh) | 2023-03-09 | 2023-03-09 | 一种基于历史使用数据规划容器组资源的方法和系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116257360B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN118626211A (zh) * | 2024-08-09 | 2024-09-10 | 浙江大华技术股份有限公司 | 一种资源管理方法、电子设备及计算机可读存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110287003A (zh) * | 2019-06-28 | 2019-09-27 | 北京九章云极科技有限公司 | 资源的管理方法和管理系统 |
CN110990159A (zh) * | 2019-12-25 | 2020-04-10 | 浙江大学 | 一种基于历史数据分析的容器云平台资源配额预测方法 |
CN111327655A (zh) * | 2018-12-14 | 2020-06-23 | 中移(杭州)信息技术有限公司 | 多租户容器资源配额预测方法、装置及电子设备 |
CN115167980A (zh) * | 2022-06-30 | 2022-10-11 | 中国电信股份有限公司 | 一种容器资源调整方法、装置、电子设备及存储介质 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP3516516B1 (en) * | 2016-09-21 | 2022-05-11 | Accenture Global Solutions Limited | Dynamic resource allocation for application containers |
-
2023
- 2023-03-09 CN CN202310226993.3A patent/CN116257360B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111327655A (zh) * | 2018-12-14 | 2020-06-23 | 中移(杭州)信息技术有限公司 | 多租户容器资源配额预测方法、装置及电子设备 |
CN110287003A (zh) * | 2019-06-28 | 2019-09-27 | 北京九章云极科技有限公司 | 资源的管理方法和管理系统 |
CN110990159A (zh) * | 2019-12-25 | 2020-04-10 | 浙江大学 | 一种基于历史数据分析的容器云平台资源配额预测方法 |
CN115167980A (zh) * | 2022-06-30 | 2022-10-11 | 中国电信股份有限公司 | 一种容器资源调整方法、装置、电子设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN116257360A (zh) | 2023-06-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113010260B (zh) | 容器数量弹性伸缩方法以及容器数量弹性伸缩方法系统 | |
CN116257360B (zh) | 一种基于历史使用数据规划容器组资源的方法和系统 | |
CN111147604B (zh) | 一种车联网边缘计算的负载均衡方法 | |
CN110830964B (zh) | 信息调度方法、物联网平台和计算机可读存储介质 | |
US20230273833A1 (en) | Resource scheduling method, electronic device, and storage medium | |
CN113867957A (zh) | 一种跨集群容器数量弹性伸缩实现方法及装置 | |
CN114844791B (zh) | 基于大数据的云服务自动管理分配方法、系统及存储介质 | |
CN113760516A (zh) | 一种多云环境下的弹性伸缩方法、装置、设备及介质 | |
CN117056018A (zh) | 资源调度方法、装置、设备、程序产品和存储介质 | |
CN117407160A (zh) | 一种边缘计算场景下在线任务和离线任务的混合部署方法 | |
CN117972367A (zh) | 一种数据存储预测方法、数据存储子系统及智能计算平台 | |
CN117311999B (zh) | 一种服务集群的资源调度方法、存储介质及电子设备 | |
CN112948109B (zh) | 一种ai计算集群的配额弹性调度方法、装置及介质 | |
CN117667305A (zh) | 基于业务场景的安全策略的部署方法、装置及电子设备 | |
CN114064226A (zh) | 容器集群的资源调协方法、调协装置及存储介质 | |
CN108933834A (zh) | 一种调度方法及调度装置 | |
CN117544635A (zh) | 一种资源管理方法、装置、设备及存储介质 | |
CN117056064A (zh) | 资源分配方法、装置、服务器、存储介质和程序产品 | |
CN115878303A (zh) | 一种资源调度方法、装置及电子设备 | |
CN114035940A (zh) | 资源分配方法以及装置 | |
CN109992391B (zh) | 连接管理方法和系统 | |
CN111625343A (zh) | 容器调度方法、装置、计算机设备及存储介质 | |
CN117170881B (zh) | 一种资源调控的方法、装置及存储介质、处理器 | |
CN118331750B (zh) | 一种用于处理网络威胁的动态资源分配系统、电子设备及存储介质 | |
CN117651044B (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 |