基于Kubernetes集群的Pod调度方法、装置、设备和介质与流程

文档序号:23628419发布日期:2021-01-12 10:41阅读:126来源:国知局
基于Kubernetes集群的Pod调度方法、装置、设备和介质与流程

本发明涉及通信领域,尤其涉及基于kubernetes集群的pod调度方法、装置、设备和介质。



背景技术:

kubernetes集群是一个开源的,用于管理云平台中多个主机上的容器化的应用,主要用于自动化部署、扩展和管理容器应用,提供了资源调度、部署管理、服务发现、扩容缩容、监控等一整套功能。

在kubernetes集群技术中,节点(node)代表kubernetes集群中运行的宿主物理计算机或虚拟机服务器,为容器提供必要的计算资源。pod作为kubernetes集群的最小调度单位,一个pod中可以包含一个或多个运行的容器,这些容器运行在同一个节点上,共享节点的资源。

现阶段,kubernetes集群的容器调度方案集中在pod的初次调度。根据特定的算法与一系列调度策略,决策出pod可被调度到哪些节点,并选择出最优的节点将pod调度到其上,调度工作结束。pod被调度到工作节点上以后,被绑定在它所在的节点上,直至终止或被删除前都将运行在其上。



技术实现要素:

本发明实施例提供的基于kubernetes集群的pod调度方法、装置、设备和介质,提高了pod调度的灵活性。

根据本发明实施例的一方面,提供一种基于kubernetes集群的pod调度方法,包括:在属于kubernetes集群的多个节点中确定待调出节点;按照预设调度规则从运行于待调出节点的pod队列中筛选出待调度pod,并在多个节点中确定与待调度pod对应的目标调入节点;将待调度pod调度至目标调入节点。

在一种可选的实施方式中,预设调度规则包括必要调度规则,或者,包括必要调度规则和附加调度规则,

其中,必要调度规则包括:待调度pod具备可剥离性;

其中,附加调度规则包括以下一种或多种:按照pod的优先级从低到高的顺序选定待调度pod,待调度pod调出后待调出节点的实时资源占用参数小于预设的资源占用参数上限阈值,参与本次调度的待调度pod的数量最少。

在一种可选的实施方式中,在属于kubernetes集群的多个节点中确定待调出节点,具体包括:每间隔预设周期或确定kubernetes集群加入新的节点,获取多个节点的实时资源占用参数;将多个节点中,实时资源占用参数大于预设的资源占用参数上限阈值的节点确定为待调出节点。

在一种可选的实施方式中,在属于kubernetes集群的多个节点中确定待调出节点,具体包括:每间隔预设周期或确定kubernetes集群加入新的节点,获取多个节点的实时资源占用参数;将多个节点中,实时资源占用参数大于预设的资源占用参数上限阈值且上一次调出时刻与当前时刻的时间差大于预设的调出时间间隔阈值的节点,确定为待调出节点。

在一种可选的实施方式中,在属于kubernetes集群的多个节点中确定待调出节点,具体包括:若监测到在kubernetes集群内pod调度失败事件,从多个节点中选择支持pod正常运行的节点;若所选择的节点的实时资源占用参数与pod预备占用的资源参数的和大于预设的资源占用参数上限阈值,将所选择的节点确定为待调出节点。

在一种可选的实施方式中,在多个节点中确定与待调度pod对应的目标调入节点pod,具体包括:

将多个节点中,满足预设调入条件的节点确定为目标调入节点;其中,预设调入条件包括:实时占用资源参数小于预设的资源占用参数下限阈值,和/或,支持待调度pod正常运行。

在一种可选的实施方式中,方法还包括:若目标调入节点的实时资源占用参数大于预设的资源占用参数下限阈值,将目标调入节点作为新的待调出节点;按照预设调度规则从运行于新的待调出节点的pod队列中筛选出新的待调度pod,并判断多个节点中是否存在与新的待调度pod对应的新的目标调入节点;若多个节点中不存在新的目标调入节点,则删除新的待调度pod;若多个节点中存在新的目标调入节点,则将新的待调度pod调入新的目标调入节点。

在一种可选的实施方式中,方法还包括:为kubernetes集群的pod设置优先级;预设调度规则还包括:新的待调度pod的优先级不高于原先的待调度pod的优先级。

在一种可选的实施方式中,方法还包括:若kubernetes集群的实时资源占用参数大于预设的系统资源占用参数极值,按照pod的优先级从低到高的顺序,从多个节点的pod中逐个删除pod,直至kubernetes集群的实时资源占用参数小于预设的系统资源占用参数极值。

