一种kubernetes集群的pod调度方法、装置及设备与流程

    专利2022-07-08  90


    本申请涉及计算机技术领域,特别涉及一种kubernetes集群的pod调度方法、装置、设备及可读存储介质。



    背景技术:

    在云计算时代,越来越多的公司和个人使用kubernetes,kubernetes是使用调度组件(kube-scheduler)对pod进行调度的。调度组件是kubernetes系统的核心组件之一,主要负责整个集群资源的调度功能,根据特定的调度算法和策略,将pod调度到最优的工作节点上面去,从而更加合理、更加充分的利用集群的资源,这也是我们选择使用kubernetes一个非常重要的理由。

    然而,调度组件选择出的最优节点未必是最合适的节点,并且很容易出现某种资源剩余很多,而其他资源却不足的现象,导致资源无法得到充分的利用。比如cpu剩余1核而内存剩余10m,cpu剩余的明显比内存剩余的多,这将导致剩余的cpu无法得到充分的利用,造成cpu资源浪费。

    综上,如何避免节点上cpu资源和内存资源的浪费,是亟待本领域技术人员解决的问题。



    技术实现要素:

    本申请的目的是提供一种kubernetes集群的pod调度方法、装置、设备及可读存储介质,用以解决目前的pod调度方案存在浪费cpu资源或内存资源的问题。其具体方案如下:

    第一方面,本申请提供了一种kubernetes集群的pod调度方法,应用于调度组件,包括:

    确定目标pod的cpu需求和内存需求;

    计算所述cpu需求与所述内存需求的比值,得到需求比值;

    从可调度集合中,筛选剩余比值最接近所述需求比值的可调度节点,以作为调度结果,其中所述剩余比值为cpu剩余与内存剩余的比值。

    优选的,所述从可调度集合中,筛选剩余比值最接近所述需求比值的可调度节点,以作为调度结果,包括:

    根据剩余比值与所述需求比值的接近程度,计算可调度集合中每个可调度节点的得分;

    确定得分最高的可调度节点,以作为调度结果。

    优选的,所述根据剩余比值与所述需求比值的接近程度,计算可调度集合中每个可调度节点的得分,包括:

    根据所述需求比值,绘制资源需求线;

    将可调度集合中每个可调度节点的cpu剩余和内存剩余作为坐标,计算每个所述可调度节点与所述资源需求线之间的距离;

    根据所述距离,确定每个所述可调度节点的得分。

    优选的,在所述计算可调度集合中每个可调度节点的cpu剩余与内存剩余的比值,得到每个所述可调度节点的剩余比值之前,还包括:

    从kubernetes集群的全部节点中筛选出满足预选策略的节点,得到可调度集合。

    优选的,在所述确定目标pod的cpu需求和内存需求之前,还包括:

    根据预先编写的调度程序生成镜像文件,以静态pod的方式运行所述调度程序;

    在所述调度组件的配置文件中增加所述调度程序对应的调度策略,并设置调度实现接口;

    重启所述调度组件。

    第二方面,本申请提供了一种kubernetes集群的pod调度装置,应用于调度组件,包括:

    需求确定模块:用于确定目标pod的cpu需求和内存需求;

    比值计算模块:用于计算所述cpu需求与所述内存需求的比值,得到需求比值;

    节点筛选模块:用于从可调度集合中,筛选剩余比值最接近所述需求比值的可调度节点,以作为调度结果,其中所述剩余比值为cpu剩余与内存剩余的比值。

    优选的,所述节点筛选模块包括:

    得分计算单元:用于根据剩余比值与所述需求比值的接近程度,计算可调度集合中每个可调度节点的得分;

    调度结果确定单元:用于确定得分最高的可调度节点,以作为调度结果。

    优选的,所述得分计算单元包括:

    需求线绘制子单元:用于根据所述需求比值,绘制资源需求线;

    距离计算子单元:用于将可调度集合中每个可调度节点的cpu剩余和内存剩余作为坐标,计算每个所述可调度节点与所述资源需求线之间的距离;

    得分计算子单元:用于根据所述距离,确定每个所述可调度节点的得分。

    第三方面,本申请提供了一种kubernetes集群的pod调度设备,包括:

    存储器:用于存储计算机程序;

    处理器:用于执行所述计算机程序,以实现如上所述的kubernetes集群的pod调度方法。

    第四方面,本申请提供了一种可读存储介质,所述可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时用于实现如上所述的kubernetes集群的pod调度方法。

    本申请所提供的一种kubernetes集群的pod调度方法,应用于调度组件,包括:确定目标pod的cpu需求和内存需求;计算cpu需求与内存需求的比值,得到需求比值;从可调度集合中,筛选剩余比值最接近需求比值的可调度节点,以作为调度结果,其中剩余比值为cpu剩余与内存剩余的比值。可见,该方法基于kubernetes集群的调度组件,根据目标pod的cpu需求与内存需求的比值来优化节点选择过程,选择出最适合目标pod运行的节点,减轻资源使用不平衡的问题,有效减少资源碎片的产生。

    此外,本申请还提供了一种kubernetes集群的pod调度装置、设备及可读存储介质,其技术效果与上述方法的技术效果相对应,这里不再赘述。

    附图说明

    为了更清楚的说明本申请实施例或现有技术的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单的介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

    图1为本申请所提供的一种kubernetes集群的pod调度方法的流程图;

    图2为本申请所提供的一种kubernetes集群的pod调度方法的过程示意图;

    图3为本申请所提供的一种kubernetes集群的pod调度装置的功能框图;

    图4为本申请所提供的一种kubernetes集群的pod调度设备的结构示意图。

    具体实施方式

    本申请的核心是提供一种kubernetes集群的pod调度方法、装置、设备及可读存储介质,基于kubernetes集群的调度组件,根据目标pod的cpu需求与内存需求的比值来优化节点选择过程,选择出最适合目标pod运行的节点,减轻资源使用不平衡的问题,有效减少资源碎片的产生。

    为了使本技术领域的人员更好地理解本申请方案,下面结合附图和具体实施方式对本申请作进一步的详细说明。显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

    下面对本申请提供的一种kubernetes集群的pod调度方法实施例一进行介绍,参见图1,实施例一应用于调度组件,包括:

    s101、确定目标pod的cpu需求和内存需求;

    本实施例中的调度组件是指kubernetes集群的kube-scheduler,kube-scheduler是kubernetes集群的默认调度器,并且是集群控制节点(master)的一部分。对每一个新创建的pod或者是未被调度的pod,kube-scheduler会选择一个最优的节点(node)去运行这个pod。然而,不同pod有不同的资源需求。本实施例主要考虑pod对cpu和内存的需求。

    具体的,本实施例预先对原始的调度组件进行优化,设置相应的调度实现接口,然后基于优化后的调度组件实现本实施例的实施过程,筛选最优的节点来运行目标pod。

    s102、计算所述cpu需求与所述内存需求的比值,得到需求比值;

    具体的,cpu需求的单位可以为核,内存的单位则可以为g。假设目标pod的cpu需求为1核,内存需求为5g,那么上述需求比值即为1/5。

    s103、从可调度集合中,筛选剩余比值最接近所述需求比值的可调度节点,以作为调度结果。

    本实施例中,剩余比值是指节点中cpu剩余与内存剩余的比值。

    在实际应用中,可以利用得分衡量剩余比值与需求比值的接近程序,此时上述s103具体为:根据剩余比值与所述需求比值的接近程度,计算可调度集合中每个可调度节点的得分;确定得分最高的可调度节点,以作为调度结果。具体通过何种方式计算上述剩余比值与需求比值之间的接近程度,本实施例不做限定。

    此处提供一种可行的接近程度的计算方式,不应当将其理解为对本申请的限定:根据所述需求比值,绘制资源需求线;将可调度集合中每个可调度节点的cpu剩余和内存剩余作为坐标,计算每个所述可调度节点与所述资源需求线之间的距离;根据所述距离,确定每个所述可调度节点的得分。

    值得一提的是,kubernetes在将pod调度到集群节点之前会经过预选和优选两个阶段。如图2所示,预选过程输入是所有集群节点,然后调度组件根据预选策略过滤掉不满足预选策略的节点,输出满足预选策略的节点。优选过程输入是预选阶段筛选出的节点,然后调度组件根据优先策略为这些节点进行打分排名,选择得分最高的节点。本实施例在调度组件的优选节点实现,是在优选策略基础上扩展得到的选择策略。本实施的选择策略在预选策略之后执行,但本实施例不限定优选策略与本实施例的选择策略之间的执行顺序。

    当本实施例的选择策略在预选策略之后且在优选策略之前执行时,本实施例的可调度集合即根据预选策略筛选得到的节点集合,而且,此时本实施例筛选得到的节点可能并非最终调度结果,需要进一步根据优选策略筛选出最终调度结果。因此,这种情况下,在s103之前,还包括以下过程:从kubernetes集群的全部节点中筛选出满足预选策略的节点,得到可调度集合,其中,预选策略可以为节点的label必须与pod的selector一致。在s103之后,还包括:根据优选策略,对s103筛选出的可调度节点做进一步筛选过滤,得到最终的调度结果,其中优选策略可以为资源最富裕、负载最小。

    如前文所述,本实施例通过对原始的调度组件进行优化,实现了调度结果的目的。下面简要说明对原始的调度组件的优化过程:编写用于实现s101-s103的调度程序;根据调度程序生成镜像文件,以静态pod的方式运行所述调度程序;在所述调度组件的配置文件中增加所述调度程序对应的调度策略,并设置调度实现接口;重启所述调度组件。其中,静态pod在指定的节点上由kubelet守护进程直接管理,不需要api服务器监管。

    本实施例所提供一种kubernetes集群的pod调度方法,应用于调度组件,包括:确定目标pod的cpu需求和内存需求;计算cpu需求与内存需求的比值,得到需求比值;从可调度集合中,筛选剩余比值最接近需求比值的可调度节点,以作为调度结果,其中剩余比值为cpu剩余与内存剩余的比值。可见,该方法基于kubernetes集群的调度组件,根据目标pod的cpu需求与内存需求的比值来优化节点选择过程,选择出最适合目标pod运行的节点,减轻资源使用不平衡的问题,有效减少资源碎片的产生。

    下面开始详细介绍本申请提供的一种kubernetes集群的pod调度方法实施例二。实施例二具体包括:

    第一步,编写调度程序,内部逻辑如下:

    (1)根据pod的cpu需求与内存需求,生成方程式,绘制资源需求线。比如一个pod的资源需求是cpu:1核,内存:5g,则生成的方程式是5*cpu=内存,绘制以内存为纵坐标,cpu为横坐标的资源需求线。

    (2)每个节点的剩余资源(cpu,内存)作为节点坐标,计算每个节点坐标到资源需求线的距离。比如节点1的剩余资源为cpu10核、内存50g,节点2的剩余资源为cpu20核、内存50g,节点3的剩余资源为cpu5核、内存50g,则节点1到资源需求线的距离为0,节点2到资源需求线的距离为0.18,节点3到资源需求线的距离0.91。

    (3)使用公式10*1/(1 距离)来计算节点的得分,则,节点1的得分是10,节点2的得分是8.47,节点3的得分是5.23。

    (4)选出得分最大的节点。

    第二步,调度程序编写完成后,打成镜像,以静态pod的方式运行该调度程序。

    第三步,配置调度策略文件,添加调度程序的信息;

    第四步,重启调度组件。

    可见,本实施例提供的一种kubernetes集群的pod调度方法,基于kubernetes的调度组件,根据pod请求的cpu与内存的资源比来优化节点选择过程,选择出最适合该pod运行的节点,降低出现资源使用不平衡的概率,减少资源碎片的产生。

    下面对本申请实施例提供的kubernetes集群的pod调度装置进行介绍,下文描述的kubernetes集群的pod调度装置与上文描述的kubernetes集群的pod调度方法可相互对应参照。

    如图3所示,本实施例的kubernetes集群的pod调度装置,应用于调度组件,包括:

    需求确定模块301:用于确定目标pod的cpu需求和内存需求;

    比值计算模块302:用于计算所述cpu需求与所述内存需求的比值,得到需求比值;

    节点筛选模块303:用于从可调度集合中,筛选剩余比值最接近所述需求比值的可调度节点,以作为调度结果,其中所述剩余比值为cpu剩余与内存剩余的比值。

    在一些具体的实施例中,所述节点筛选模块包括:

    得分计算单元:用于根据剩余比值与所述需求比值的接近程度,计算可调度集合中每个可调度节点的得分;

    调度结果确定单元:用于确定得分最高的可调度节点,以作为调度结果。

    在一些具体的实施例中,所述得分计算单元包括:

    需求线绘制子单元:用于根据所述需求比值,绘制资源需求线;

    距离计算子单元:用于将可调度集合中每个可调度节点的cpu剩余和内存剩余作为坐标,计算每个所述可调度节点与所述资源需求线之间的距离;

    得分计算子单元:用于根据所述距离,确定每个所述可调度节点的得分。

    本实施例的kubernetes集群的pod调度装置用于实现前述的kubernetes集群的pod调度方法,因此该装置中的具体实施方式可见前文中的kubernetes集群的pod调度方法的实施例部分,例如,需求确定模块301,比值计算模块302,节点筛选模块303,分别用于实现上述kubernetes集群的pod调度方法中步骤s101,s102,s103。所以,其具体实施方式可以参照相应的各个部分实施例的描述,在此不再展开介绍。

    另外,由于本实施例的kubernetes集群的pod调度装置用于实现前述的kubernetes集群的pod调度方法,因此其作用与上述方法的作用相对应,这里不再赘述。

    此外,本申请还提供了一种kubernetes集群的pod调度设备,如图4所示,包括:

    存储器100:用于存储计算机程序;

    处理器200:用于执行所述计算机程序,以实现如上文所述的kubernetes集群的pod调度方法。

    最后,本申请提供了一种可读存储介质,所述可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时用于实现如上文所述的kubernetes集群的pod调度方法。

    本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。

    结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(ram)、内存、只读存储器(rom)、电可编程rom、电可擦除可编程rom、寄存器、硬盘、可移动磁盘、cd-rom、或技术领域内所公知的任意其它形式的存储介质中。

    以上对本申请所提供的方案进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。


    技术特征:

    1.一种kubernetes集群的pod调度方法,其特征在于,应用于调度组件,包括:

    确定目标pod的cpu需求和内存需求;

    计算所述cpu需求与所述内存需求的比值,得到需求比值;

    从可调度集合中,筛选剩余比值最接近所述需求比值的可调度节点,以作为调度结果,其中所述剩余比值为cpu剩余与内存剩余的比值。

    2.如权利要求1所述的方法,其特征在于,所述从可调度集合中,筛选剩余比值最接近所述需求比值的可调度节点,以作为调度结果,包括:

    根据剩余比值与所述需求比值的接近程度,计算可调度集合中每个可调度节点的得分;

    确定得分最高的可调度节点,以作为调度结果。

    3.如权利要求2所述的方法,其特征在于,所述根据剩余比值与所述需求比值的接近程度,计算可调度集合中每个可调度节点的得分,包括:

    根据所述需求比值,绘制资源需求线;

    将可调度集合中每个可调度节点的cpu剩余和内存剩余作为坐标,计算每个所述可调度节点与所述资源需求线之间的距离;

    根据所述距离,确定每个所述可调度节点的得分。

    4.如权利要求1所述的方法,其特征在于,在所述计算可调度集合中每个可调度节点的cpu剩余与内存剩余的比值,得到每个所述可调度节点的剩余比值之前,还包括:

    从kubernetes集群的全部节点中筛选出满足预选策略的节点,得到可调度集合。

    5.如权利要求1-4任意一项所述的方法,其特征在于,在所述确定目标pod的cpu需求和内存需求之前,还包括:

    根据预先编写的调度程序生成镜像文件,以静态pod的方式运行所述调度程序;

    在所述调度组件的配置文件中增加所述调度程序对应的调度策略,并设置调度实现接口;

    重启所述调度组件。

    6.一种kubernetes集群的pod调度装置,其特征在于,应用于调度组件,包括:

    需求确定模块:用于确定目标pod的cpu需求和内存需求;

    比值计算模块:用于计算所述cpu需求与所述内存需求的比值,得到需求比值;

    节点筛选模块:用于从可调度集合中,筛选剩余比值最接近所述需求比值的可调度节点,以作为调度结果,其中所述剩余比值为cpu剩余与内存剩余的比值。

    7.如权利要求6所述的装置,其特征在于,所述节点筛选模块包括:

    得分计算单元:用于根据剩余比值与所述需求比值的接近程度,计算可调度集合中每个可调度节点的得分;

    调度结果确定单元:用于确定得分最高的可调度节点,以作为调度结果。

    8.如权利要求7所述的装置,其特征在于,所述得分计算单元包括:

    需求线绘制子单元:用于根据所述需求比值,绘制资源需求线;

    距离计算子单元:用于将可调度集合中每个可调度节点的cpu剩余和内存剩余作为坐标,计算每个所述可调度节点与所述资源需求线之间的距离;

    得分计算子单元:用于根据所述距离,确定每个所述可调度节点的得分。

    9.一种kubernetes集群的pod调度设备,其特征在于,包括:

    存储器:用于存储计算机程序;

    处理器:用于执行所述计算机程序,以实现如权利要求1-5任意一项所述的kubernetes集群的pod调度方法。

    10.一种可读存储介质,其特征在于,所述可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时用于实现如权利要求1-5任意一项所述的kubernetes集群的pod调度方法。

    技术总结
    本申请公开了一种kubernetes集群的pod调度方法,应用于调度组件,能够确定目标pod的CPU需求和内存需求;计算CPU需求与内存需求的比值,得到需求比值;从可调度集合中,筛选剩余比值最接近需求比值的可调度节点,以作为调度结果,其中剩余比值为CPU剩余与内存剩余的比值。可见,该方法基于kubernetes集群的调度组件,根据目标pod的CPU需求与内存需求的比值来优化节点选择过程,选择出最适合目标pod运行的节点,降低资源使用不平衡的概率,有效减少资源碎片的产生。此外,本申请还提供了一种kubernetes集群的pod调度装置、设备及可读存储介质,其技术效果与上述方法的技术效果相对应。

    技术研发人员:徐玉超;刘正伟
    受保护的技术使用者:北京浪潮数据技术有限公司
    技术研发日:2020.11.25
    技术公布日:2021.03.12

    转载请注明原文地址:https://wp.8miu.com/read-22939.html

    最新回复(0)