提高kubernetes的节点资源利用率平衡负载的方法及系统技术方案

技术编号:37298979 阅读:9 留言:0更新日期:2023-04-21 22:45
本发明专利技术提供了一种提高kubernetes的节点资源利用率平衡负载的方法及系统,包括:步骤S1:通过配置创建连接到集群的client获取集群支持的kube

【技术实现步骤摘要】
提高kubernetes的节点资源利用率平衡负载的方法及系统


[0001]本专利技术涉及资源分配
,具体地,涉及提高kubernetes的节点资源利用率平衡负载的方法及系统。

技术介绍

[0002]在当前的kubernetes集群中,官方的调度方案是寻找当前时间点下最匹配的节点来部署pod,但pod一旦调度绑定到节点上,便不会重新调。即使集群在一段时间后节点出现负载不均衡,亲和性不匹配等问题。
[0003]本专利技术通过对可重建pod的驱逐来实现pod的再调度,解决了kubernetes集群中pod一旦被绑定,节点不会触发重新调度,随着集群的动态变化,一段时间后集群节点可能出现负载不均衡,亲和性不匹配等问题。

技术实现思路

[0004]针对现有技术中的缺陷,本专利技术的目的是提供一种提高kubernetes的节点资源利用率平衡负载的方法及系统。
[0005]根据本专利技术提供的一种提高kubernetes的节点资源利用率平衡负载的方法,包括:
[0006]步骤S1:通过配置创建连接到集群的client获取集群支持的kube

apiserver版本,判断集群是否支持驱逐,如果不支持驱逐,则直接退出;
[0007]步骤S2:经过校验的集群client,创建sharedInformerFactory,注册nodes,pods,namespaces资源的informer到sharedInformerFactory中,获取集群的的相关信息;
[0008]步骤S3:使用pod选择器组件筛选出进行动态分布调整的pods;
[0009]步骤S4:基于筛选出的能够动态分布调整的pods,根据获取的集群相关信息,获取pod

node的映射关系;
[0010]步骤S5:根据获取的pod

node的映射关系,根据配置文件依次执行策略,从而得到驱逐重建结果;
[0011]步骤S6:重建pod,集群调度器kube

scheduler将重建的pod重新部署到预设节点上;按照配置参数中的interval间隔进行循环监测,重复触发步骤S3至步骤S6,对集群中的pod分布进行动态调整,从而均衡集群负载,调节均衡性;
[0012]所述集群的相关信息包括集群各个节点信息以及每个节点上的pods信息。
[0013]优选地,所述步骤S3采用:
[0014]步骤S3.1:获取配置中的namespace参数,并判断namespace参数是否为空;当namespace参数为空时,则从sharedInformerFactory的缓存中获取namespace参数下除kubernetes系统命名空间以外的所有命名空间中的pod;当namespace参数不为空时,则从sharedInformerFactory的缓存中获取namespace参数下所有命名空间中的pod;
[0015]步骤S3.2:获取配置中的priorityThreshold参数,并判断priorityThreshold参
数是否为空;当priorityThreshold参数为空时,则获取的所有命名空间中的pod都进行动态分布调整;当priorityThreshold参数不为空时,则遍历获取的所有命名空间中的pod,剔除优先级大于priorityThreshold的pod,将获取的剔除后剩余的pod进行动态分布调整。
[0016]优选地,所述执行策略包括:LoadBalancing策略组件、Affinity策略组件以及ReCreate策略组件中的一种或多种。
[0017]优选地,所述执行LoadBalancing策略组件采用:
[0018]步骤S5.1:将获取到的pod状态是success和fail的pod剔除,得到剩下的pod;
[0019]步骤S5.2:从sharedInformerFactory的缓存中获取剩下的pod所在节点的相关信息;
[0020]步骤S5.3:计算各个节点的cpurequest占比NodeCpuRequestPercent和memoryrequest占比NodeMemoryRequestPercent;
[0021]步骤S5.4:计算所有节点的cpurequest比例均值AvgNodesCpuRequest和所有节点的memoryrequest比例均值AvgNodesMemoryRequest;
[0022]步骤S5.5:使用策略配置参数cputhresholds,memorythresholds判断低负载节点:NodeCpuRequestPercent<AvgNodesCpuRequest

cputhresholds并且NodeMemoryRequestPercent<AvgNodesMemoryRequest

memorythresholds;
[0023]步骤S5.6:使用策略配置参数cpuTargetThresholds,memoryTargetThresholds判断高负载节点:NodeCpuRequestPercent>AvgNodesCpuRequest+cpuTargetThresholds或者NodeMemoryRequestPercent>AvgNodesMemoryRequest+memoryTargetThresholds;
[0024]步骤S5.7:计算节点中所有高负载节点pod的cpurequest均值AvgPodCpu和memoryrequest均值AvgPodMemory;
[0025]步骤S5.8:根据所有高负载节点pod的cpurequest均值和memoryrequest均值判断对应节点的各个pod是否待驱逐,待驱逐pod的cpurequest>AvgPodCpu和/或pod的memoryrequest>AvgPodMemory;
[0026]步骤S5.9:使用node选择器组件筛选低负载节点,基于pod亲和性、node亲和性以及污点判断是否满足将pod部署在低负载节点上,且不会变成高负载节点;当找到部署节点部署待驱逐pod,则将当前pod驱逐,否则不驱逐。
[0027]优选地,所述Affinity策略组件采用:分别判断获取的所有命名空间中的pod是否满足pod亲和性、node亲和性以及污点,当pod不满足pod亲和性和/或node亲和性,则使用node选择器组件在集群中筛选满足pod亲和性和node亲和性的节点部署当前pod;当找到部署节点部署待驱逐pod时,则将当前pod驱逐;否则不驱逐。
[0028]优选地,所述ReCreate策略组件采用:判断获取的所有命名空间中的pod的存在时间是否超过策略配置中的maxPodLifeTimeSeconds,有超时的pod本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种提高kubernetes的节点资源利用率平衡负载的方法,其特征在于,包括:步骤S1:通过配置创建连接到集群的client获取集群支持的kube