根据本发明实施例的另一方面,提供一种基于kubernetes集群的pod调度装置,包括:第一确定模块,用于在属于kubernetes集群的多个节点中确定待调出节点;第二确定模块,用于按照预设调度规则从运行于待调出节点的pod队列中筛选出待调度pod,并在多个节点中确定与待调度pod对应的目标调入节点;第一调度模块,用于将待调度pod调度至目标调入节点。

在一种可选的实施方式中,预设调度规则包括必要调度规则,或者,包括必要调度规则和附加调度规则,其中,必要调度规则包括:待调度pod具备可剥离性;其中,附加调度规则包括以下一种或多种:按照pod的优先级从低到高的顺序选定待调度pod,待调度pod调出后待调出节点的实时资源占用参数小于预设的资源占用参数上限阈值,参与本次调度的待调度pod的数量最少。

在一种可选的实施方式中,第一确定模块具体用于:每间隔预设周期或确定kubernetes集群加入新的节点,获取多个节点的实时资源占用参数;将多个节点中,实时资源占用参数大于预设的资源占用参数上限阈值的节点确定为待调出节点。

在一种可选的实施方式中,第一确定模块具体用于:每间隔预设周期或确定kubernetes集群加入新的节点,获取多个节点的实时资源占用参数;

将多个节点中,实时资源占用参数大于预设的资源占用参数上限阈值且上一次调出时刻与当前时刻的时间差大于预设的调出时间间隔阈值的节点,确定为待调出节点。

在一种可选的实施方式中,第一确定模块具体用于:若监测到在kubernetes集群内pod调度失败事件,从多个节点中选择支持pod正常运行的节点;若所选择的节点的实时资源占用参数与pod预备占用的资源参数的和大于预设的资源占用参数上限阈值,将所选择的节点确定为待调出节点。

在一种可选的实施方式中,第二确定模块具体用于:将多个节点中,满足预设调入条件的节点确定为目标调入节点;其中,预设调入条件包括:实时占用资源参数小于预设的资源占用参数下限阈值,和/或,支持待调度pod正常运行。

在一种可选的实施方式中,装置还包括:第三确定模块,用于若目标调入节点的实时资源占用参数大于预设的资源占用参数下限阈值,将目标调入节点作为新的待调出节点;判断处理模块,用于按照预设调度规则从运行于新的待调出节点的pod队列中筛选出新的待调度pod,并判断多个节点中是否存在与新的待调度pod对应的新的目标调入节点;第一删除模块,用于若多个节点中不存在新的目标调入节点,则删除新的待调度pod;第二调度模块,用于若多个节点中存在新的目标调入节点,则将新的待调度pod调入新的目标调入节点。

在一种可选的实施方式中,装置还包括:优先级设置模块,用于为kubernetes集群的pod设置优先级;预设调度规则还包括:新的待调度pod的优先级不高于原先的待调度pod的优先级。

在一种可选的实施方式中,装置还包括:第二删除模块,用于若kubernetes集群的实时资源占用参数大于预设的系统资源占用参数极值,按照pod的优先级从低到高的顺序,从多个节点的pod中逐个删除pod,直至kubernetes集群的实时资源占用参数小于预设的系统资源占用参数极值。

根据本发明实施例的再一方面,提供一种基于kubernetes集群的pod调度设备,包括:

存储器,用于存储程序;

处理器,用于运行存储器中存储的程序,以执行本发明实施例提供的基于kubernetes集群的pod调度方法。

本发明实施例提供一种计算机存储介质,计算机存储介质上存储有计算机程序指令,计算机程序指令被处理器执行时实现本发明实施例提供的基于kubernetes集群的pod调度方法。

根据本发明实施例中的基于kubernetes集群的pod调度方法、装置、设备和介质,由于kubernetes集群是高度动态变化的,在实际运行过程中,节点和节点上正在运行的pod可能出现不匹配的情况,在pod完成初次调度后,可以根据需求在集群中确定需要调出pod的待调出节点,并可以按照预设调度规则将pod从正在运行的待调度节点上剥离,调入其他节点,pod不再局限于从始至终的在初次分配的节点上运行,因此提高了pod调度的灵活性。

附图说明

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

图1是示出根据本发明实施例的基于kubernetes集群的pod调度方法的示意流程图;

图2是示出根据本发明实施例的示例性的基于kubernetes集群的pod调度过程的逻辑示意图;

