一种面向kubernetes平台的重调度方法与系统技术方案

技术编号:38989244 阅读:9 留言:0更新日期:2023-10-07 10:19
本发明专利技术公开了一种面向kubernetes平台的重调度方法与系统,方法包括以下步骤:监听并获取kubernetes集群中的异常pod;将异常pod当前所在节点记录到对应的已调度节点列表中;删除异常pod,并提交新的pod,将异常pod对应的已调度节点列表信息更新到对应的新的pod的元数据信息中;在调度周期PreFilter阶段筛选排除掉新的pod的元数据信息中记录的计算节点,接着执行调度周期PreFilter阶段后的调度步骤,将新提交的pod调度到新的计算节点。本发明专利技术实现了错误pod的自动重调度机制,重调度时排除之前让pod发生错误的计算节点,提升kubernetes平台的自动容错能力。kubernetes平台的自动容错能力。kubernetes平台的自动容错能力。

【技术实现步骤摘要】
一种面向kubernetes平台的重调度方法与系统


[0001]本专利技术涉及计算机
,尤其涉及一种面向kubernetes平台的重调度方法与系统。

技术介绍

[0002]Kubernetes,简称k8s,是一个开源的容器编排管理工具,图1为k8s默认调度器kube

scheduler的架构图,当用户提交一个pod到k8s集群时,kube

scheduler会选择一个pod开始进行调度操作,kube

scheduler每次对pod的调度都分为2个阶段:scheduling cycle(调度周期)与binding cycle(绑定周期)。scheduling cycle为pod选择一个计算节点出来,binding cycle则将该pod绑定到某个服务器计算节点,即开始到这个计算节点上运行。其中scheduling cycle包含PreFilter(预过滤)与Filter(过滤)这两个过滤筛选阶段,筛选出一组适合该pod运行的计算节点,另外还包含PreScore(准备阶段)、Score(统计阶段)、Nomalize Score(分数计算阶段)这三个打分阶段与Reserve(储备)、Permit(许可)阶段,最终选出一个得分最高的计算节点供该pod使用。
[0003]随着以kubernetes为代表的云原生技术快速发展,越来越多的应用开始运行在kubernetes平台上,kubernetes平台规模开始逐步增长,应用程序发生异常的概率增大,无疑增加了kubernetes平台的运维难度。前述内容中的节点的外部环境发生了变化后,可能导致调度在该节点的pod无法正常运行。目前kube

scheduler将pod调度到某一个计算节点后,由于节点资源不够或节点硬件发生故障而退出等情况导致该pod运行错误或异常,该pod只会在该计算节点一直重复启动,异常会一直存在,无法被kube

scheduler重调度到其他可能适合该pod正常运行的计算节点,如需重新调度该pod到其他节点,需要手工运维介入。
[0004]现有技术中,专利申请CN20221073734.1公开了因节点的异常导致了所有pod的异常时的重调度方法,采用给目标异常节点打污点标记的方法来防止pod再次调度到该节点,但是在实际情况中,针对某一节点,可能只有个别pod调度到该节点后会发生异常,而其余pod调度到该节点后能够正常工作,但是该方案给节点打上污点标记会导致后续其他新增的pod也无法运行到该节点。

技术实现思路

[0005]本专利技术要解决的技术问题就在于:针对现有技术存在的技术问题,本专利技术提供一种面向kubernetes平台的重调度方法与系统,实现了错误pod的自动重调度机制,把错误pod尽可能的不调度到之前发生错误的计算节点,提升kubernetes平台的自动容错能力。
[0006]为解决上述技术问题,本专利技术提出的技术方案为:一种面向kubernetes平台的重调度方法,包括以下步骤:监听并获取kubernetes集群中的异常pod;将异常pod当前所在节点记录到对应的已调度节点列表中;
删除异常pod,并提交新的pod,新的pod与异常pod一一对应,将所述异常pod对应的已调度节点列表信息更新到对应的新的pod的元数据信息中;在调度周期预过滤阶段筛选排除掉新的pod的元数据信息中记录的计算节点,接着执行调度周期预过滤阶段后的调度步骤,从剩余计算节点中选取得分最高的计算节点,并将新提交的pod调度到该计算节点。
[0007]进一步的,监听并获取kubernetes集群中的异常pod之前还包括:设置最大重调度次数;监听并获取kubernetes集群中的异常pod之后还包括:获取异常pod的当前调度次数,若当前调度次数小于最大重调度次数,将当前调度次数自加一,然后执行将异常pod当前所在节点记录到对应的已调度节点列表中;若当前调度次数大于或等于最大重调度次数,将异常pod对应的已调度节点列表清空,停止对该异常pod进行重调度。
[0008]进一步的,监听并获取kubernetes集群中的异常pod之后还包括:从异常pod的目标字段获取异常原因,若异常原因为调度失败,则将异常pod对应的已调度节点列表清空,执行删除异常pod,并提交新的pod。
[0009]进一步的,删除异常pod,并提交新的pod之后还包括:若异常pod对应的已调度节点列表不为空,则执行将所述异常pod对应的已调度节点列表信息更新到对应的新的pod的元数据信息中;若异常pod对应的已调度节点列表为空,则保持对应的新的pod的元数据信息为空。
[0010]进一步的,筛选排除掉新的pod的元数据信息中记录的计算节点之前,包括:若新的pod的元数据信息为空,执行调度周期预过滤阶段后的调度步骤;若新的pod的元数据信息不为空,执行筛选排除掉新的pod的元数据信息中记录的计算节点。
[0011]本专利技术还提出一种面向kubernetes平台的重调度系统,包括:重调度系统控制器模块,用于监听并获取kubernetes集群中的异常pod;将异常pod当前所在节点记录到对应的已调度节点列表中;删除异常pod,将所述异常pod对应的已调度节点列表信息更新到对应的新的pod的元数据信息中;还用于在调度插件模块筛选排除掉新的pod的元数据信息中记录的计算节点之后,执行调度周期预过滤阶段后的调度步骤,从剩余计算节点中选取得分最高的计算节点,并将新提交的pod调度到该计算节点;pod的控制器,用于在对应的异常pod被删除后提交新的pod,新的pod与异常pod一一对应;调度插件模块,用于在调度周期预过滤阶段筛选排除掉新的pod的元数据信息中记录的计算节点。
[0012]进一步的,所述pod的控制器配置文件中的metadata.annotations字段配置有最大重调度次数参数scheduling

