CN110515730A - 基于kubernetes容器编排系统的资源二次调度方法及装置 - Google Patents
基于kubernetes容器编排系统的资源二次调度方法及装置 Download PDFInfo
- Publication number
- CN110515730A CN110515730A CN201910778928.5A CN201910778928A CN110515730A CN 110515730 A CN110515730 A CN 110515730A CN 201910778928 A CN201910778928 A CN 201910778928A CN 110515730 A CN110515730 A CN 110515730A
- Authority
- CN
- China
- Prior art keywords
- pod
- node
- resource utilization
- strippable
- cluster
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5083—Techniques for rebalancing the load in a distributed system
- G06F9/5088—Techniques for rebalancing the load in a distributed system involving task migration
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/508—Monitor
Abstract
本发明实施例提供一种基于kubernetes容器编排系统的资源二次调度方法及装置,其中,方法包括:每隔预设时间段或有新的节点加入时,获取集群各节点的资源利用率和集群所有节点的资源利用率的平均值;基于各节点的资源利用率、集群所有节点的资源利用率的平均值、预设资源利用率阈值和预设调度频率阈值,获取待进行pod剥离操作的节点;筛选出待进行pod剥离操作的节点中可剥离的pod;遵循pod第一次调度时设置的调度策略以及亲和反亲和设置,按照筛选出的可剥离的pod的预先设置的优先级的高低,将筛选出的优先级最低的可剥离的pod从所在节点剥离,迁移到资源利用率小于平均值的目标节点。可最大化利用集群资源,避免长时间运行后集群负载不均衡。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种基于kubernetes容器编排系统的资源二次调度方法及装置。
背景技术
kubernetes是用于自动部署,扩展和管理容器化应用程序的开源系统。kubernetes将组成应用程序的容器组合成逻辑单元,以便于管理和服务发现。
目前,主流的kubernetes容器调度方案都集中在pod的初次(第一次)调度,根据特定的算法与配置在pod和节点下的一系列调度策略,决策出pod可被调度到哪些节点,并选择出最优的节点将pod调度到其上,调度工作即结束。pod被调度到工作节点上以后在被删除前都将运行在其上。
但是,当前主流的kubernetes容器调度方案都集中在解决将新建的pod调度到业务节点,此类调度器的调度决策只依赖新的pod创建的时间点的集群状态,但不关注后续系统的资源利用率是否高效,资源分配是否公平。而kubernetes集群是高度动态变化的,集群的状态也在时刻变化,随着时间的推移会出现运行在工作节点上的pod占用的资源发生变化导致部分节点负载过高,或者集群中存在大量碎片,在调度资源需求较大的pod时没有业务节点可以调度但集群总体资源充足的情况,同时当集群中有新的业务节点加入时也不能够自动将旧的pod迁移到新的节点上来均衡业务节点负担。
发明内容
针对现有技术存在的问题,本发明实施例提供一种基于kubernetes容器编排系统的资源二次调度方法及装置。
本发明实施例提供一种基于kubernetes容器编排系统的资源二次调度方法,包括:
每隔预设时间段或者有新的节点加入时,根据集群所有节点的资源使用信息,获取集群各节点的资源利用率和集群所有节点的资源利用率的平均值;
基于所述各节点的资源利用率、集群所有节点的资源利用率的平均值、预设资源利用率阈值和预设调度频率阈值,获取待进行pod剥离操作的节点;
筛选出所述待进行pod剥离操作的节点中可剥离的pod;
遵循pod第一次调度时设置的调度策略以及亲和反亲和设置,按照筛选出的可剥离的pod的预先设置的优先级的高低,将筛选出的优先级最低的可剥离的pod从所在节点剥离,迁移到目标节点,所述目标节点为资源利用率小于所述平均值的节点。
可选地,所述基于所述各节点的资源利用率、集群所有节点的资源利用率的平均值、预设资源利用率阈值和预设调度频率阈值,获取待进行pod剥离操作的节点,包括:
找出资源利用率大于所述平均值且资源利用率大于预设资源利用率阈值的节点,判断所述节点最近一次被调度pod的时间和当前时间的差值是否大于预设调度频率阈值,若是,则所述节点为待进行pod剥离操作的节点。
可选地,所述筛选出所述待进行pod剥离操作的节点中可剥离的pod,包括:
过滤掉所述待进行pod剥离操作的节点中不可剥离的pod,筛选出所述待进行pod剥离操作的节点中可剥离的pod。
可选地,所述将筛选出的优先级最低的可剥离的pod从所在节点剥离,迁移到目标节点,包括:
通过自动伸缩的方式,将筛选出的优先级最低的可剥离的pod复制到目标节点;
遵循pod第一次调度时设置的调度策略对新复制的pod进行调度,在进行完调度后,判断所述筛选出的优先级最低的可剥离的pod所在节点的资源利用率和新复制的pod所在的目标节点的资源利用率的总和是否大于当前集群所有节点的资源利用率的平均值;
若否,则在新复制的pod成功启动后,对所述筛选出的优先级最低的可剥离的pod进行删除;
若是,则放弃本次调度,删除所述目标节点上新复制的pod,不对所述筛选出的优先级最低的可剥离的pod进行剥离。
可选地,所述方法还包括:
若监控到pod调度失败的事件触发,则遵循pod第一次调度时设置的调度策略,忽略节点资源限制,找出可被调度的节点列表;
在找出的可被调度的节点列表中筛选出一个节点作为调度节点,将所述调度节点上优先级最低的可剥离的pod从所述调度节点剥离,迁移到目标节点。
可选地,所述方法还包括:
当有优先级最高的pod需要调度、但通过碎片整理无法调度所述pod时,则删除所述优先级最高的pod所在节点上的优先级最低的pod,对所述优先级最高的pod进行抢占式调度;
当集群任一节点的负载大于系统极值时,将所述节点上优先级最低的可剥离的pod从所述节点剥离,迁移到目标节点,若迁移失败且没有可供迁移的目标节点,则删除所述节点上优先级最低的可剥离的pod。
本发明实施例提供一种基于kubernetes容器编排系统的资源二次调度装置,包括:
第一获取模块,用于每隔预设时间段或者有新的节点加入时,根据集群所有节点的资源使用信息,获取集群各节点的资源利用率和集群所有节点的资源利用率的平均值;
第二获取模块,用于基于所述各节点的资源利用率、集群所有节点的资源利用率的平均值、预设资源利用率阈值和预设调度频率阈值,获取待进行pod剥离操作的节点;
筛选模块,用于筛选出所述待进行pod剥离操作的节点中可剥离的pod;
迁移模块,用于遵循pod第一次调度时设置的调度策略以及亲和反亲和设置,按照筛选出的可剥离的pod的预先设置的优先级的高低,将筛选出的优先级最低的可剥离的pod从所在节点剥离,迁移到目标节点,所述目标节点为资源利用率小于所述平均值的节点。
可选地,所述第二获取模块,具体用于
找出资源利用率大于所述平均值且资源利用率大于预设资源利用率阈值的节点,判断所述节点最近一次被调度pod的时间和当前时间的差值是否大于预设调度频率阈值,若是,则所述节点为待进行pod剥离操作的节点。
本发明实施例提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如上述方法的步骤。
本发明实施例提供的基于kubernetes容器编排系统的资源二次调度方法及装置,通过每隔预设时间段或有新的节点加入时,获取集群各节点的资源利用率和集群所有节点的资源利用率的平均值,基于各节点的资源利用率、集群所有节点的资源利用率的平均值、预设资源利用率阈值和预设调度频率阈值,获取待进行pod剥离操作的节点,筛选出待进行pod剥离操作的节点中可剥离的pod,遵循pod第一次调度时设置的调度策略以及亲和反亲和设置,按照筛选出的可剥离的pod的预先设置的优先级的高低,将筛选出的优先级最低的可剥离的pod从所在节点剥离,迁移到资源利用率小于平均值的目标节点,由此,可在满足现有的pod第一次调度时设置的调度策略的同时,在可运行时动态调整集群布局,保障集群长时间运行后整体负载趋于均衡,避免长时间运行后集群负载不均衡,通过重新迁移pod调整集群布局来最大化利用集群资源,并可保证核心应用的服务质量。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明一实施例提供的一种基于kubernetes容器编排系统的资源二次调度方法的流程示意图;
图2为本发明一实施例提供的一种基于kubernetes容器编排系统的资源二次调度装置的结构示意图;
图3为本发明一实施例提供的电子设备的实体结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1示出了本发明一实施例提供的一种基于kubernetes容器编排系统的资源二次调度方法的流程示意图,如图1所示,本实施例的基于kubernetes容器编排系统的资源二次调度方法,包括:
S1、每隔预设时间段或者有新的节点加入时,根据集群所有节点的资源使用信息,获取集群各节点的资源利用率和集群所有节点的资源利用率的平均值。
需要说明的是,本实施例所述基于kubernetes容器编排系统的资源二次调度方法的执行主体为基于kubernetes容器编排系统。
可以理解的是,本实施例所述kubernetes容器编排系统为现有的用于自动部署,扩展和管理容器化应用程序的开源系统。
可以理解的是,每隔预设时间段或者有新的节点加入时,基于kubernetes容器编排系统可以根据集群所有节点的资源使用信息,获取集群各节点的资源利用率和集群所有节点的资源利用率的平均值,以便后续进行资源二次调度。
S2、基于所述各节点的资源利用率、集群所有节点的资源利用率的平均值、预设资源利用率阈值和预设调度频率阈值,获取待进行pod剥离操作的节点。
可以理解的是,pod是可以创建和管理kubernetes计算的最小可部署单元。一个pod代表着集群中运行的一个进程。pod就像是豌豆荚一样,它由一个或者多个容器组成,它们共享容器存储、网络和容器运行配置项。pod中的容器总是被同时调度,有共同的运行环境。可以把单个pod想象成是运行独立应用的逻辑主机,其中运行着一个或者多个紧密耦合的应用容器,在有容器之前,这些应用都是运行在几个相同的物理机或者虚拟机上。
可以理解的是,本实施例所述预设资源利用率阈值可根据实际情况进行设置,本实施例并不对其进行限制。
可以理解的是,本实施例所述预设调度频率阈值可根据实际情况进行设置,本实施例并不对其进行限制。
可以理解的是,本步骤可以基于所述各节点的资源利用率、集群所有节点的资源利用率的平均值、预设资源利用率阈值和预设调度频率阈值,获取待进行pod剥离操作的节点,尽量减少对pod的剥离操作,尽可能少的从节点上剥离pod,减少因为pod剥离带来的服务质量下降。
S3、筛选出所述待进行pod剥离操作的节点中可剥离的pod。
可以理解的是,集群的节点上可能会有不可以被剥离的pod,例如daemonset创建的pod和设置了hostnetwork的pod等是不可以被剥离的。
具体地,本步骤可以先获取集群的节点上所有不可以被剥离的pod的信息,根据所述集群的节点上所有不可以被剥离的pod的信息,挑选出所述待进行pod剥离操作的节点中不可剥离的pod,过滤掉所述待进行pod剥离操作的节点中不可剥离的pod,进而可筛选出所述待进行pod剥离操作的节点中可剥离的pod。
S4、遵循pod第一次调度时设置的调度策略以及亲和反亲和设置,按照筛选出的可剥离的pod的预先设置的优先级的高低,将筛选出的优先级最低的可剥离的pod从所在节点剥离,迁移到目标节点,所述目标节点为资源利用率小于所述平均值的节点。
可以理解的是,所述调度策略是pod第一次调度时进行设置的,可决策出pod可被调度到集群的哪些节点,并选择出最优的节点将pod调度到该最优的节点上,调度工作即结束,其中,pod被调度到该最优的节点上以后在被删除前都将运行在该最优的节点上。
可以理解的是,pod第一次调度时要进行亲和反亲和设置,其中,pod亲和性(podAffinity)主要解决pod可以和哪些pod部署在同一个拓扑域(拓扑域用主机标签实现,可以是单个主机,也可以是多个主机组成的集群cluster、资源域zone等)中的问题;pod反亲和性(podAntiAffinity)主要解决pod不能和哪些pod部署在同一个拓扑域中的问题。所述亲和反亲和设置用于处理集群内部pod和pod之间的关系。
可以理解的是,本实施例对所筛选出的可剥离的pod会预先设置优先级的高低,避免对高优先级的pod进行剥离,除非节点的负载已经达到极值,且没有低优先级的pod。
可以理解的是,本步骤遵循pod第一次调度时设置的调度策略以及亲和反亲和设置,可在满足现有的pod第一次调度时设置的调度策略的同时,在可运行时动态调整集群布局。
可以理解的是,本步骤执行完剥离和迁移后,进行剥离操作的节点和目标节点的资源利用率更趋近于所述集群所有节点的资源利用率的平均值。
本实施例提供的基于kubernetes容器编排系统的资源二次调度方法,通过每隔预设时间段或有新的节点加入时,获取集群各节点的资源利用率和集群所有节点的资源利用率的平均值,基于各节点的资源利用率、集群所有节点的资源利用率的平均值、预设资源利用率阈值和预设调度频率阈值,获取待进行pod剥离操作的节点,筛选出待进行pod剥离操作的节点中可剥离的pod,遵循pod第一次调度时设置的调度策略以及亲和反亲和设置,按照筛选出的可剥离的pod的预先设置的优先级的高低,将筛选出的优先级最低的可剥离的pod从所在节点剥离,迁移到资源利用率小于平均值的目标节点,由此,可在满足现有的pod第一次调度时设置的调度策略的同时,在可运行时动态调整集群布局,保障集群长时间运行后整体负载趋于均衡,避免长时间运行后集群负载不均衡,通过重新迁移pod调整集群布局来最大化利用集群资源,并可保证核心应用的服务质量。
进一步地,在上述实施例的基础上,本实施例所述步骤S2可以包括:
找出资源利用率大于所述平均值且资源利用率大于预设资源利用率阈值的节点,判断所述节点最近一次被调度pod的时间和当前时间的差值是否大于预设调度频率阈值,若是,则所述节点为待进行pod剥离操作的节点。
可以理解的是,当节点的资源利用率大于所述平均值、但小于等于预设资源利用率阈值时,不需要进行pod剥离操作;当所述节点最近一次被调度pod的时间和当前时间的差值小于等于预设调度频率阈值时,不需要进行pod剥离操作。
这样,本实施例能够实现基于所述各节点的资源利用率、集群所有节点的资源利用率的平均值、预设资源利用率阈值和预设调度频率阈值,获取待进行pod剥离操作的节点,尽量减少对pod的剥离操作,尽可能少的从节点上剥离pod,减少因为pod剥离带来的服务质量下降。
进一步地,在上述实施例的基础上,本实施例所述步骤S4中的“将筛选出的优先级最低的可剥离的pod从所在节点剥离,迁移到目标节点”,可以包括:
通过自动伸缩的方式,将筛选出的优先级最低的可剥离的pod复制到目标节点;
遵循pod第一次调度时设置的调度策略对新复制的pod进行调度,在进行完调度后,判断所述筛选出的优先级最低的可剥离的pod所在节点的资源利用率和新复制的pod所在的目标节点的资源利用率的总和是否大于当前集群所有节点的资源利用率的平均值;
若否,则在新复制的pod成功启动后,对所述筛选出的优先级最低的可剥离的pod进行删除;
若是,则放弃本次调度,删除所述目标节点上新复制的pod,不对所述筛选出的优先级最低的可剥离的pod进行剥离。
可以理解的是,本实施例能够实现将筛选出的优先级最低的可剥离的pod从所在节点剥离,迁移到资源利用率小于所述平均值的目标节点,且执行完剥离和迁移后,进行剥离操作的节点和目标节点的资源利用率更趋近于所述集群所有节点的资源利用率的平均值。
进一步地,在上述实施例的基础上,本实施例所述基于kubernetes容器编排系统的资源二次调度方法还可以包括图中未示出的步骤:
若监控到pod调度失败的事件触发,则遵循pod第一次调度时设置的调度策略,忽略节点资源限制,找出可被调度的节点列表;
在找出的可被调度的节点列表中筛选出一个节点作为调度节点,将所述调度节点上优先级最低的可剥离的pod从所述调度节点剥离,迁移到目标节点。
可以理解的是,所述调度节点的选择需要遵循下列规则:尽量少的迁移旧的pod即可满足新pod的调度需求;旧pod能否被迁移需要遵循pod第一次调度时设置的调度策略;尽量避免对高优先级pod的迁移;被迁移的pod需要能在集群中除了被迁移的pod所在节点之外的其他节点上正确运行。
可以理解的是,本实施例能够实现聚合资源占用较少的pod来释放出更大的可用空间,以满足需要较大块资源的pod的调度。
进一步地,在上述实施例的基础上,本实施例所述基于kubernetes容器编排系统的资源二次调度方法还可以包括图中未示出的步骤:
当有优先级最高的pod需要调度、但通过碎片整理无法调度所述pod时,则删除所述优先级最高的pod所在节点上的优先级最低的pod,对所述优先级最高的pod进行抢占式调度;
当集群任一节点的负载大于系统极值时,将所述节点上优先级最低的可剥离的pod从所述节点剥离,迁移到目标节点,若迁移失败且没有可供迁移的目标节点,则删除所述节点上优先级最低的可剥离的pod。
可以理解的是,本实施例通过支持抢占式调度和驱逐低优先级pod,能够保障高优先级pod的运行。
可以理解的是,本实施例能够实现对系统资源的有效利用和集群资源利用率的持续动态优化,并保证核心应用的服务质量;通过实时监控各节点的资源使用情况和pod调度失败的事件信息,采取主动驱逐pod和重新调度pod的方式,来不断动态优化集群的布局,使集群资源得到充分合理的利用;本实施例中对pod的二次调度会遵循pod第一次调度时的调度策略,不会违反原始反亲和、亲和等调度策略设定,同时二次调度的过程也会保证服务的高可用。本实施例的目的在于通过运行时动态迁移pod,维护集群所有群业务节点负载趋于均衡,保证核心应用的服务质量,同时能够实现对碎片化资源的整理。
本实施例提供的基于kubernetes容器编排系统的资源二次调度方法,可在满足现有的pod第一次调度时设置的调度策略的同时,在可运行时动态调整集群布局,保障集群长时间运行后整体负载趋于均衡,避免长时间运行后集群负载不均衡,通过重新迁移pod调整集群布局来最大化利用集群资源,并可保证核心应用的服务质量,通过预先设置pod优先级的高低,对高优先级pod在调度时支持抢占式调度,在节点负载过高时,通过驱逐低优先级的pod来充分保障高优先级的核心应用的服务质量。
图2示出了本发明一实施例提供的一种基于kubernetes容器编排系统的资源二次调度装置的结构示意图,如图2所示,本实施例的基于kubernetes容器编排系统的资源二次调度装置,包括:第一获取模块21、第二获取模块22、筛选模块23和迁移模块24;其中:
所述第一获取模块21,用于每隔预设时间段或者有新的节点加入时,根据集群所有节点的资源使用信息,获取集群各节点的资源利用率和集群所有节点的资源利用率的平均值;
所述第二获取模块22,用于基于所述各节点的资源利用率、集群所有节点的资源利用率的平均值、预设资源利用率阈值和预设调度频率阈值,获取待进行pod剥离操作的节点;
所述筛选模块23,用于筛选出所述待进行pod剥离操作的节点中可剥离的pod;
所述迁移模块24,用于遵循pod第一次调度时设置的调度策略以及亲和反亲和设置,按照筛选出的可剥离的pod的预先设置的优先级的高低,将筛选出的优先级最低的可剥离的pod从所在节点剥离,迁移到目标节点,所述目标节点为资源利用率小于所述平均值的节点。
具体地,所述第一获取模块21每隔预设时间段或者有新的节点加入时,根据集群所有节点的资源使用信息,获取集群各节点的资源利用率和集群所有节点的资源利用率的平均值;所述第二获取模块22基于所述各节点的资源利用率、集群所有节点的资源利用率的平均值、预设资源利用率阈值和预设调度频率阈值,获取待进行pod剥离操作的节点;所述筛选模块23筛选出所述待进行pod剥离操作的节点中可剥离的pod;所述迁移模块24遵循pod第一次调度时设置的调度策略以及亲和反亲和设置,按照筛选出的可剥离的pod的预先设置的优先级的高低,将筛选出的优先级最低的可剥离的pod从所在节点剥离,迁移到目标节点,所述目标节点为资源利用率小于所述平均值的节点。
需要说明的是,本实施例所述基于kubernetes容器编排系统的资源二次调度装置应用于基于kubernetes容器编排系统。
可以理解的是,pod是可以创建和管理kubernetes计算的最小可部署单元。一个pod代表着集群中运行的一个进程。pod就像是豌豆荚一样,它由一个或者多个容器组成,它们共享容器存储、网络和容器运行配置项。pod中的容器总是被同时调度,有共同的运行环境。可以把单个pod想象成是运行独立应用的逻辑主机,其中运行着一个或者多个紧密耦合的应用容器,在有容器之前,这些应用都是运行在几个相同的物理机或者虚拟机上。
可以理解的是,本实施例所述预设资源利用率阈值可根据实际情况进行设置,本实施例并不对其进行限制。
可以理解的是,本实施例所述预设调度频率阈值可根据实际情况进行设置,本实施例并不对其进行限制。
可以理解的是,所述第二获取模块22可以基于所述各节点的资源利用率、集群所有节点的资源利用率的平均值、预设资源利用率阈值和预设调度频率阈值,获取待进行pod剥离操作的节点,尽量减少对pod的剥离操作,尽可能少的从节点上剥离pod,减少因为pod剥离带来的服务质量下降。
可以理解的是,集群的节点上可能会有不可以被剥离的pod,例如daemonset创建的pod和设置了hostnetwork的pod等是不可以被剥离的。具体地,所述筛选模块23可以过滤掉所述待进行pod剥离操作的节点中不可剥离的pod,筛选出所述待进行pod剥离操作的节点中可剥离的pod。
可以理解的是,本实施例对所筛选出的可剥离的pod会预先设置优先级的高低,避免对高优先级的pod进行剥离,除非节点的负载已经达到极值,且没有低优先级的pod。
可以理解的是,所述迁移模块24遵循pod第一次调度时设置的调度策略以及亲和反亲和设置,可在满足现有的pod第一次调度时设置的调度策略的同时,在可运行时动态调整集群布局。
可以理解的是,所述迁移模块24执行完剥离和迁移后,进行剥离操作的节点和目标节点的资源利用率更趋近于所述集群所有节点的资源利用率的平均值。
本实施例提供的基于kubernetes容器编排系统的资源二次调度装置,可在满足现有的pod第一次调度时设置的调度策略的同时,在可运行时动态调整集群布局,保障集群长时间运行后整体负载趋于均衡,避免长时间运行后集群负载不均衡,通过重新迁移pod调整集群布局来最大化利用集群资源,并可保证核心应用的服务质量。
进一步地,在上述实施例的基础上,本实施例所述第二获取模块22,可具体用于
找出资源利用率大于所述平均值且资源利用率大于预设资源利用率阈值的节点,判断所述节点最近一次被调度pod的时间和当前时间的差值是否大于预设调度频率阈值,若是,则所述节点为待进行pod剥离操作的节点。
可以理解的是,当节点的资源利用率大于所述平均值、但小于等于预设资源利用率阈值时,不需要进行pod剥离操作;当所述节点最近一次被调度pod的时间和当前时间的差值小于等于预设调度频率阈值时,不需要进行pod剥离操作。
这样,本实施例能够实现基于所述各节点的资源利用率、集群所有节点的资源利用率的平均值、预设资源利用率阈值和预设调度频率阈值,获取待进行pod剥离操作的节点,尽量减少对pod的剥离操作,尽可能少的从节点上剥离pod,减少因为pod剥离带来的服务质量下降。
进一步地,在上述实施例的基础上,本实施例所述迁移模块24中的“将筛选出的优先级最低的可剥离的pod从所在节点剥离,迁移到目标节点”,可以包括:
通过自动伸缩的方式,将筛选出的优先级最低的可剥离的pod复制到目标节点;
遵循pod第一次调度时设置的调度策略对新复制的pod进行调度,在进行完调度后,判断所述筛选出的优先级最低的可剥离的pod所在节点的资源利用率和新复制的pod所在的目标节点的资源利用率的总和是否大于当前集群所有节点的资源利用率的平均值;
若否,则在新复制的pod成功启动后,对所述筛选出的优先级最低的可剥离的pod进行删除;
若是,则放弃本次调度,删除所述目标节点上新复制的pod,不对所述筛选出的优先级最低的可剥离的pod进行剥离。
可以理解的是,本实施例能够实现将筛选出的优先级最低的可剥离的pod从所在节点剥离,迁移到资源利用率小于所述平均值的目标节点,且执行完剥离和迁移后,进行剥离操作的节点和目标节点的资源利用率更趋近于所述集群所有节点的资源利用率的平均值。
进一步地,在上述实施例的基础上,本实施例所述基于kubernetes容器编排系统的资源二次调度装置还可以包括图中未示出的:
监控模块,用于若监控到pod调度失败的事件触发,则遵循pod第一次调度时设置的调度策略,忽略节点资源限制,找出可被调度的节点列表;在找出的可被调度的节点列表中筛选出一个节点作为调度节点,将所述调度节点上优先级最低的可剥离的pod从所述调度节点剥离,迁移到目标节点。
可以理解的是,所述调度节点的选择需要遵循下列规则:尽量少的迁移旧的pod即可满足新pod的调度需求;旧pod能否被迁移需要遵循pod第一次调度时设置的调度策略;尽量避免对高优先级pod的迁移;被迁移的pod需要能在集群中除了被迁移的pod所在节点之外的其他节点上正确运行。
可以理解的是,本实施例能够实现聚合资源占用较少的pod来释放出更大的可用空间,以满足需要较大块资源的pod的调度。
进一步地,在上述实施例的基础上,本实施例所述基于kubernetes容器编排系统的资源二次调度装置还可以包括图中未示出的:
抢占式调度模块,用于当有优先级最高的pod需要调度、但通过碎片整理无法调度所述pod时,则删除所述优先级最高的pod所在节点上的优先级最低的pod,对所述优先级最高的pod进行抢占式调度;
删除模块,用于当集群任一节点的负载大于系统极值时,将所述节点上优先级最低的可剥离的pod从所述节点剥离,迁移到目标节点,若迁移失败且没有可供迁移的目标节点,则删除所述节点上优先级最低的可剥离的pod。
可以理解的是,本实施例通过支持抢占式调度和驱逐低优先级pod,能够保障高优先级pod的运行。
可以理解的是,本实施例能够实现对系统资源的有效利用和集群资源利用率的持续动态优化,并保证核心应用的服务质量;通过实时监控各节点的资源使用情况和pod调度失败的事件信息,采取主动驱逐pod和重新调度pod的方式,来不断动态优化集群的布局,使集群资源得到充分合理的利用;本实施例中对pod的二次调度会遵循pod第一次调度时的调度策略,不会违反原始反亲和、亲和等调度策略设定,同时二次调度的过程也会保证服务的高可用。本实施例的目的在于通过运行时动态迁移pod,维护集群所有群业务节点负载趋于均衡,保证核心应用的服务质量,同时能够实现对碎片化资源的整理。
本实施例提供的基于kubernetes容器编排系统的资源二次调度装置,可在满足现有的pod第一次调度时设置的调度策略的同时,在可运行时动态调整集群布局,保障集群长时间运行后整体负载趋于均衡,避免长时间运行后集群负载不均衡,通过重新迁移pod调整集群布局来最大化利用集群资源,并可保证核心应用的服务质量,通过预先设置pod优先级的高低,对高优先级pod在调度时支持抢占式调度,在节点负载过高时,通过驱逐低优先级的pod来充分保障高优先级的核心应用的服务质量。
本发明实施例提供的基于kubernetes容器编排系统的资源二次调度装置,可以用于执行前述方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。
图3示出了本发明一实施例提供的一种电子设备的实体结构示意图,如图3所示,该电子设备可以包括存储器302、处理器301、总线303及存储在存储器302上并可在处理器301上运行的计算机程序,其中,处理器301,存储器302通过总线303完成相互间的通信。所述处理器301执行所述计算机程序时实现上述方法的步骤,例如包括:每隔预设时间段或者有新的节点加入时,根据集群所有节点的资源使用信息,获取集群各节点的资源利用率和集群所有节点的资源利用率的平均值;基于所述各节点的资源利用率、集群所有节点的资源利用率的平均值、预设资源利用率阈值和预设调度频率阈值,获取待进行pod剥离操作的节点;筛选出所述待进行pod剥离操作的节点中可剥离的pod;遵循pod第一次调度时设置的调度策略以及亲和反亲和设置,按照筛选出的可剥离的pod的预先设置的优先级的高低,将筛选出的优先级最低的可剥离的pod从所在节点剥离,迁移到目标节点,所述目标节点为资源利用率小于所述平均值的节点。
本发明实施例提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述方法的步骤,例如包括:每隔预设时间段或者有新的节点加入时,根据集群所有节点的资源使用信息,获取集群各节点的资源利用率和集群所有节点的资源利用率的平均值;基于所述各节点的资源利用率、集群所有节点的资源利用率的平均值、预设资源利用率阈值和预设调度频率阈值,获取待进行pod剥离操作的节点;筛选出所述待进行pod剥离操作的节点中可剥离的pod;遵循pod第一次调度时设置的调度策略以及亲和反亲和设置,按照筛选出的可剥离的pod的预先设置的优先级的高低,将筛选出的优先级最低的可剥离的pod从所在节点剥离,迁移到目标节点,所述目标节点为资源利用率小于所述平均值的节点。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (10)
1.一种基于kubernetes容器编排系统的资源二次调度方法,其特征在于,包括:
每隔预设时间段或者有新的节点加入时,根据集群所有节点的资源使用信息,获取集群各节点的资源利用率和集群所有节点的资源利用率的平均值;
基于所述各节点的资源利用率、集群所有节点的资源利用率的平均值、预设资源利用率阈值和预设调度频率阈值,获取待进行pod剥离操作的节点;
筛选出所述待进行pod剥离操作的节点中可剥离的pod;
遵循pod第一次调度时设置的调度策略以及亲和反亲和设置,按照筛选出的可剥离的pod的预先设置的优先级的高低,将筛选出的优先级最低的可剥离的pod从所在节点剥离,迁移到目标节点,所述目标节点为资源利用率小于所述平均值的节点。
2.根据权利要求1所述的基于kubernetes容器编排系统的资源二次调度方法,其特征在于,所述基于所述各节点的资源利用率、集群所有节点的资源利用率的平均值、预设资源利用率阈值和预设调度频率阈值,获取待进行pod剥离操作的节点,包括:
找出资源利用率大于所述平均值且资源利用率大于预设资源利用率阈值的节点,判断所述节点最近一次被调度pod的时间和当前时间的差值是否大于预设调度频率阈值,若是,则所述节点为待进行pod剥离操作的节点。
3.根据权利要求1所述的基于kubernetes容器编排系统的资源二次调度方法,其特征在于,所述筛选出所述待进行pod剥离操作的节点中可剥离的pod,包括:
过滤掉所述待进行pod剥离操作的节点中不可剥离的pod,筛选出所述待进行pod剥离操作的节点中可剥离的pod。
4.根据权利要求1所述的基于kubernetes容器编排系统的资源二次调度方法,其特征在于,所述将筛选出的优先级最低的可剥离的pod从所在节点剥离,迁移到目标节点,包括:
通过自动伸缩的方式,将筛选出的优先级最低的可剥离的pod复制到目标节点;
遵循pod第一次调度时设置的调度策略对新复制的pod进行调度,在进行完调度后,判断所述筛选出的优先级最低的可剥离的pod所在节点的资源利用率和新复制的pod所在的目标节点的资源利用率的总和是否大于当前集群所有节点的资源利用率的平均值;
若否,则在新复制的pod成功启动后,对所述筛选出的优先级最低的可剥离的pod进行删除;
若是,则放弃本次调度,删除所述目标节点上新复制的pod,不对所述筛选出的优先级最低的可剥离的pod进行剥离。
5.根据权利要求1所述的基于kubernetes容器编排系统的资源二次调度方法,其特征在于,所述方法还包括:
若监控到pod调度失败的事件触发,则遵循pod第一次调度时设置的调度策略,忽略节点资源限制,找出可被调度的节点列表;
在找出的可被调度的节点列表中筛选出一个节点作为调度节点,将所述调度节点上优先级最低的可剥离的pod从所述调度节点剥离,迁移到目标节点。
6.根据权利要求1所述的基于kubernetes容器编排系统的资源二次调度方法,其特征在于,所述方法还包括:
当有优先级最高的pod需要调度、但通过碎片整理无法调度所述pod时,则删除所述优先级最高的pod所在节点上的优先级最低的pod,对所述优先级最高的pod进行抢占式调度;
当集群任一节点的负载大于系统极值时,将所述节点上优先级最低的可剥离的pod从所述节点剥离,迁移到目标节点,若迁移失败且没有可供迁移的目标节点,则删除所述节点上优先级最低的可剥离的pod。
7.一种基于kubernetes容器编排系统的资源二次调度装置,其特征在于,包括:
第一获取模块,用于每隔预设时间段或者有新的节点加入时,根据集群所有节点的资源使用信息,获取集群各节点的资源利用率和集群所有节点的资源利用率的平均值;
第二获取模块,用于基于所述各节点的资源利用率、集群所有节点的资源利用率的平均值、预设资源利用率阈值和预设调度频率阈值,获取待进行pod剥离操作的节点;
筛选模块,用于筛选出所述待进行pod剥离操作的节点中可剥离的pod;
迁移模块,用于遵循pod第一次调度时设置的调度策略以及亲和反亲和设置,按照筛选出的可剥离的pod的预先设置的优先级的高低,将筛选出的优先级最低的可剥离的pod从所在节点剥离,迁移到目标节点,所述目标节点为资源利用率小于所述平均值的节点。
8.根据权利要求7所述的基于kubernetes容器编排系统的资源二次调度装置,其特征在于,所述第二获取模块,具体用于:
找出资源利用率大于所述平均值且资源利用率大于预设资源利用率阈值的节点,判断所述节点最近一次被调度pod的时间和当前时间的差值是否大于预设调度频率阈值,若是,则所述节点为待进行pod剥离操作的节点。
9.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1至6任一项所述方法的步骤。
10.一种非暂态计算机可读存储介质,其上存储有计算机程序,其特征在于,该计算机程序被处理器执行时实现如权利要求1至6任一项所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910778928.5A CN110515730A (zh) | 2019-08-22 | 2019-08-22 | 基于kubernetes容器编排系统的资源二次调度方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910778928.5A CN110515730A (zh) | 2019-08-22 | 2019-08-22 | 基于kubernetes容器编排系统的资源二次调度方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110515730A true CN110515730A (zh) | 2019-11-29 |
Family
ID=68626353
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910778928.5A Pending CN110515730A (zh) | 2019-08-22 | 2019-08-22 | 基于kubernetes容器编排系统的资源二次调度方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110515730A (zh) |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111104227A (zh) * | 2019-12-28 | 2020-05-05 | 北京浪潮数据技术有限公司 | 一种K8s平台的资源控制方法、装置及相关组件 |
CN111158908A (zh) * | 2019-12-27 | 2020-05-15 | 重庆紫光华山智安科技有限公司 | 一种基于kubernetes的提高GPU利用率的调度方法及装置 |
CN111858042A (zh) * | 2020-07-10 | 2020-10-30 | 苏州浪潮智能科技有限公司 | 基于国产化云平台校验微服务治理配额开启的方法及装置 |
CN111966500A (zh) * | 2020-09-07 | 2020-11-20 | 网易(杭州)网络有限公司 | 资源调度方法、装置、电子设备及存储介质 |
CN112540829A (zh) * | 2020-12-16 | 2021-03-23 | 恒生电子股份有限公司 | 容器组驱逐方法、装置、节点设备及存储介质 |
CN113032102A (zh) * | 2021-04-07 | 2021-06-25 | 广州虎牙科技有限公司 | 资源重调度方法、装置、设备和介质 |
CN113835840A (zh) * | 2021-09-28 | 2021-12-24 | 广东浪潮智慧计算技术有限公司 | 一种集群资源管理方法、装置、设备及可读存储介质 |
CN114816665A (zh) * | 2022-04-22 | 2022-07-29 | 北京志凌海纳科技有限公司 | 混合编排系统及超融合架构下虚拟机容器资源混合编排方法 |
CN115280285A (zh) * | 2020-07-30 | 2022-11-01 | 威睿公司 | 由独立操作的多个调度器在公共资源集上调度工作负载 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108667859A (zh) * | 2017-03-27 | 2018-10-16 | 中兴通讯股份有限公司 | 一种实现资源调度的方法及装置 |
CN108769254A (zh) * | 2018-06-25 | 2018-11-06 | 星环信息科技(上海)有限公司 | 基于抢占式调度的资源共享使用方法、系统及设备 |
CN109117265A (zh) * | 2018-07-12 | 2019-01-01 | 北京百度网讯科技有限公司 | 在集群中调度作业的方法、装置、设备及存储介质 |
CN109167835A (zh) * | 2018-09-13 | 2019-01-08 | 重庆邮电大学 | 一种基于kubernetes的物理资源调度方法及系统 |
CN109960585A (zh) * | 2019-02-02 | 2019-07-02 | 浙江工业大学 | 一种基于kubernetes的资源调度方法 |
-
2019
- 2019-08-22 CN CN201910778928.5A patent/CN110515730A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108667859A (zh) * | 2017-03-27 | 2018-10-16 | 中兴通讯股份有限公司 | 一种实现资源调度的方法及装置 |
CN108769254A (zh) * | 2018-06-25 | 2018-11-06 | 星环信息科技(上海)有限公司 | 基于抢占式调度的资源共享使用方法、系统及设备 |
CN109117265A (zh) * | 2018-07-12 | 2019-01-01 | 北京百度网讯科技有限公司 | 在集群中调度作业的方法、装置、设备及存储介质 |
CN109167835A (zh) * | 2018-09-13 | 2019-01-08 | 重庆邮电大学 | 一种基于kubernetes的物理资源调度方法及系统 |
CN109960585A (zh) * | 2019-02-02 | 2019-07-02 | 浙江工业大学 | 一种基于kubernetes的资源调度方法 |
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111158908A (zh) * | 2019-12-27 | 2020-05-15 | 重庆紫光华山智安科技有限公司 | 一种基于kubernetes的提高GPU利用率的调度方法及装置 |
CN111104227B (zh) * | 2019-12-28 | 2022-04-22 | 北京浪潮数据技术有限公司 | 一种K8s平台的资源控制方法、装置及相关组件 |
CN111104227A (zh) * | 2019-12-28 | 2020-05-05 | 北京浪潮数据技术有限公司 | 一种K8s平台的资源控制方法、装置及相关组件 |
CN111858042A (zh) * | 2020-07-10 | 2020-10-30 | 苏州浪潮智能科技有限公司 | 基于国产化云平台校验微服务治理配额开启的方法及装置 |
CN111858042B (zh) * | 2020-07-10 | 2023-01-10 | 苏州浪潮智能科技有限公司 | 基于国产化云平台校验微服务治理配额开启的方法及装置 |
CN115280285A (zh) * | 2020-07-30 | 2022-11-01 | 威睿公司 | 由独立操作的多个调度器在公共资源集上调度工作负载 |
CN111966500A (zh) * | 2020-09-07 | 2020-11-20 | 网易(杭州)网络有限公司 | 资源调度方法、装置、电子设备及存储介质 |
CN111966500B (zh) * | 2020-09-07 | 2023-08-11 | 网易(杭州)网络有限公司 | 资源调度方法、装置、电子设备及存储介质 |
CN112540829A (zh) * | 2020-12-16 | 2021-03-23 | 恒生电子股份有限公司 | 容器组驱逐方法、装置、节点设备及存储介质 |
CN113032102A (zh) * | 2021-04-07 | 2021-06-25 | 广州虎牙科技有限公司 | 资源重调度方法、装置、设备和介质 |
CN113032102B (zh) * | 2021-04-07 | 2024-04-19 | 广州虎牙科技有限公司 | 资源重调度方法、装置、设备和介质 |
CN113835840A (zh) * | 2021-09-28 | 2021-12-24 | 广东浪潮智慧计算技术有限公司 | 一种集群资源管理方法、装置、设备及可读存储介质 |
CN114816665A (zh) * | 2022-04-22 | 2022-07-29 | 北京志凌海纳科技有限公司 | 混合编排系统及超融合架构下虚拟机容器资源混合编排方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110515730A (zh) | 基于kubernetes容器编排系统的资源二次调度方法及装置 | |
CN105740074B (zh) | 一种基于云计算的虚拟机负载均衡方法 | |
CN104461744B (zh) | 一种资源分配方法及装置 | |
CN112867050B (zh) | 一种upf网元管理方法及系统 | |
CN108632365A (zh) | 服务资源调整方法、相关装置和设备 | |
CN110838939B (zh) | 一种基于轻量级容器的调度方法及边缘物联管理平台 | |
CN106656867A (zh) | 一种基于虚拟网络的应用感知的动态sdn配置方法 | |
WO2023045256A1 (zh) | 一种镜像的拉取方法、系统、计算机设备及可读存储介质 | |
CN107968802A (zh) | 一种资源调度的方法、装置和过滤式调度器 | |
CN103856548B (zh) | 动态资源调度方法和动态资源调度器 | |
CN106201661A (zh) | 用于弹性伸缩虚拟机集群的方法和装置 | |
CN104796445B (zh) | 服务器节点进行资源同步的方法、装置 | |
CN102262567A (zh) | 虚拟机调度决策的系统、平台及方法 | |
CN111274033B (zh) | 一种资源部署方法、装置、服务器以及存储介质 | |
US20230266999A1 (en) | Resource scheduling method, resource scheduling system, and device | |
CN105955873A (zh) | 一种任务处理方法和装置 | |
CN111309440B (zh) | 一种多类型gpu的管理调度的方法和设备 | |
CN116340005B (zh) | 容器集群的调度方法、装置、设备及存储介质 | |
CN107566443A (zh) | 一种分布式资源调度方法 | |
CN114153580A (zh) | 一种跨多集群的工作调度方法及装置 | |
CN114840304A (zh) | 一种容器调度方法、电子设备和存储介质 | |
CN112685179A (zh) | 一种基于云上成本的资源部署系统及方法 | |
CN112463395A (zh) | 一种资源分配方法、装置、设备及可读存储介质 | |
US20230037293A1 (en) | Systems and methods of hybrid centralized distributive scheduling on shared physical hosts | |
CN113918281A (zh) | 一种提升容器云资源扩展效率的方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20191129 |
|
RJ01 | Rejection of invention patent application after publication |