图3是示出根据本发明实施例的示例性的基于kubernetes集群的pod调度过程的逻辑示意图;

图4示出了根据本发明另一实施例提供的基于kubernetes集群的pod调度装置的结构示意图;

图5是本发明实施例中基于kubernetes集群的pod调度设备的示例性硬件架构的结构图。

具体实施方式

下面将详细描述本发明的各个方面的特征和示例性实施例,为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细描述。应理解,此处所描述的具体实施例仅被配置为解释本发明,并不被配置为限定本发明。对于本领域技术人员来说,本发明可以在不需要这些具体细节中的一些细节的情况下实施。下面对实施例的描述仅仅是为了通过示出本发明的示例来提供对本发明更好的理解。

需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

kubernetes集群包括多个节点,以及节点上运行的pod。

其中,节点可以是虚拟机、物理机或云服务商提供的资源等能够为pod提供存储资源和计算资源的设备或云资源。

pod作为kubernetes集群的最小调度单元,一个pod代表着集群中运行的一个进程,它可以由一个或多个容器组成。一个pod中的容器共享容器存储、网络和容器运行配置项。

在现有的pod调度技术中,只是在pod创建之初,将他们绑定在集群已有的节点上。pod在整个生命周期内,均在绑定的节点上运行,直至该pod被删除。这种调度方案只依赖新的pod创建的时间点的集群状态,但不关注后续系统的资源利用率是否高效,资源分配是否公平。

然而,kubernetes集群是高度动态变化的,随着时间的推移会出现运行在工作节点上的pod占用的资源发生变化导致部分节点负载过高,或者集群中存在大量碎片,在调度资源需求较大的pod时没有业务节点可以调度但集群总体资源充足的情况,当集群中同时有新的业务节点加入时也不能够自动将旧的pod迁移到新的节点上来均衡业务节点负担。因此,需要一种更加灵活的调度方案。

为了更好的理解本发明,下面将结合附图,详细描述根据本发明实施例的基于kubernetes集群的pod调度方法、装置、设备和介质,应注意,这些实施例并不用来限制本发明公开的范围。

图1是示出根据本发明实施例的基于kubernetes集群的pod调度方法的示意流程图。如图1所示,本实施例中的基于kubernetes集群的pod调度方法100可以包括步骤110至步骤130。

步骤110,在属于kubernetes集群的多个节点中确定待调出节点。

作一个示例,为了便于理解kubernetes集群、节点、pod以及三者之间的关系,图2示出根据本发明实施例的示例性的基于kubernetes集群的pod调度过程的逻辑示意图。其中,虚线椭圆框表示kubernetes集群,实线椭圆框表示节点,实心圆和阴影圆表示pod。

如图2所示,kubernetes集群内部署了多个节点,例如,节点a、节点b和节点c。每个节点上均运行有pod,例如,节点b上运行有pod1和pod2两个pod。

示例性的,可以将节点a选定为待调出节点。

在本发明的一些实施例中,可以将负载过高的节点选定为待调出节点,此时,步骤110的具体实施方式包括步骤111和步骤112。

步骤111,每间隔预设周期或确定kubernetes集群加入新的节点,获取多个节点的实时资源占用参数。

其中,预设周期可以根据调度需求或调度场景设置,对此不做限定。

在一些实施例中,实时资源占用参数用于表征节点上运行的pod对节点资源的占用程度。示例性的,实时资源占用参数可以是节点资源的实时占用率或者节点资源的实时占用量。

步骤112,将多个节点中,实时资源占用参数大于预设的资源占用参数上限阈值的节点确定为待调出节点。

在该实施例中,可以通过确定实时资源占用参数是否大于资源占用参数上限阈值来判断节点负载是否过高。当节点负载过高时,可以将其选定为待调出节点,可以对集群中各节点的负载动态调整,从而平衡各节点的负载压力。

同时,通过间隔预设周期触发待调度节点的选定操作,能够实时监控各节点的资源情况,从而实现对集群各节点资源的动态调整。

此外,当有新节点加入时触发待调度节点的选定操作,新节点可以平衡原有节点的负载,提高了新节点的资源使用率并优化了资源的分配。

在一些实施例中,预设的资源占用参数上限阈值用于表征节点的负载程度。若大于该资源占用参数上限阈值,则表示资源负载过高。

在一个示例中,为了能够准确的均衡集群中各节点负载,资源占用参数上限阈值可以表征集群资源的平均实时占用率。例如,可以是集群资源的平均实时占用率与大于等于1的系数的乘积。

