一种Kubernetes集群中资源超分提升资源利用率的方法及系统与流程

文档序号:35826968发布日期:2023-10-22 12:22阅读:43来源:国知局
本发明涉及数据处理领域,具体涉及一种kubernetes集群中资源超分提升资源利用率的方法及系统。
背景技术
::1、随着云计算服务的广泛普及和发展,越来越多的企业选择在云平台上部署其业务应用。但目前云平台数据中心的利用率较低,导致大量计算资源被浪费,从而增加了企业运营成本。因此,数据中心资源管理变得更加重要。为了有效管理数据中心的资源,企业需要采用各种工具和技术来提高资源利用率。与传统的手动运维相比,kubernetes作为一种开源的容器编排和管理平台,可以帮助企业实现对数据中心业务应用负载和集群中资源的自动化管理。因此,kubernetes逐渐成为企业在云平台上管理和部署应用程序的关键。2、kubernetes本身实现了许多特性,有助于企业提高数据中心资源的利用率。pod是kubernetes中承载工作负载的基本单位,它拥有许多特性,例如可以请求和限制pod工作负载的资源,并将pod划分为不同的qos。kubernetes内部实现了调度机制,根据pod的qos进行调度管理,并将这些pod均衡地调度到集群的各个节点中,从而提高了整个集群的资源利用率,进而实现成本降低和效率提高。此外,kubernetes还实现了自动扩展、节点管理和插件扩展等技术,企业可以利用kubernetes的自动伸缩策略根据应用程序负载自动调整容器数量,从而更好地利用数据中心的资源。3、kubernetes作为一个容器编排平台,用户可以通过编写应用清单的方式来提交并运行一个容器应用。按照应用的类型,企业中运行的应用可以分为两类:1.在线服务;2.离线服务。在线应用运行时有一些特点:对服务质量的要求比较高、需要长时间运行、具有明显的潮汐效应,即白天资源使用较高、晚上较低。而离线应用在运行时对服务质量的要求并不是很高,只需要运行出结果即可。针对不同应用类型对服务质量的要求不同,kubernetes定义了不同的服务质量类,按服务质量从高到低排列分别是:guaranteed、burstable和besteffort。当节点资源不足时kubernetes会根据不同的服务质量类来决定优先驱逐哪些应用。4、由于在线应用具有潮汐效应,因此运维人员在部署在线应用时,为了避免对波峰期间的在线应用运行质量造成影响,往往会申请超过波峰期资源使用量的资源,以满足在线应用的运行。kubernetes会根据应用申请的资源来判断应用的服务质量类,并且在kubernetes中,当某个应用申请了资源后,为了保障应用的服务质量,该资源会被此应用占用。当在线应用进入波谷阶段时,其资源使用是比较少的,且其申请的大量资源此时由于kubernetes的限制,别的应用在运行时并不能使用这部分资源。因此这就导致大量的资源因无法回收而被浪费。技术实现思路1、本发明的目的在于提供一种高效的kubernetes集群中资源超分提升资源利用率的方法及系统。2、为解决上述技术问题,本发明提供一种kubernetes集群中资源超分提升资源利用率的方法,包括以下步骤:3、采集kubernetes的节点的资源监控数据;4、根据资源监控数据,计算得到kubernetes的节点的可超分资源;5、获取应用的资源分配请求;6、基于资源分配请求和可超分资源,确定目标资源;7、根据目标资源,从kubernetes中将相应的节点的资源分配给所述应用。8、优选地,根据资源监控数据,计算得到kubernetes的节点的可超分资源,具体包括以下步骤:9、根据资源监控数据,从kubernetes中的节点中选取混部节点;10、获取混部节点的当前周期负载数据和未来周期负载趋势预测数据;11、基于线性组合和预测模型,根据当前周期负载数据和未来周期负载趋势预测数据,计算得到混部节点的混部资源信息,作为可超分资源。12、优选地,所述混部资源信息包括cpu、mem和pod数,所述cpu、mem和pod数的计算公式如下:13、混部节点cpu=当前负载系数*(主机cpu可分配容量-主机cpu使用量+混部应用cpu使用量-buffer资源预留系数*主机cpu容量)+(1-当前负载系数)*(主机cpu可分配容量-主机应用预测cpu使用量+主机混部应用预测cpu使用量);14、混部节点内存=当前负载系数*(主机内存可分配容量-主机内存使用量+混部应用内存使用量-buffer资源预留系数*主机内存容量)+(1-当前负载系数)*(主机内存可分配容量-主机应用预测内存使用量+主机混部应用预测内存使用量);15、混部节点pod数=110-pod数最大值-预留数。16、优选地,从kubernetes中将相应的节点的资源分配给所述应用,具体包括以下步骤:17、定义应用列表配置文件;18、根据资源分配请求创建或更新deployment;19、在deployment的创建或更新时,通过应用列表配置文件变更deployment;20、通过deployment部署应用到kubernetes的相应的节点的资源中。21、优选地,所述应用列表配置文件包括deployment的namespace字段、name字段、pod的lables值、pod的annotation中的优先级值和mixed值;在deployment的创建或更新时,通过应用列表配置文件变更deployment,具体包括以下步骤:22、将deployment中namespace字段和name字段与应用列表配置文件中的namespace字段和name字段进行匹配;23、若匹配成功,则根据应用列表配置文件变更deployment。24、优选地,所述根据应用列表配置文件变更deployment包括以下步骤:25、根据应用列表配置文件中的mixed:true值,变更deployment中的pod的lables值;26、根据应用列表配置文件中优先级值,变更deployment中的pod的annotation中的优先级值;27、根据json patch规范通过deployment变更pod。28、优选地,根据json patch规范通过deployment变更pod,具体包括以下步骤:29、判断应用列表配置文件中mixed值;30、若mixed值为true,则按照json patch规范对pod进行如下变更:31、所有容器新增request.hc/mixed-cpu和request.hc/mixed-memory混部扩展资源,值与原容器的request.cpu和request.memory相同,limit上设置相应的混部扩展资源;32、新增request.hc/mixed-podcount资源,该值等于1;33、替换所有容器的request.cpu=0request.memory=0;34、为pod增加nodeselector,值为hc/mixed-schedule=true;35、为pod增加schedulername,值为harmonycloud-scheduler;36、若mixed值为false,则按照json patch规范对pod进行如下变更:37、删除所有容器的request.hc/mixed-cpu和request.cmos.mixed-memory扩展资源,limit也相同;38、删除request.cmos.mixed-podcount资源;39、替换所有容器的request.cpu=yaml中的值request.memory=yaml中的值;40、删除pod的nodeselector,值为hc/mixed-schedule=true。41、优选地,还包括以下步骤:42、获取分配给所述应用的节点的资源使用量;43、在分配给所述应用的节点的资源使用量超过水位线阈值时,根据分配给所述应用的节点和水位线阈值,计算得到需要释放的资源量;44、根据需要释放的资源量和优先级顺序,驱逐节点中的应用。45、优选地,采集kubernetes的节点的资源监控数据,具体包括以下步骤:46、通过prometheus node exporter采集器采集kubernetes的节点的资源监控数据;47、将资源监控数据存储到influxdb时序数据库中。48、本发明还提供一种kubernetes集群中资源超分提升资源利用率的系统,包括:49、资源监控数据采集模块,用于采集kubernetes的节点的资源监控数据;50、可超分资源计算模块,用于根据资源监控数据,计算得到kubernetes的节点的可超分资源;51、资源分配请求获取模块,用于获取应用的资源分配请求;52、目标资源确定模块,用于基于资源分配请求和可超分资源,确定目标资源;53、资源分配模块,用于根据目标资源,从kubernetes中将相应的节点的资源分配给所述应用。54、与现有技术相比,本发明的有益效果为:55、本发明通过的动态混部资源计算方法,可以弥补原生kubernetes因静态资源视图导致的节点资源利用率较低的问题,通过资源超分,在不影响高优先级应用运行的前提下大大提升的了节点的资源利用率,帮助企业降本增效。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1