apiserver版本,判断集群是否支持驱逐,如果不支持驱逐,则直接退出;步骤S2:经过校验的集群client,创建sharedInformerFactory,注册nodes,pods,namespaces资源的informer到sharedInformerFactory中,获取集群的的相关信息;步骤S3:使用pod选择器组件筛选出进行动态分布调整的pods;步骤S4:基于筛选出的能够动态分布调整的pods,根据获取的集群相关信息,获取pod

node的映射关系;步骤S5:根据获取的pod

node的映射关系,根据配置文件依次执行策略,从而得到驱逐重建结果;步骤S6:重建pod,集群调度器kube

scheduler将重建的pod重新部署到预设节点上;按照配置参数中的interval间隔进行循环监测,重复触发步骤S3至步骤S6,对集群中的pod分布进行动态调整,从而均衡集群负载,调节均衡性;所述集群的相关信息包括集群各个节点信息以及每个节点上的pods信息。2.根据权利要求1所述的提高kubernetes的节点资源利用率平衡负载的方法,其特征在于,所述步骤S3采用:步骤S3.1:获取配置中的namespace参数,并判断namespace参数是否为空;当namespace参数为空时,则从sharedInformerFactory的缓存中获取namespace参数下除kubernetes系统命名空间以外的所有命名空间中的pod;当namespace参数不为空时,则从sharedInformerFactory的缓存中获取namespace参数下所有命名空间中的pod;步骤S3.2:获取配置中的priorityThreshold参数,并判断priorityThreshold参数是否为空;当priorityThreshold参数为空时,则获取的所有命名空间中的pod都进行动态分布调整;当priorityThreshold参数不为空时,则遍历获取的所有命名空间中的pod,剔除优先级大于priorityThreshold的pod,将获取的剔除后剩余的pod进行动态分布调整。3.根据权利要求1所述的提高kubernetes的节点资源利用率平衡负载的方法,其特征在于,所述执行策略包括:LoadBalancing策略组件、Affinity策略组件以及ReCreate策略组件中的一种或多种。4.根据权利要求3所述的提高kubernetes的节点资源利用率平衡负载的方法,其特征在于,所述执行LoadBalancing策略组件采用:步骤S5.1:将获取到的pod状态是success和fail的pod剔除,得到剩下的pod;步骤S5.2:从sharedInformerFactory的缓存中获取剩下的pod所在节点的相关信息;步骤S5.3:计算各个节点的cpurequest占比NodeCpuRequestPercent和memoryrequest占比NodeMemoryRequestPercent;步骤S5.4:计算所有节点的cpurequest比例均值AvgNodesCpuRequest和所有节点的memoryrequest比例均值AvgNodesMemoryRequest;步骤S5.5:使用策略配置参数cputhresholds,memorythresholds判断低负载节点:NodeCpuRequestPercent<AvgNodesCpuRequest

cputhresholds并且NodeMemoryRequestPercent<AvgNodesMemoryRequest

memorythresholds;步骤S5.6:使用策略配置参数cpuTargetThresholds,memoryTargetThresholds判断高
负载节点:NodeCpuRequestPercent>AvgNodesCpuRequest+cpuTargetThresholds或者NodeMemoryRequestPercent>AvgNodesMemoryRequest+memoryTargetThresholds;步骤S5.7:计算节点中所有高负载节点pod的cpurequest均值AvgPodCpu和memoryrequest均值AvgPodMemory;步骤S5.8:根据所有高负载节点pod的cpurequest均值和memoryrequest均值判断对应节点的各个pod是否待驱逐,待驱逐pod的cpurequest>AvgPodCpu和/或pod的memoryrequest>AvgPodMemory;步骤S5.9:使用node选择器组件筛选低负载节点,基于pod亲和性、node亲和性以及污点判断是否满足将pod部署在低负载节点上,且不会变成高负载节点;当找到部署节点部署待驱逐pod,则将当前pod驱逐,否则不驱逐。5.根据权利要求3所述的提高kubernetes的节点资源利用率平衡负载的方法,其特征在于,所述Affinity策略组件采用:分别判断获取的所有命名空间中的pod是否满足pod亲和性、node亲和性以及污点,当pod不满足pod亲和性和/或node亲和性,则使用node选择器组件在集群中筛选满足pod亲和性和node亲和性的节点部署当前pod;当找到部署节点部署待驱逐pod时,则将当前pod驱逐;否则不驱逐。6.根据权利要求3所述的提高kubernetes的节点资源利用率平衡负载的方法,其特征在于,所述ReCreate策略组件采用:判断获取的所有命名空间中的pod的存在时间是否超过策略配置中的maxPodLifeTimeSeconds,有超时的pod则保留,没有超过的pod则剔除;对于保留的pod,使用node选择器组件在集群中筛选满足pod亲和性、node亲和性...

【专利技术属性】
技术研发人员:赵文川詹赵林王畅郭进鄢鹏刘清谢瑒聂子璇宫婷
申请(专利权)人:兴业数字金融服务上海股份有限公司
类型:发明
国别省市:

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

1