示例性的,资源占用参数上限阈值可以等于集群中所有节点的实时资源占用量除以该集群中所有节点的资源总和得到的商值与大于等于1的系数的乘积。

在本实施例中,若资源占用参数上限阈值可以表征集群资源的平均实时占用率,可以使得集群中各节点的负载更加趋近于集群的平均值。

在一些实施例中,为了能够更加精准的根据实时资源对pod调度,可以将实时资源划分为计算资源、存储资源等,并分别确定各节点的计算资源负荷程度、存储资源的负荷程度是否过高。

在本发明的一些实施例中,步骤110的具体实施方式包括步骤113和步骤114。

步骤113,每间隔预设周期或确定kubernetes集群加入新的节点,获取多个节点的实时资源占用参数。

其中,步骤113的具体实施方式可参见步骤111的相关内容,对此不再赘述。

步骤114,将多个节点中,实时资源占用参数大于预设的资源占用参数上限阈值且上一次调出时刻与当前时刻的时间差大于预设的调出时间间隔阈值的节点,确定为待调出节点。

针对步骤114,若节点的上一次调出时刻与当前时刻的时间差小于预设的调出时间间隔阈值,表征该节点调用频率过于频繁,则该节点不能作为待调出节点。

在该实施例中,通过设置预设的调出时间间隔阈值,可以防止同一节点被频繁调用,进而避免了因频繁调用导致的节点服务质量下降,从而实现在均衡负载的同时保证了节点服务质量。

在一个实施例中,调出时间间隔阈值可以根据具体的业务场景和业务需求设定,对此不做限定。

在一些实施例中,步骤114之后,基于kubernetes集群的pod调度方法100还包括步骤115:

步骤115,将待调出节点的上一次调出时刻更新为当前时刻。

作一个示例,若节点原先的上一次调出时刻为a时刻,待调出节点在b时刻执行了调出操作,则可以将节点的上一次调出时刻更新为b时刻。

在本发明的一些实施例中,步骤110的具体实施方式包括步骤116和步骤117。

步骤116,若监测到在kubernetes集群内pod调度失败事件,从多个节点中选择支持该pod正常运行的节点。

在一些实施例中,pod调度失败事件可以表征下述两种情况。

情况(1):kubernetes集群内需要对新创建pod进行初次调度时,没有节点可供其调入。也可以说,可支持其运行的节点不能为其提供充足的资源。

情况(2):kubernetes集群内对运行于某一节点的pod进行二次调度时,没有适合的节点作为目标调入节点。也可以说,可支持其运行的节点不能为其提供充足的资源。

在一些实施例中,确定节点是否支持该pod正常运行的依据可以包括以下一个或多个判断规则:

规则a:与该pod具备反亲和性的节点不支持该pod正常运行。

规则b:该节点的亲和性节点支持其正常运行。

规则c:运行与该pod具备反亲和性pod的节点不支持该pod正常运行。

规则d:运行有与该pod具备亲和性pod的节点支持该pod正常运行。

步骤117,若所选择的节点的实时资源占用参数与该pod预备占用的资源参数的和大于预设的资源占用参数上限阈值,将所选择的节点确定为待调出节点。

在该实施例中,当所选择的节点的实时资源占用参数与该pod预备占用的资源参数的和大于预设的资源占用参数上限阈值,表征调度结束后所选择的节点的负载过高,为了避免该节点负载过高,可以将该节点作为待调度节点,并对运行于该节点上的pod进行调出,来平衡该节点的压力。

在一些实施例中,为了提高调度的合理性,步骤117的具体实施方式可以包括:

若所选择的节点的实时资源占用参数与该pod预备占用的资源参数的和大于预设的资源占用参数上限阈值,且所选择的节点上存在优先级不低于该pod的可调度pod,将所选择的节点确定为待调出节点。

也就是说,如果所选择的节点上的所有pod的优先级均大于该pod的优先级,则所选择的节点不能够作为待调出节点。

在本实施例中,可以根据优先级决定pod的调出次序,优先保证高优先级pod的稳定运行,能够更加合理的对pod进行调度管理。

在一些实施例中,为了能够更加合理的利用待调出节点的资源,在步骤117之后,还可以先对待调出节点进行碎片整理。

步骤120,按照预设调度规则,从运行于待调出节点的pod队列中筛选出待调度pod,并在多个节点中确定与待调度pod对应的目标调入节点。