retires;所述重调度系统控制器模块监听并获取kubernetes集群中的异常pod之后还被配置以执行:使用ListFunc插件获取异常pod的控制器中元数据记录的当前调度次数,若当前
调度次数小于最大重调度次数,将当前调度次数自加一,然后将异常pod当前所在节点记录到对应控制器中元数据的已调度节点列表中;若当前调度次数大于或等于最大重调度次数,将异常pod对应的已调度节点列表清空,停止对该异常pod进行重调度。
[0013]进一步的,所述重调度系统控制器模块监听并获取kubernetes集群中的异常pod之后还被配置以执行:从异常pod的目标字段获取异常原因,若异常原因为调度失败,则将异常pod对应的已调度节点列表清空,删除异常pod。
[0014]进一步的,删除异常pod之后,所述重调度系统控制器模块还被配置以执行:使用MutateWebHook插件拦截集群中所有新提交的新的pod;若异常pod对应的已调度节点列表不为空,则将本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种面向kubernetes平台的重调度方法,其特征在于,包括以下步骤:监听并获取kubernetes集群中的异常pod;将异常pod当前所在节点记录到对应的已调度节点列表中;删除异常pod,并提交新的pod,新的pod与异常pod一一对应,将所述异常pod对应的已调度节点列表信息更新到对应的新的pod的元数据信息中;在调度周期预过滤阶段筛选排除掉新的pod的元数据信息中记录的计算节点,接着执行调度周期预过滤阶段后的调度步骤,从剩余计算节点中选取得分最高的计算节点,并将新提交的pod调度到该计算节点。2.根据权利要求1所述的面向kubernetes平台的重调度方法,其特征在于,监听并获取kubernetes集群中的异常pod之前还包括:设置最大重调度次数;监听并获取kubernetes集群中的异常pod之后还包括:获取异常pod的当前调度次数,若当前调度次数小于最大重调度次数,将当前调度次数自加一,然后执行将异常pod当前所在节点记录到对应的已调度节点列表中;若当前调度次数大于或等于最大重调度次数,将异常pod对应的已调度节点列表清空,停止对该异常pod进行重调度。3.根据权利要求1所述的面向kubernetes平台的重调度方法,其特征在于,监听并获取kubernetes集群中的异常pod之后还包括:从异常pod的目标字段获取异常原因,若异常原因为调度失败,则将异常pod对应的已调度节点列表清空,执行删除异常pod,并提交新的pod。4.根据权利要求3所述的面向kubernetes平台的重调度方法,其特征在于,删除异常pod,并提交新的pod之后还包括:若异常pod对应的已调度节点列表不为空,则执行将所述异常pod对应的已调度节点列表信息更新到对应的新的pod的元数据信息中;若异常pod对应的已调度节点列表为空,则保持对应的新的pod的元数据信息为空。5.根据权利要求4所述的面向kubernetes平台的重调度方法,其特征在于,筛选排除掉新的pod的元数据信息中记录的计算节点之前,包括:若新的pod的元数据信息为空,执行调度周期预过滤阶段后的调度步骤;若新的pod的元数据信息不为空,执行筛选排除掉新的pod的元数据信息中记录的计算节点。6.一种面向kubernetes平台的重调度系统,其特征在于,包括:重调度系统控制器模块,用于监听并获取kubernetes集群中的异常pod;将异常pod当前所在节点记录到对应的已调度节点列表中;删除异常pod,将所述异常pod对应的已调度节点列表...

【专利技术属性】
技术研发人员:李准汪黎曹远志秦光睿彭路魏辉洲王琪伟
申请(专利权)人:银河麒麟软件长沙有限公司
类型:发明
国别省市:

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

1