作一个示例,继续参考图2,若将节点a上的pod3和pod4两个pod作为待调度pod,可以确定节点b为pod3对应的目标调入节点,节点c为pod4对应的目标调入节点。

需要说明的是,若待调度pod的数目为多个时,多个待调度pod的目标调入节点可以为同一节点或为不同节点,对此不做限定。

在本发明的一些实施例,可以设置不同的优先级,并按照优先级划分pod。其中,核心pod的优先级较高。

具体的划分依据可以根据业务需求和业务场景设定,例如,可以根据用户的自定义设定或者pod对服务质量的需求等划分,对此不做限定。

在本发明的一些实施例中,预设调度规则包括必要调度规则,或者,包括必要调度规则和附加调度规则,

在一些实施例中,必要调度规则包括:待调度pod具备可剥离性。

其中,可剥离性表示待调度pod能够从正在运行的待调出节点上剥离的特性。

针对必要调度规则,也就是说,需要过滤掉不可剥离的pod。示例性的,daemonset创建的pod和设置了hostnetwork的pod等不可以从正在运行的节点上剥离,不可作为待调度pod。

在一些实施例中,附加调度规则包括附加调度规则a至c中的一种或多种:

附加调度规则a,按照pod的优先级从低到高的顺序选定待调度pod。

附加调度规则b,待调度pod调出后待调出节点的实时资源占用参数小于预设的资源占用参数上限阈值。

附加调度规则c,参与本次调度的待调度pod的数量最少。

下面将分为三个示例,分别对上述三个附加调度规则进行详细说。

作第一个示例,针对附加调度规则a,可以先将优先级最低的pod调出,来保证高优先级pod的服务质量。

通过该示例,可以优先保障核心pod的服务质量,来实现对资源的合理利用。

作第二个示例,针对附加调度规则b,为了缓解待调度节点的负载压力,待调度pod调出后待调出节点的实时资源占用参数小于预设的资源占用参数上限阈值。

进一步地,为了使负载更加合理,可以使待调度pod调出后待调出节点的实时资源占用参数小于预设的资源占用参数下限阈值。其中,资源占用参数下限阈值小于资源占用参数上限阈值。例如,资源占用参数下限阈值可以是集群资源的平均实时占用率与小于等于1的系数的乘积。

比如,继续针对附加调度规则b,继续参见图2,若调出pod3或pod4后,节点a的实时资源占用参数大于预设的资源占用参数上限阈值,也就说,调出pod3或pod4前后,节点a负载均较高;调出pod3和pod4后,节点a的实时资源占用参数小于预设的资源占用参数上限阈值,也就是说,将pod3和pod4调出后,节点a的负载状态从较高回归至正常。因此,为了能够缓解节点a的负载压力,在对节点a进行二次调度的过程中,则应将pod3和pod4作为待调出pod。

需要说明的是,根据具体的业务场景或业务需求,资源占用参数上限阈值和资源占用参数下限阈值可以为同一个数值,或者为不同数值,对此不做限定。

作第三个示例,针对附加调度规则c,若存在多个待调度pod的可选调度方案,则将可选方案中,待调度pod数目最少的可选调度方案作为最优的调度方案。

比如,若可选调度方案1包括pod1,可选调度方案2包括pod1和pod2,则将可调度方案1作为最优的调度方案。

又比如,若可选调度方案1包括pod1、pod2和pod3,可选调度方案2包括pod2和pod4,可调度方案2仅需调度两个pod,将可调度方案2作为最优的调度方案。

需要说明的是,附加调度规则可以是上述多个附加调度规则的组合,并可以按照业务需求和业务场景,可以兼顾考虑多个附加调度规则,也可以按照一定先后顺序,考虑上述多个附加调度规则。

在本发明的一些实施例中,步骤120的具体实施方式包括步骤121。

步骤121,将多个节点中,满足预设调入条件的节点确定为目标调入节点。

其中,预设调入条件包括:实时占用资源参数小于预设的资源占用参数下限阈值,和/或,支持待调度pod正常运行。

通过该实施例,若预设调入条件包括实时占用资源参数小于预设的资源占用参数下限阈值,可以将实时占用资源参数大于预设的资源占用参数上限阈值的节点的pod调入实时占用资源参数大于预设的资源占用参数上限阈值的节点中,也就是说可以将负载较高的节点的pod调入负载较低的节点的pod,从而保证了负载的均衡分配。

此外,若预设调入条件包括支持待调度pod正常运行,不包括实时占用资源参数小于预设的资源占用参数下限阈值时,在监测到在kubernetes集群内pod调度失败事件的场景中,可以突破资源负载的限制,为该pod选择合适的目标调入节点,保障了该pod节点的服务质量。

步骤130,将待调度pod调度至目标调入节点。

根据本发明实施例中的基于kubernetes集群的pod调度方法,由于kubernetes集群是高度动态变化的,在实际运行过程中,节点和节点上正在运行的pod可能出现不匹配的情况,在pod完成初次调度后,可以根据需求在集群中确定需要调出pod的待调出节点,并可以按照预设调度规则将pod从正在运行的待调度节点上剥离,调入其他节点,pod不再局限于从始至终的在初次分配的节点上运行,因此提高了pod调度的灵活性。

作一个示例,继续参考图2,虚线圆圈表示调入目标调入节点的待调度pod。将pod3从节点a调入节点b,将pod4从节点a调入节点c。

在本发明的一些实施例中,为了保证调度过程中待调度pod的运行稳定程度,步骤130的具体实施方式包括步骤131和步骤132。

步骤131,复制待调度pod,将复制的待调度pod写入目标调入节点。

步骤132,确定待调度pod在目标调入节点正常运行,在待调出节点上删除待调度pod。

在该实施例中,通过步骤131和步骤s132,保证在整个调度过程中待调度pod均能够正常运行,从而减少因为pod剥离所带来的服务质量下降的影响,也就是说兼顾了调度效率和待调度的运行稳定度。

在一些实施例中,若在调度过程中,监测到目标调入节点的实时资源占用参数和正在调度的待调度pod所占用的资源参数的总和超出预设的资源占用参数上限阈值,则结束本次调度。具体地,可以删除目标调入节点上写入的正在调度的待调度pod,也不在待调出节点上继续对正在调度的待调度pod进行剥离。

通过该实施例,能够根据各节点的实时资源参数变化,控制整个调度过程,从而提高了调度的灵活性。

在本发明的一些实施例中,基于kubernetes集群的pod调度方法100还包括步骤140至步骤170。

步骤140,若目标调入节点的实时资源占用参数大于预设的资源占用参数下限阈值,将目标调入节点作为新的待调出节点。

作一个示例,图3是示出根据本发明实施例的示例性的基于kubernetes集群的pod调度过程的逻辑示意图。如图3所示,将节点d作为待调出节点时,需要将pod5调度至节点e。

如果节点e的负载过高,即节点e的实时资源占用参数大于预设的资源占用参数下限阈值,则需要将节点e的已有pod调离。

步骤150,按照预设调度规则从运行于新的待调出节点的pod队列中筛选出新的待调度pod,并判断多个节点中是否存在与新的待调度pod对应的新的目标调入节点。

其中,可以集群中除目标调度节点之外的其他节点中选出新的目标调入节点。

在一些实施例中,步骤150中的预设调度规则可参见上述实施例中的相关内容,在此不再赘述。

作一个示例,继续参考图3,可以将节点f选为与pod6对应的新的目标调入节点。

在一些实施例中,可以根据预设调入条件确定新的目标调入节点。本实施例中的预设调入条件与步骤121中预设调入条件不同之处在于,为了提高调度的合理性,本实施例中的预设调入条件还可以包括:

若目标调入节点的实时占用资源参数大于预设的资源占用参数下限阈值,目标调入节点存在优先级不高于待调度pod的pod。

示例性的,继续参考图3,若节点e的实时占用资源参数大于预设的资源占用参数下限阈值,则表示节点e负载过高,不适合调入新的pod。此时,若节点e所有正在运行的pod的优先级均不低于pod5的优先级,则节点e不适合作为pod6的目标调入节点。

步骤160,若多个节点中不存在新的目标调入节点,则删除新的待调度pod。

步骤170,若多个节点中存在新的目标调入节点,则将新的待调度pod调入新的目标调入节点。

示例性的,继续参见图3,若节点f为pod6的目标调入节点,则可以将pod6调度至节点f。如果节点f没有相对应的目标调入节点,则可以直接从节点e上删除节点e。

在本实施例中,如果待调度pod没有相对应的pod,例如所有节点的负载均过高,则通过删除待调度pod,能够通过驱逐式调度的方式,保证了整个集群的负载。

在一些实施例中,待调度pod的调度方法可参见上述实施例的相关内容,在此不再赘述。

在本发明的一些实施例中,基于kubernetes集群的pod调度方法100还包括步骤180。

步骤180,为kubernetes集群的pod设置优先级。

其中,预设调度规则还包括:

新的待调度pod的优先级不高于原先的待调度pod的优先级。

针对步骤180,原先的待调度pod无法直接调度至目标调入节点时,需要将目标调入节点作为新的待调出节点,并在新的待调出节点上确定新的待调度pod。

在本实施例中,为kubernetes集群的pod设置不同的优先级,并根据优先级对pod进行调度。当系统资源不足或节点负载过高时,可以优先保证核心pod的正常运行,从而提高了调度的灵活性和合理性。

此外,为了能够优选保证高优先级pod的稳定运行,通过步骤180,能够避免新的待调出节点因调入低优先级pod而调出高优先级pod的情况。从而提高了调度的合理性。

在本发明的一些实施例中,基于kubernetes集群的pod调度方法100还包括步骤190。

步骤190,若kubernetes集群的实时资源占用参数大于预设的系统资源占用参数极值,按照pod的优先级从低到高的顺序,从多个节点的pod中逐个删除pod,直至kubernetes集群的实时资源占用参数小于预设的系统资源占用参数极值。

在本实施例中,通过逐个删除pod,可以实现抢占式调度或者说是驱逐低优先级pod调度的方式对pod进行调度,从而保证了整个集群不会负载过高。

同时,由于能够按照pod的优先级从低到高的顺序逐个驱逐pod,当资源不充足的情况下,能够保证高优先pod的稳定运行,提高了调度效率。

在一些实施例中,系统资源占用参数极值可以是整个集群的业务节点的资源占用上限值。

下面结合附图,详细介绍根据本发明实施例的装置。

基于相同的发明构思,本发明另一实施例提供的基于kubernetes集群的pod调度装置。图4示出了根据本发明另一实施例提供的基于kubernetes集群的pod调度装置的结构示意图。如图4所示,基于kubernetes集群的pod调度装置400包括第一确定模块410、第二确定模块420和调度处理模块430。

第一确定模块410,用于在属于kubernetes集群的多个节点中确定待调出节点。

第二确定模块420,用于按照预设调度规则从运行于待调出节点的pod队列中筛选出待调度pod,并在多个节点中确定与待调度pod对应的目标调入节点。

第一调度模块430,用于将待调度pod调度至目标调入节点。

根据本发明实施例中的基于kubernetes集群的pod调度装置,由于kubernetes集群是高度动态变化的,在实际运行过程中,节点和节点上正在运行的pod可能出现不匹配的情况,在pod完成初次调度后,可以根据需求在集群中确定需要调出pod的待调出节点,并可以按照预设调度规则将pod从正在运行的待调度节点上剥离,调入其他节点,pod不再局限于从始至终的在初次分配的节点上运行,因此提高了pod调度的灵活性。

在本发明的一些实施例中,预设调度规则包括必要调度规则,或者,包括必要调度规则和附加调度规则。

其中,必要调度规则包括:待调度pod具备可剥离性。

其中,附加调度规则包括以下附加调度规则a至c的一种或多种:

附加调度规则a、按照pod的优先级从低到高的顺序选定待调度pod,

附加调度规则b、待调度pod调出后待调出节点的实时资源占用参数小于预设的资源占用参数上限阈值,

附加调度规则c、参与本次调度的待调度pod的数量最少。

在本发明的一些实施例中,第一确定模块410,具体用于:

每间隔预设周期或确定kubernetes集群加入新的节点,获取多个节点的实时资源占用参数;

将多个节点中,实时资源占用参数大于预设的资源占用参数上限阈值的节点确定为待调出节点。

在本发明的一些实施例中,第一确定模块410,具体用于:

每间隔预设周期或确定kubernetes集群加入新的节点,获取多个节点的实时资源占用参数;

将多个节点中,实时资源占用参数大于预设的资源占用参数上限阈值且上一次调出时刻与当前时刻的时间差大于预设的调出时间间隔阈值的节点,确定为待调出节点。

在本发明的一些实施例中,第一确定模块410,具体用于:

若监测到在kubernetes集群内pod调度失败事件,从多个节点中选择支持pod正常运行的节点;

若所选择的节点的实时资源占用参数与pod预备占用的资源参数的和大于预设的资源占用参数上限阈值,将所选择的节点确定为待调出节点。

在本发明的一些实施例中,第二确定模块420,具体用于:将多个节点中,满足预设调入条件的节点确定为目标调入节点。

其中,预设调入条件包括:实时占用资源参数小于预设的资源占用参数下限阈值,和/或,支持待调度pod正常运行。

在本发明的一些实施例中,基于kubernetes集群的pod调度装置400还包括:第三确定模块440、判断处理模块450、第一删除模块460和第二调度模块470。

第三确定模块440,用于若目标调入节点的实时资源占用参数大于预设的资源占用参数下限阈值,将目标调入节点作为新的待调出节点。

判断处理模块450,用于按照预设调度规则从运行于新的待调出节点的pod队列中筛选出新的待调度pod,并判断多个节点中是否存在与新的待调度pod对应的新的目标调入节点。

第一删除模块460,用于若多个节点中不存在新的目标调入节点,则删除新的待调度pod。

第二调度模块470,用于若多个节点中存在新的目标调入节点,则将新的待调度pod调入新的目标调入节点。

在本发明的一些实施例中,基于kubernetes集群的pod调度装置400还包括优先级设置模块480。

优先级设置模块480,用于为kubernetes集群的pod设置优先级。

预设调度规则还包括:新的待调度pod的优先级不高于原先的待调度pod的优先级。

在本发明的一些实施例中,基于kubernetes集群的pod调度装置400还包括第二删除模块490。

第二删除模块490,用于若kubernetes集群的实时资源占用参数大于预设的系统资源占用参数极值,按照pod的优先级从低到高的顺序,从多个节点的pod中逐个删除pod,直至kubernetes集群的实时资源占用参数小于预设的系统资源占用参数极值。

根据本发明实施例的基于kubernetes集群的pod调度装置的其他细节与以上结合图1至图3描述的根据本发明实施例的方法类似,在此不再赘述。

图5是本发明实施例中基于kubernetes集群的pod调度设备的示例性硬件架构的结构图。

如图5所示,基于kubernetes集群的pod调度设备500包括输入设备501、输入接口502、中央处理器503、存储器504、输出接口505、以及输出设备506。其中,输入接口502、中央处理器503、存储器504、以及输出接口505通过总线510相互连接,输入设备501和输出设备506分别通过输入接口502和输出接口505与总线510连接,进而与基于kubernetes集群的pod调度设备500的其他组件连接。

具体地,输入设备501接收来自外部的输入信息,并通过输入接口502将输入信息传送到中央处理器503;中央处理器503基于存储器504中存储的计算机可执行指令对输入信息进行处理以生成输出信息,将输出信息临时或者永久地存储在存储器504中,然后通过输出接口505将输出信息传送到输出设备506;输出设备506将输出信息输出到基于kubernetes集群的pod调度设备500的外部供用户使用。

也就是说,图5所示的基于kubernetes集群的pod调度设备也可以被实现为包括:存储有计算机可执行指令的存储器;以及处理器,该处理器在执行计算机可执行指令时可以实现结合图1至图4描述的基于kubernetes集群的pod调度设备的方法和装置。

在一个实施例中,图5所示的基于kubernetes集群的pod调度设备500可以被实现为一种设备,该设备可以包括:存储器,用于存储程序;处理器,用于运行存储器中存储的程序,以执行本发明实施例的基于kubernetes集群的pod调度方法。

本发明实施例还提供了一种计算机存储介质,计算机存储介质上存储有计算机程序指令,计算机程序指令被处理器执行时实现本发明实施例的基于kubernetes集群的pod调度方法。

需要明确的是,本发明并不局限于上文所描述并在图中示出的特定配置和处理。为了简明起见,这里省略了对已知方法的详细描述。在上述实施例中,描述和示出了若干具体的步骤作为示例。但是,本发明的方法过程并不限于所描述和示出的具体步骤,本领域的技术人员可以在领会本发明的精神后,作出各种改变、修改和添加,或者改变步骤之间的顺序。

以上所述的结构框图中所示的功能块可以实现为硬件、软件、固件或者它们的组合。当以硬件方式实现时,其可以例如是电子电路、专用集成电路(asic)、适当的固件、插件、功能卡等等。当以软件方式实现时,本发明的元素是被用于执行所需任务的程序或者代码段。程序或者代码段可以存储在机器可读介质中,或者通过载波中携带的数据信号在传输介质或者通信链路上传送。“机器可读介质”可以包括能够存储或传输信息的任何介质。机器可读介质的例子包括电子电路、半导体存储器设备、rom、闪存、可擦除rom(erom)、软盘、cd-rom、光盘、硬盘、光纤介质、射频(rf)链路,等等。代码段可以经由诸如因特网、内联网等的计算机网络被下载。

以上所述,仅为本发明的具体实施方式,所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述的系统、模块和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1