CN117667420A - 资源调度方法、设备及存储介质 - Google Patents
资源调度方法、设备及存储介质 Download PDFInfo
- Publication number
- CN117667420A CN117667420A CN202311723782.7A CN202311723782A CN117667420A CN 117667420 A CN117667420 A CN 117667420A CN 202311723782 A CN202311723782 A CN 202311723782A CN 117667420 A CN117667420 A CN 117667420A
- Authority
- CN
- China
- Prior art keywords
- container group
- interface object
- resource
- scheduling interface
- resources
- 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
- 238000000034 method Methods 0.000 title claims abstract description 89
- 238000012217 deletion Methods 0.000 claims description 23
- 230000037430 deletion Effects 0.000 claims description 23
- 230000008569 process Effects 0.000 claims description 18
- 230000009467 reduction Effects 0.000 claims description 15
- 238000004590 computer program Methods 0.000 claims description 10
- 230000004044 response Effects 0.000 claims description 6
- 230000008602 contraction Effects 0.000 description 9
- 238000010586 diagram Methods 0.000 description 9
- 230000006870 function Effects 0.000 description 6
- 238000007726 management method Methods 0.000 description 5
- 230000003287 optical effect Effects 0.000 description 5
- 238000012545 processing Methods 0.000 description 5
- 238000004891 communication Methods 0.000 description 4
- 238000004064 recycling Methods 0.000 description 4
- 230000000694 effects Effects 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 238000011084 recovery Methods 0.000 description 3
- 239000004973 liquid crystal related substance Substances 0.000 description 2
- 239000013307 optical fiber Substances 0.000 description 2
- 230000000644 propagated effect Effects 0.000 description 2
- 238000013468 resource allocation Methods 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 239000000835 fiber Substances 0.000 description 1
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本公开实施例提供一种资源调度方法、设备及存储介质,通过响应于对资源节点上已创建的初始容器组的资源容量调整指令,创建用于进行资源预占用的调度接口对象;若确定资源容量调整指令为资源容量扩展指令,则根据所需调整的目标资源容量与初始容器组的初始资源容量之间的容量差值在资源节点上创建虚拟容器组;控制调度接口对象对初始容器组对应资源以及虚拟容器组对应资源进行预占用,基于所有预占用资源创建新的容器组。在对资源节点上已创建的初始容器组的资源容量扩展时,通过对初始容器组对应资源和虚拟容器组对应资源的预占用,避免扩容受到资源节点空闲资源容量的限制,保障了扩容的成功,使得资源管理和调度更加灵活和有效。
Description
技术领域
本公开实施例涉及计算机与网络通信技术领域,尤其涉及一种资源调度方法、设备及存储介质。
背景技术
在容器编排领域中,Kubernetes等容器编排框架具有强大的容器编排能力。容器组Pod是容器编排框架中资源分配的基础载体,它根据业务逻辑绑定对应的资源需求。
在一种相关技术中,对于容器编排框架中任一资源节点上已部署的Pod,在需要对其进行扩容或缩容时候,需要基于扩容或缩容的目标资源容量在该资源节点的空闲资源上进行资源预占用,最终创建经过扩容或缩容的新Pod时可直接使用预占用的资源。
但是,在资源节点可能资源较为紧张,或者扩容或缩容的目标资源容量较大时,可能导致扩容或缩容失败。
发明内容
本公开实施例提供一种资源调度方法、设备及存储介质,以避免已部署的Pod扩容或缩容受到资源节点空闲资源容量的限制,保障了扩容或缩容的成功。
第一方面,本公开实施例提供一种资源调度方法,包括:
响应于对资源节点上已创建的初始容器组的资源容量调整指令,创建用于进行资源预占用的调度接口对象,其中所述资源容量调整指令中包括调整后的目标资源容量;
若确定所述资源容量调整指令为资源容量扩展指令,则根据所述目标资源容量与所述初始容器组的初始资源容量之间的容量差值在所述资源节点上创建虚拟容器组;
控制所述调度接口对象对所述初始容器组对应资源以及所述虚拟容器组对应资源进行预占用,并基于所述调度接口对象的所有预占用资源创建新的容器组。
第二方面,本公开实施例提供一种资源调度设备,包括:
调度接口对象创建单元,用于响应于对资源节点上已创建的初始容器组的资源容量调整指令,创建用于进行资源预占用的调度接口对象,其中所述资源容量调整指令中包括调整后的目标资源容量;
资源预占用单元,用于若确定所述资源容量调整指令为资源容量扩展指令,则根据所述目标资源容量与所述初始容器组的初始资源容量之间的容量差值在所述资源节点上创建虚拟容器组;用于控制所述调度接口对象对所述初始容器组对应资源以及所述虚拟容器组对应资源进行预占用;
容器组创建单元,并基于所述调度接口对象的所有预占用资源创建新的容器组。
第三方面,本公开实施例提供一种电子设备,包括:至少一个处理器和存储器;
所述存储器存储计算机执行指令;
所述至少一个处理器执行所述存储器存储的计算机执行指令,使得所述至少一个处理器执行如上第一方面以及第一方面各种可能的设计所述的资源调度方法。
第四方面,本公开实施例提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机执行指令,当处理器执行所述计算机执行指令时,实现如上第一方面以及第一方面各种可能的设计所述的资源调度方法。
第五方面,本公开实施例提供一种计算机程序产品,包括计算机执行指令,当处理器执行所述计算机执行指令时,实现如上第一方面以及第一方面各种可能的设计所述的资源调度方法。
本公开实施例提供的资源调度方法、设备及存储介质,通过响应于对资源节点上已创建的初始容器组的资源容量调整指令,创建用于进行资源预占用的调度接口对象,其中所述资源容量调整指令中包括调整后的目标资源容量;若确定所述资源容量调整指令为资源容量扩展指令,则根据所述目标资源容量与所述初始容器组的初始资源容量之间的容量差值在所述资源节点上创建虚拟容器组;控制所述调度接口对象对所述初始容器组对应资源以及所述虚拟容器组对应资源进行预占用,并基于所述调度接口对象的所有预占用资源创建新的容器组。在对资源节点上已创建的初始容器组的资源容量扩展时,只需基于增量部分创建虚拟容器组,由调度接口对象预占用虚拟容器组对应资源,同时也会预占用初始容器组对应资源,使得初始容器组对应资源和虚拟容器组对应资源足够对创建扩容后的新的容器组,避免扩容受到资源节点空闲资源容量的限制,保障了扩容的成功,使得资源管理和调度更加灵活和有效。
附图说明
为了更清楚地说明本公开实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本公开的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1a为本公开一实施例提供的资源调度方法的场景示例图;
图1b为本公开另一实施例提供的资源调度方法的场景示例图;
图2为本公开一实施例提供的资源调度方法流程示意图;
图3a为本公开另一实施例提供的资源调度方法流程示意图;
图3b为本公开另一实施例提供的资源调度方法流程示意图;
图4为本公开一实施例提供的资源调度设备的结构框图;
图5为本公开一实施例提供的电子设备的硬件结构示意图。
具体实施方式
为使本公开实施例的目的、技术方案和优点更加清楚,下面将结合本公开实施例中的附图,对本公开实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本公开一部分实施例,而不是全部的实施例。基于本公开中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本公开保护的范围。
在容器编排领域中,Kubernetes等容器编排框架具有强大的容器编排能力。容器组Pod是容器编排框架中资源分配的基础载体,它根据业务逻辑绑定对应的资源需求。然而在实际应用过程中,我们希望为一些还没创建的特定Pod和负载分配资源,例如:
1)抢占:已经存在的抢占规则不能保证只有正在抢占中的Pod才能分配抢占的资源,因此期望调度器能锁定资源,防止这些资源被有相同或更高优先级的其他Pod抢占;
2)重调度:在重调度场景下,最好能保证在Pod被重调度之前保留足够的资源。否则,被重调度的Pod可能无法调度回原节点,这可能导致一些使用节点本地磁盘的应用无法运行;
3)资源预分配:即使当前的资源还不可用,但也希望为将来的资源需求提前预留节点资源。
但是传统的Kubernetes等容器编排框架无法提供这些能力。
在一种相关技术中,例如开源的Koordinator系统中,提出了资源预占用的概念,其中Koord-Scheduler提供了名为Reservation的调度接口API,允许为尚未创建的特定Pod和负载提前保留节点资源。实现思路如下:
首先,创建一个虚拟容器组Fake Pod,其具有与特定Pod相同的调度约束条件,以进行实际的调度操作;创建Reservation对象,用于对Fake Pod对应资源进行预留;当用户真正需要创建该特定Pod时将进行资源匹配操作,将真实的特定Pod与Reservation对象进行匹配,若匹配成功,则该特定Pod直接使用Reservation对象已经预留的资源。
而该种相关技术中,针对任一资源节点上已部署的Pod,在需要对其进行扩容或缩容时候,需要基于扩容或缩容的目标资源容量在该资源节点的空闲资源上通过Reservation对象实现资源预占用,最终创建经过扩容或缩容的新Pod时可直接使用预占用的资源。
但是,在资源节点可能资源较为紧张,可能导致扩容或缩容失败,例如资源节点的空闲资源仅剩2C4G(2核CPU、4G内存),而需求是将一个4C8G的Pod扩容到6C10G,则资源节点的空闲资源不足以进行6C10G的全量资源预占用;
或者,扩容或缩容的目标资源容量较大时,甚至目标资源容量超过资源节点总资源的一半的情况,无法在初始Pod未销毁之前,在资源节点上进行全量资源预占用,也会导致扩容或缩容失败,例如资源节点总资源为128C256G,此时需求是将一个80C160G规格的Pod扩容到100C200G。
在上述情况中,资源节点的空闲资源上均无法实现全量资源预占用,而若先将初始Pod占据的资源释放,再去抢占所需的全量资源,则可能在初始Pod占据的资源释放后被其他Pod抢占,可能导致无法在该资源节点上再部署扩容或缩容后的该特定Pod,这可能进一步导致一些使用该资源节点本地磁盘的应用无法运行。
为了解决上述技术问题,本公开提供一种资源调度方法,通过响应于对资源节点上已创建的初始容器组(Pod)的资源容量调整指令,创建用于进行资源预占用的调度接口对象,其中资源容量调整指令中包括调整后的目标资源容量;若确定资源容量调整指令为资源容量扩展指令,则根据目标资源容量与初始容器组的初始资源容量之间的容量差值在资源节点上创建虚拟容器组;由调度接口对象对初始容器组对应资源以及虚拟容器组对应资源进行预占用,并基于调度接口对象的所有预占用资源创建新的容器组。在对资源节点上已创建的初始容器组的资源容量扩展时,只需基于增量部分创建虚拟容器组,由调度接口对象预占用虚拟容器组对应资源,同时也会预占用初始容器组对应资源,使得初始容器组对应资源和虚拟容器组对应资源足够对创建扩容后的新的容器组,避免扩容受到资源节点空闲资源容量的限制,保障了扩容的成功,使得资源管理和调度更加灵活和有效。
本公开提供的资源调度方法,适用于如图1a所示的场景,在资源调度系统(如Kubernetes容器编排系统等)中,当需要对已创建的初始容器组(初始Pod)的资源容量进行扩展时,调度器(Scheduler)创建用于进行资源预占用的调度接口对象(Reservation),根据需要扩展的增量资源容量(目标资源容量与初始资源容量之间的容量差值)在资源节点上创建虚拟容器组(Fake Pod);由调度接口对象(Reservation)对初始容器组(初始Pod)对应资源以及虚拟容器组(Fake Pod)对应资源进行预占用,并基于调度接口对象的所有预占用资源创建新的容器组。
当需要对已创建的初始容器组(初始Pod)的资源容量进行缩减时,如图1b所示,调度器(Scheduler)创建用于进行资源预占用的调度接口对象(Reservation);由于初始容器组(初始Pod)的初始资源容量足够创建新的容器组,因此无需在资源节点上创建虚拟容器组(Fake Pod),只需要调度接口对象(Reservation)对初始容器组(初始Pod)对应资源进行预占用,并基于调度接口对象的所有预占用资源创建新的容器组。
下面将结合具体实施例对本公开的资源调度方法进行详细介绍。
参考图2,图2为本公开一实施例提供的资源调度方法流程示意图。本实施例的方法可以应用在资源调度系统(如Kubernetes容器编排系统等),该资源调度方法包括:
S201、响应于对资源节点上已创建的初始容器组的资源容量调整指令,创建用于进行资源预占用的调度接口对象,其中所述资源容量调整指令中包括调整后的目标资源容量。
在本实施例中,在Kubernetes等容器编排框架中,对于集群中任一资源节点上已创建的容器组(Pod),若用户需要对其资源容量(例如CPU和内存)进行调整,包括资源容量扩展,或者资源容量缩减,可将该已创建的容器组作为初始容器组,其调整后资源容量为目标资源容量,若是资源容量扩展,则目标资源容量大于初始容器组的初始资源容量(目标资源容量中CPU和内存等资源中至少一种的资源容量是大于对应的初始资源容量);若是资源容量缩减,则目标资源容量小于初始容器组的初始资源容量(目标资源容量中CPU和内存等资源中每一种的资源容量都不大于对应的初始资源容量,且至少一种的资源容量小于对应的初始资源容量)。
用户可以向资源调度系统发送对资源节点上已创建的初始容器组的资源容量调整指令,资源容量调整指令中可包括但不限于调整后的目标资源容量,当然还可包括资源节点信息、初始容器组信息等,资源调度系统可根据资源容量调整指令创建用于进行资源预占用的调度接口对象(Reservation),调度接口对象可以类似于开源的Koordinator系统中的Reservation API,用以对资源进行预占用。
S202、若确定所述资源容量调整指令为资源容量扩展指令,则根据所述目标资源容量与所述初始容器组的初始资源容量之间的容量差值在所述资源节点上创建虚拟容器组。
在本实施例中,对于资源容量扩展的场景,考虑到该资源节点的剩余资源容量可能并不足够创建目标资源容量大小的虚拟容器组(Fake Pod),因此本实施例中考虑初始容器组对应资源(也即初始容器组已占用资源)在回收后可以继续使用(回收前或回收完后也需要预占用),只针对于目标资源容量相对于初始资源容量的增量创建增量部分的虚拟容器组进行预占用即可。
具体实施时,可先确定增量的大小,也即目标资源容量与初始资源容量之间的容量差值,然后基于容量差值在该资源节点上创建一个虚拟容器组,使得该虚拟容器组的资源容量等于容量差值。其中创建虚拟容器组(Fake Pod)的过程可以是在资源调度系统的调度器中创建,并在资源节点上预留虚拟容器组所需要资源,与该虚拟容器组绑定,其具体过程可采用已知的任一方法,例如Koordinator系统中创建虚拟容器组的过程等等,此处可不做限定。
S203、控制所述调度接口对象对所述初始容器组对应资源以及所述虚拟容器组对应资源进行预占用,并基于所述调度接口对象的所有预占用资源创建新的容器组。
在本实施例中,由于前述S202步骤中创建了调度接口对象,但刚创建的调度接口对象中并未指定所需预占用的资源,因此可以将已创建的虚拟容器组对应资源以及初始容器组对应资源交给调度接口对象进行预占用,这样调度接口对象实际预占用的资源容量等于目标资源容量,后续可以在调度接口对象的所有预占用资源的基础上,创建新的容器组,使得新的容器组的资源容量等于目标资源容量,实现对初始容器组的扩容。
本实施例提供的资源调度方法,通过响应于对资源节点上已创建的初始容器组的资源容量调整指令,创建用于进行资源预占用的调度接口对象,其中所述资源容量调整指令中包括调整后的目标资源容量;若确定所述资源容量调整指令为资源容量扩展指令,则根据所述目标资源容量与所述初始容器组的初始资源容量之间的容量差值在所述资源节点上创建虚拟容器组;控制所述调度接口对象对所述初始容器组对应资源以及所述虚拟容器组对应资源进行预占用,并基于所述调度接口对象的所有预占用资源创建新的容器组。在对资源节点上已创建的初始容器组的资源容量扩展时,只需基于增量部分创建虚拟容器组,由调度接口对象预占用虚拟容器组对应资源,同时也会预占用初始容器组对应资源,使得初始容器组对应资源和虚拟容器组对应资源足够对创建扩容后的新的容器组,避免扩容受到资源节点空闲资源容量的限制,保障了扩容的成功,也即保证了新的容器组能在原资源节点上重启,使得资源管理和调度更加灵活和有效。
在上述任一实施例的基础上,在S203控制所述调度接口对象对所述初始容器组对应资源以及所述虚拟容器组对应资源进行预占用时,具体可包括:
将所述虚拟容器组对应资源加入所述调度接口对象管理的预占用资源中进行预占用;
将所述初始容器组与所述调度接口对象进行关联,并在所述初始容器组对应资源被回收后,将被回收的所述初始容器组对应资源加入所述调度接口对象管理的预占用资源中进行预占用。
在本实施例中,调度接口对象管理的预占用资源,是需要向资源节点请求预占用的增量资源,而由于初始容器组对应资源此时尚未回收,因此需要先将虚拟容器组对应资源加入调度接口对象管理的预占用资源中(或者也可称之为已经预占用的资源或预占用成功的资源),使得虚拟容器组对应资源可以由调度接口对象进行管理和调度,由于创建虚拟容器组的过程相当于对虚拟容器组对应资源进行了预占,而虚拟容器组对应资源加入调度接口对象管理的预占用资源中,是指定了该虚拟容器组对应资源被调度接口对象预占用。
而针对于初始容器组对应资源,由于在开始时尚未回收,可以先将初始容器组与调度接口对象进行关联,也即对初始容器组对应资源先进行预约,避免在初始容器组对应资源在回收后被其他调度接口对象抢占;在初始容器组对应资源被回收后,再将被回收的初始容器组对应资源加入调度接口对象管理的预占用资源中,使得初始容器组对应资源可以由调度接口对象进行管理和调度,也即指定了该初始容器组对应资源被调度接口对象预占用。
具体实施时,在将初始容器组与所述调度接口对象进行关联后,可以在初始容器组中增加删除拦截器,例如在初始容器组中增加一个删除拦截器Finalizer,Finalizer实际是一个字段,存在Finalizer字段的初始容器组,在需要删除时,由于存在Finalizer字段而不会立即被删除,而是需要等待Finalizer字段被移除后才能被删除;在检测到初始容器组退出后,将初始容器组对应资源加入调度接口对象管理的预占用资源中,进行预占用;再移除初始容器组中的删除拦截器,也即移除Finalizer字段,这样就可以删除初始容器组,对初始容器组对应资源进行回收,回收后的初始容器组对应资源由于已提前加入到调度接口对象管理的预占用资源中,在完成回收时同时也就完成了调度接口对象对其实际的预占用,达到了无缝衔接的效果,这样就避免了先回收初始容器组对应资源再去预占用的过程中被其他调度接口对象抢占。
在上述实施例的基础上,在用于进行资源预占用的调度接口对象(ReservationAPI)的配置信息中(如API配置文档中的spec字段)可包括所需预占用的目标资源容量,还可包括预占用资源信息(也即已经预占用的资源容量),因此在具体实施将虚拟容器组对应资源加入调度接口对象管理的预占用资源中进行预占用时,在调度接口对象的配置信息中将预占用资源信息修改虚拟容器组对应资源的资源信息。
此外,调度接口对象的配置信息中还可包括待回收资源信息,因此在具体实施在将初始容器组与调度接口对象进行关联时,在调度接口对象的配置信息中将待回收资源信息修改为初始容器组对应资源的资源信息。
进一步的,在具体实施在检测到初始容器组退出后,将初始容器组对应资源加入调度接口对象管理的预占用资源中时,可以在调度接口对象的配置信息中将待回收资源信息中的初始容器组对应资源的资源信息添加到预占用资源信息中,并清空待回收资源信息。
下面以一个具体的调度接口对象(Reservation API)的配置信息(如API配置文档中的spec字段)部分内容的作为示例进行说明,其中,假设初始容器组的初始资源容量大小为cpu:400m,memory:700Mi,而目标资源容量大小为cpu:500m,memory:800Mi。
在将虚拟容器组对应资源加入调度接口对象管理的预占用资源中进行预占用时,将预占用资源信息(allocatable)修改虚拟容器组对应资源的资源信息(包括cpu、memory容量);在将初始容器组与调度接口对象进行关联时,将待回收资源信息(toBeRecliam)修改为初始容器组对应资源的资源信息(包括cpu、memory容量、以及位置信息nodeName);此时调度接口对象的配置信息部分内容如下:
而在检测到初始容器组退出后,将待回收资源信息中的初始容器组对应资源的资源信息添加到预占用资源信息中,并清空待回收资源信息,此时调度接口对象的配置信息部分内容如下:
在上述任一实施例的基础上,可以在由调度接口对象对初始容器组对应资源以及虚拟容器组对应资源进行预占用的过程中,可根据初始容器组以及虚拟容器组的状态,更新调度接口对象的状态,例如上述示例中调度接口对象的配置信息中的phase字段。其中调度接口对象的状态可包括但不限于待定状态、失败状态、等待状态、可用状态等。
在具体实施时,在资源节点上创建虚拟容器组时,若虚拟容器组未创建成功,则将调度接口对象的状态更新为待定状态,其中未创建成功可能是因为当前资源节点上的空闲资源量不足以创建虚拟容器组,因此此时将调度接口对象的状态更新为待定状态,可以在预设时间内进行一次或多次重试,等待资源节点在后续过程中通过回收资源使得空闲资源量增加。
而在经过一次或多次重试后,若在预设时间内虚拟容器组仍未创建成功,则会将调度接口对象的状态更新为失败状态,也即停止重试,可以向用户报错。
在将虚拟容器组对应资源加入调度接口对象管理的预占用资源中进行预占用,以及将初始容器组与调度接口对象进行关联之后,将调度接口对象的状态更新为等待状态,此时的等待状态实际是等待初始容器组对应资源的回收。
在检测到所述初始容器组退出后,将被回收的初始容器组对应资源加入调度接口对象管理的预占用资源中进行预占用后,将调度接口对象的状态更新为可用状态,也即说明调度接口对象完成了目标资源容量的全量预占用。
在检测到调度接口对象的状态为可用状态后,可以基于调度接口对象的所有预占用资源创建新的容器组,从而完成对初始容器组的容量扩展。
上述过程实现了在初始容器组对应资源未回收时只有虚拟容器组对应资源的预占用,也即增量资源预占用,转换到在初始容器组对应资源回收后虚拟容器组对应资源和回收的初始容器组对应资源的预占用,也即全量资源预占用,为资源管理提供了更灵活和有效的解决方案。
在上述任一实施例的基础上,本实施例提供一种资源调度方法的具体示例,如图3a和图3b所示,在对初始容器组进行资源容量扩展的场景中,本实施例的资源调度方法具体包括:
1)响应于对资源节点上已创建的初始容器组(初始Pod)的资源容量调整指令,创建用于进行资源预占用的调度接口对象Reservation;
2)在检测到Reservation创建后,请求资源调度系统中的调度器Scheduler根据目标资源容量与初始容器组的初始资源容量之间的容量差值在资源节点上创建虚拟容器组,也即创建增量的Fake Pod;
3)调度器Scheduler创建Fake Pod;
若创建Fake Pod成功,则执行步骤4);若创建Fake Pod失败,则执行步骤5);
4)若Fake Pod创建成功,将Fake Pod对应资源的资源信息写入Reservation的配置信息中的预占用资源信息字段(allocatable)内;在初始Pod中增加删除拦截器Finalizer,将初始Pod对应资源的资源信息写入Reservation的配置信息中的待回收资源信息字段(toBeRecliam)内;并更新Reservation的状态为等待状态;
5)若Fake Pod创建失败,调度器可更新Reservation的状态为待定状态,Schedule进行重试;若Schedule多次重试后在预设时间结束时仍未成功创建Fake Pod,则可更新Reservation的状态为失败状态;
6)检测初始Pod是否退出;
7)在检测到初始Pod(包括的所有容器)退出后,将初始Pod对应资源的资源信息添加到Reservation的配置信息中的预占用资源信息字段(allocatable)内,并清除待回收资源信息字段(toBeRecliam)内的初始Pod对应资源的资源信息;
8)移除初始Pod中的删除拦截器Finalizer;删除初始Pod,回收初始Pod对应资源
9)更新Reservation的状态为可用状态。
在另一种实施例中,在资源容量缩减场景中,所述资源容量调整指令为资源容量缩减指令,在上述S201后,所述方法还包括:
若确定所述资源容量调整指令为资源容量缩减指令,则控制所述调度接口对象对所述初始容器组对应资源进行预占用,并基于所述调度接口对象的所有预占用资源创建新的容器组。
在本实施例中,在需要对初始容器组进行资源容量缩减时,由于缩减后的目标资源容量小于初始容器组的初始资源容量(目标资源容量中CPU和内存等资源中每一种的资源容量都不大于对应的初始资源容量,且至少一种的资源容量小于对应的初始资源容量),故只需要对初始容器组对应资源进行预占用,就足够目标资源容量、且还有富余,而无需再额外预占用资源,也即无需创建增量的虚拟容器组。
因此,在资源容量缩减场景中的资源调度方法,与上述资源容量扩展不同之处就在于,无需创建虚拟容器组,也无需执行上述与虚拟容器组相关的过程,而其余初始容器组相关的过程可以相同。其具体过程如下:
在一种实施例中,控制所述调度接口对象对所述初始容器组对应资源进行预占用,具体可包括:
将所述初始容器组与所述调度接口对象进行关联,并在所述初始容器组对应资源被回收后,将被回收的所述初始容器组对应资源加入所述调度接口对象管理的预占用资源中进行预占用。
在本实施例中,由于在开始时初始容器组对应资源尚未回收,可以先将初始容器组与调度接口对象进行关联,也即对初始容器组对应资源先进行预约,避免在初始容器组对应资源在回收后被其他调度接口对象抢占;在初始容器组对应资源被回收后,再将被回收的初始容器组对应资源加入调度接口对象管理的预占用资源中,使得初始容器组对应资源可以由调度接口对象进行管理和调度,也即指定了该初始容器组对应资源被调度接口对象预占用。
具体实施时,在将初始容器组与所述调度接口对象进行关联后,可以在初始容器组中增加删除拦截器,例如在初始容器组中增加一个删除拦截器Finalizer,Finalizer实际是一个字段,存在Finalizer字段的初始容器组,在需要删除时,由于存在Finalizer字段而不会立即被删除,而是进行回调,等待Finalizer字段被移除后才能被删除,可以避免其他调度接口对象对初始容器组的删除;在检测到初始容器组退出后,需要对初始容器组进行删除,但由于存在Finalizer,进行回调,将初始容器组对应资源加入调度接口对象管理的预占用资源中,进行预占用;再移除初始容器组中的删除拦截器,也即移除Finalizer字段,这样就可以删除初始容器组,对初始容器组对应资源进行回收,回收后的初始容器组对应资源由于已提前加入到调度接口对象管理的预占用资源中,在完成回收时同时也就完成了调度接口对象对其实际的预占用,达到了无缝衔接的效果,这样就避免了先回收初始容器组对应资源再去预占用的过程中被其他调度接口对象抢占。
在上述实施例的基础上,在用于进行资源预占用的调度接口对象(ReservationAPI)的配置信息中(如API配置文档中的spec字段)可包括所需预占用的目标资源容量,还可包括预占用资源信息(也即已经预占用的资源容量),由于不存在虚拟容器组,预占用资源信息可以为空。
调度接口对象的配置信息中还可包括待回收资源信息,因此在具体实施在将初始容器组与调度接口对象进行关联时,在调度接口对象的配置信息中将待回收资源信息修改为初始容器组对应资源的资源信息。
进一步的,在具体实施在检测到初始容器组退出后,将初始容器组对应资源加入调度接口对象管理的预占用资源中时,可以在调度接口对象的配置信息中将待回收资源信息中的初始容器组对应资源的资源信息添加到预占用资源信息中,并清空待回收资源信息。
下面以一个具体的调度接口对象(Reservation API)的配置信息(如API配置文档中的spec字段)部分内容的作为示例进行说明,其中,假设初始容器组的初始资源容量大小为cpu:400m,memory:700Mi,而目标资源容量大小为cpu:300m,memory:500Mi。
在将初始容器组与调度接口对象进行关联时,将待回收资源信息(toBeRecliam)修改为初始容器组对应资源的资源信息(包括cpu、memory容量、以及位置信息nodeName);而由于无需创建虚拟容器组,预占用资源信息(allocatable)为空,此时调度接口对象的配置信息部分内容如下:
而在检测到初始容器组退出后,将待回收资源信息中的初始容器组对应资源的资源信息添加到预占用资源信息中,并清空待回收资源信息,此时调度接口对象的配置信息部分内容如下:
/>
可选的,在将待回收资源信息中的初始容器组对应资源的资源信息添加到预占用资源信息中时,也可根据目标资源容量将初始容器组对应资源的部分资源信息添加到预占用资源信息中,也即调度接口对象只预占目标资源容量所需大小的资源,此时调度接口对象的配置信息部分内容如下:
在上述任一实施例的基础上,在调度接口对象对初始容器组对应资源进行预占用的过程中,同样也可根据初始容器组的状态,更新调度接口对象的状态,例如上述示例中调度接口对象的配置信息中的phase字段。其中调度接口对象的状态可包括但不限于等待状态、可用状态等。
在具体实施时,在将初始容器组与调度接口对象进行关联之后,将调度接口对象的状态更新为等待状态,此时的等待状态实际是等待初始容器组对应资源的回收。
在检测到所述初始容器组退出后,将被回收的初始容器组对应资源加入调度接口对象管理的预占用资源中进行预占用后,将调度接口对象的状态更新为可用状态,也即说明调度接口对象完成了目标资源容量的预占。
在检测到调度接口对象的状态为可用状态后,可以基于调度接口对象的所有预占用资源创建新的容器组,从而完成对初始容器组的容量扩展。
上述各资源容量缩减场景下的资源调度方法实施例,在对资源节点上已创建的初始容器组的资源容量缩减时,只需由调度接口对象预占用初始容器组对应资源,初始容器组对应资源足够对创建扩容后的新的容器组,避免缩容受到资源节点空闲资源容量的限制,保障了缩容的成功,也即保证了缩容后的新的容器组可以在原资源节点上重启,使得资源管理和调度更加灵活和有效。
在上述任一实施例的基础上,上述调度接口对象的配置信息中还可包括预占策略字段,用于标识调度接口对象采用全量资源预占用,还是非全量资源预占用,若采用非全量资源预占用,则执行上述各实施例中的资源调度方法(包括资源容量扩展场景和资源容量缩减场景的资源调度方法);若采用全量资源预占用,则需要基于资源节点的空闲资源上创建一个虚拟容器组,使得该虚拟容器组的资源容量等于目标资源容量,并加入调度接口对象管理的预占用资源中进行预占用,后续直接在该虚拟容器组上创建新的容器组。具体采用全量资源预占用或非全量资源预占用,可根据资源节点的空闲资源容量和目标资源容量的大小来确定,若空闲资源容量不少于目标资源容量,则可采用全量资源预占用,否则,采用非全量资源预占用;当然也可所有情况都采用非全量资源预占用。
对应于上文实施例的资源调度方法,图4为本公开实施例提供的资源调度设备的结构框图。为了便于说明,仅示出了与本公开实施例相关的部分。参照图4,所述资源调度设备400包括:调度接口对象创建单元401、资源预占用单元402、容器组创建单元403。
其中,调度接口对象创建单元,用于响应于对资源节点上已创建的初始容器组的资源容量调整指令,创建用于进行资源预占用的调度接口对象,其中所述资源容量调整指令中包括调整后的目标资源容量;
资源预占用单元,用于若确定所述资源容量调整指令为资源容量扩展指令,则根据所述目标资源容量与所述初始容器组的初始资源容量之间的容量差值在所述资源节点上创建虚拟容器组;用于控制所述调度接口对象对所述初始容器组对应资源以及所述虚拟容器组对应资源进行预占用;
容器组创建单元,并基于所述调度接口对象的所有预占用资源创建新的容器组。
在本公开的一个或多个实施例中,所述资源预占用单元在控制所述调度接口对象对所述初始容器组对应资源以及所述虚拟容器组对应资源进行预占用时,用于:
将所述虚拟容器组对应资源加入所述调度接口对象管理的预占用资源中进行预占用;
将所述初始容器组与所述调度接口对象进行关联,并在所述初始容器组对应资源被回收后,将被回收的所述初始容器组对应资源加入所述调度接口对象管理的预占用资源中进行预占用。
在本公开的一个或多个实施例中,所述资源预占用单元在控制所述调度接口对象对所述初始容器组对应资源以及所述虚拟容器组对应资源进行预占用的过程中,还用于:
根据所述初始容器组以及所述虚拟容器组的状态,更新所述调度接口对象的状态;
相应的,所述容器组创建单元在基于所述调度接口对象的所有预占用资源创建新的容器组时,用于:
在检测到所述调度接口对象的状态为可用状态后,基于所述调度接口对象的所有预占用资源创建新的容器组。
在本公开的一个或多个实施例中,所述资源预占用单元在根据所述初始容器组以及所述虚拟容器组的状态,更新所述调度接口对象的状态时,用于:
在将所述虚拟容器组对应资源加入所述调度接口对象管理的预占用资源中进行预占用,以及将所述初始容器组与所述调度接口对象进行关联之后,将所述调度接口对象的状态更新为等待状态;
在将被回收的所述初始容器组对应资源加入所述调度接口对象管理的预占用资源中进行预占用后,将所述调度接口对象的状态更新为可用状态。
在本公开的一个或多个实施例中,所述资源预占用单元在根据所述初始容器组以及所述虚拟容器组的状态,更新所述调度接口对象的状态时,用于:
在所述资源节点上创建虚拟容器组时,若所述虚拟容器组未创建成功,则将所述调度接口对象的状态更新为待定状态,并在预设时间内进行一次或多次重试;
若在所述预设时间内所述虚拟容器组未创建成功,则将所述调度接口对象的状态更新为失败状态。
在本公开的一个或多个实施例中,所述资源预占用单元在将所述初始容器组与所述调度接口对象进行关联后,还用于:
在所述初始容器组中增加删除拦截器;
相应的,所述在所述初始容器组对应资源被回收后,将被回收的所述初始容器组对应资源加入所述调度接口对象管理的预占用资源中进行预占用,包括:
在检测到所述初始容器组退出后,将所述初始容器组对应资源加入所述调度接口对象管理的预占用资源中;
移除所述初始容器组中的删除拦截器,对所述初始容器组对应资源进行回收,以完成所述调度接口对象对被回收的所述初始容器组对应资源的预占用。
在本公开的一个或多个实施例中,所述资源预占用单元在将所述虚拟容器组对应资源加入所述调度接口对象管理的预占用资源中进行预占用时,用于:
在所述调度接口对象的配置信息中将预占用资源信息修改为所述虚拟容器组对应资源的资源信息;
所述资源预占用单元在将所述初始容器组与所述调度接口对象进行关联时,用于:
在所述调度接口对象的配置信息中将待回收资源信息修改为所述初始容器组对应资源的资源信息;
所述资源预占用单元在检测到所述初始容器组退出后,将所述初始容器组对应资源加入所述调度接口对象管理的预占用资源中时,用于:
在所述调度接口对象的配置信息中将所述待回收资源信息中的所述初始容器组对应资源的资源信息添加到所述预占用资源信息中,并清空所述待回收资源信息。
在本公开的一个或多个实施例中,所述资源预占用单元用于,若确定所述资源容量调整指令为资源容量缩减指令,则控制所述调度接口对象对所述初始容器组对应资源进行预占用;
所述容器组创建单元还用于,基于所述调度接口对象的所有预占用资源创建新的容器组。
在本公开的一个或多个实施例中,所述资源预占用单元在控制所述调度接口对象对所述初始容器组对应资源进行预占用时,用于:
将所述初始容器组与所述调度接口对象进行关联,并在所述初始容器组对应资源被回收后,将被回收的所述初始容器组对应资源加入所述调度接口对象管理的预占用资源中进行预占用。
在本公开的一个或多个实施例中,所述资源预占用单元在控制所述调度接口对象对所述初始容器组对应资源进行预占用的过程中,还用于:
根据所述初始容器组的状态,更新所述调度接口对象的状态;
相应的,所述容器组创建单元在基于所述调度接口对象的所有预占用资源创建新的容器组,包括:
在检测到所述调度接口对象的状态为可用状态后,基于所述调度接口对象的所有预占用资源创建新的容器组。
在本公开的一个或多个实施例中,所述资源预占用单元在根据所述初始容器组的状态,更新所述调度接口对象的状态时,用于:
在将所述初始容器组与所述调度接口对象进行关联之后,将所述调度接口对象的状态更新为等待状态;
在将被回收的所述初始容器组对应资源加入所述调度接口对象管理的预占用资源中进行预占用后,将所述调度接口对象的状态更新为可用状态。
在本公开的一个或多个实施例中,所述资源预占用单元在将所述初始容器组与所述调度接口对象进行关联后,还用于:
在所述初始容器组中增加删除拦截器;
相应的,所述在所述初始容器组对应资源被回收后,将被回收的所述初始容器组对应资源加入所述调度接口对象管理的预占用资源中进行预占用,包括:
在检测到所述初始容器组退出后,将所述初始容器组对应资源加入所述调度接口对象管理的预占用资源中;
移除所述初始容器组中的删除拦截器,对所述初始容器组对应资源进行回收,以完成所述调度接口对象对被回收的所述初始容器组对应资源的预占用。
在本公开的一个或多个实施例中,所述资源预占用单元在将所述初始容器组与所述调度接口对象进行关联时,用于:
在所述调度接口对象的配置信息中将待回收资源信息修改为所述初始容器组对应资源的资源信息;
所述在检测到所述初始容器组退出后,将所述初始容器组对应资源加入所述调度接口对象管理的预占用资源中,包括:
在所述调度接口对象的配置信息中将所述待回收资源信息中的所述初始容器组对应资源的资源信息添加到所述预占用资源信息中,并清空所述待回收资源信息。
本实施例提供的设备,可用于执行上述方法实施例的技术方案,其实现原理和技术效果类似,本实施例此处不再赘述。
参考图5,其示出了适于用来实现本公开实施例的电子设备500的结构示意图,该电子设备500可以为终端设备或服务器。其中,终端设备可以包括但不限于诸如移动电话、笔记本电脑、数字广播接收器、个人数字助理(Personal Digital Assistant,简称PDA)、平板电脑(Portable Android Device,简称PAD)、便携式多媒体播放器(Portable MediaPlayer,简称PMP)、车载终端(例如车载导航终端)等等的移动终端以及诸如数字TV、台式计算机等等的固定终端。图5示出的电子设备仅仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。
如图5所示,电子设备500可以包括处理装置(例如中央处理器、图形处理器等)501,其可以根据存储在只读存储器(Read Only Memory,简称ROM)502中的程序或者从存储装置508加载到随机访问存储器(Random Access Memory,简称RAM)503中的程序而执行各种适当的动作和处理。在RAM 503中,还存储有电子设备500操作所需的各种程序和数据。处理装置501、ROM 502以及RAM 503通过总线504彼此相连。输入/输出(I/O)接口505也连接至总线504。
通常,以下装置可以连接至I/O接口505:包括例如触摸屏、触摸板、键盘、鼠标、摄像头、麦克风、加速度计、陀螺仪等的输入装置506;包括例如液晶显示器(Liquid CrystalDisplay,简称LCD)、扬声器、振动器等的输出装置507;包括例如磁带、硬盘等的存储装置508;以及通信装置509。通信装置509可以允许电子设备500与其他设备进行无线或有线通信以交换数据。虽然图5示出了具有各种装置的电子设备500,但是应理解的是,并不要求实施或具备所有示出的装置。可以替代地实施或具备更多或更少的装置。
特别地,根据本公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信装置509从网络上被下载和安装,或者从存储装置508被安装,或者从ROM 502被安装。在该计算机程序被处理装置501执行时,执行本公开实施例的方法中限定的上述功能。
需要说明的是,本公开上述的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本公开中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本公开中,计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读信号介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:电线、光缆、RF(射频)等等,或者上述的任意合适的组合。
上述计算机可读介质可以是上述电子设备中所包含的;也可以是单独存在,而未装配入该电子设备中。
上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被该电子设备执行时,使得该电子设备执行上述实施例所示的方法。
可以以一种或多种程序设计语言或其组合来编写用于执行本公开的操作的计算机程序代码,上述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LocalArea Network,简称LAN)或广域网(Wide Area Network,简称WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
附图中的流程图和框图,图示了按照本公开各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,该模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本公开实施例中所涉及到的单元可以通过软件的方式实现,也可以通过硬件的方式来实现。其中,单元的名称在某种情况下并不构成对该单元本身的限定,例如,第一获取单元还可以被描述为“获取至少两个网际协议地址的单元”。
本文中以上描述的功能可以至少部分地由一个或多个硬件逻辑部件来执行。例如,非限制性地,可以使用的示范类型的硬件逻辑部件包括:现场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、片上系统(SOC)、复杂可编程逻辑设备(CPLD)等等。
在本公开的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、光纤、便捷式紧凑盘只读存储器(CD-ROM)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
第一方面,根据本公开的一个或多个实施例,提供了一种资源调度方法,包括:
响应于对资源节点上已创建的初始容器组的资源容量调整指令,创建用于进行资源预占用的调度接口对象,其中所述资源容量调整指令中包括调整后的目标资源容量;
若确定所述资源容量调整指令为资源容量扩展指令,则根据所述目标资源容量与所述初始容器组的初始资源容量之间的容量差值在所述资源节点上创建虚拟容器组;
控制所述调度接口对象对所述初始容器组对应资源以及所述虚拟容器组对应资源进行预占用,并基于所述调度接口对象的所有预占用资源创建新的容器组。
根据本公开的一个或多个实施例,所述控制所述调度接口对象对所述初始容器组对应资源以及所述虚拟容器组对应资源进行预占用,包括:
将所述虚拟容器组对应资源加入所述调度接口对象管理的预占用资源中进行预占用;
将所述初始容器组与所述调度接口对象进行关联,并在所述初始容器组对应资源被回收后,将被回收的所述初始容器组对应资源加入所述调度接口对象管理的预占用资源中进行预占用。
根据本公开的一个或多个实施例,所述控制所述调度接口对象对所述初始容器组对应资源以及所述虚拟容器组对应资源进行预占用的过程中,还包括:
根据所述初始容器组以及所述虚拟容器组的状态,更新所述调度接口对象的状态;
相应的,所述基于所述调度接口对象的所有预占用资源创建新的容器组,包括:
在检测到所述调度接口对象的状态为可用状态后,基于所述调度接口对象的所有预占用资源创建新的容器组。
根据本公开的一个或多个实施例,所述根据所述初始容器组以及所述虚拟容器组的状态,更新所述调度接口对象的状态,包括:
在将所述虚拟容器组对应资源加入所述调度接口对象管理的预占用资源中进行预占用,以及将所述初始容器组与所述调度接口对象进行关联之后,将所述调度接口对象的状态更新为等待状态;
在将被回收的所述初始容器组对应资源加入所述调度接口对象管理的预占用资源中进行预占用后,将所述调度接口对象的状态更新为可用状态。
根据本公开的一个或多个实施例,所述根据所述初始容器组以及所述虚拟容器组的状态,更新所述调度接口对象的状态,包括:
在所述资源节点上创建虚拟容器组时,若所述虚拟容器组未创建成功,则将所述调度接口对象的状态更新为待定状态,并在预设时间内进行一次或多次重试;
若在所述预设时间内所述虚拟容器组未创建成功,则将所述调度接口对象的状态更新为失败状态。
根据本公开的一个或多个实施例,所述将所述初始容器组与所述调度接口对象进行关联后,还包括:
在所述初始容器组中增加删除拦截器;
相应的,所述在所述初始容器组对应资源被回收后,将被回收的所述初始容器组对应资源加入所述调度接口对象管理的预占用资源中进行预占用,包括:
在检测到所述初始容器组退出后,将所述初始容器组对应资源加入所述调度接口对象管理的预占用资源中;
移除所述初始容器组中的删除拦截器,对所述初始容器组对应资源进行回收,以完成所述调度接口对象对被回收的所述初始容器组对应资源的预占用。
根据本公开的一个或多个实施例,所述将所述虚拟容器组对应资源加入所述调度接口对象管理的预占用资源中进行预占用,包括:
在所述调度接口对象的配置信息中将预占用资源信息修改为所述虚拟容器组对应资源的资源信息;
所述将所述初始容器组与所述调度接口对象进行关联,包括:
在所述调度接口对象的配置信息中将待回收资源信息修改为所述初始容器组对应资源的资源信息;
所述在检测到所述初始容器组退出后,将所述初始容器组对应资源加入所述调度接口对象管理的预占用资源中,包括:
在所述调度接口对象的配置信息中将所述待回收资源信息中的所述初始容器组对应资源的资源信息添加到所述预占用资源信息中,并清空所述待回收资源信息。
根据本公开的一个或多个实施例,所述方法还包括:
若确定所述资源容量调整指令为资源容量缩减指令,则控制所述调度接口对象对所述初始容器组对应资源进行预占用,并基于所述调度接口对象的所有预占用资源创建新的容器组。
根据本公开的一个或多个实施例,所述控制所述调度接口对象对所述初始容器组对应资源进行预占用,包括:
将所述初始容器组与所述调度接口对象进行关联,并在所述初始容器组对应资源被回收后,将被回收的所述初始容器组对应资源加入所述调度接口对象管理的预占用资源中进行预占用。
根据本公开的一个或多个实施例,所述控制所述调度接口对象对所述初始容器组对应资源进行预占用的过程中,还包括:
根据所述初始容器组的状态,更新所述调度接口对象的状态;
相应的,所述基于所述调度接口对象的所有预占用资源创建新的容器组,包括:
在检测到所述调度接口对象的状态为可用状态后,基于所述调度接口对象的所有预占用资源创建新的容器组。
根据本公开的一个或多个实施例,所述根据所述初始容器组的状态,更新所述调度接口对象的状态,包括:
在将所述初始容器组与所述调度接口对象进行关联之后,将所述调度接口对象的状态更新为等待状态;
在将被回收的所述初始容器组对应资源加入所述调度接口对象管理的预占用资源中进行预占用后,将所述调度接口对象的状态更新为可用状态。
根据本公开的一个或多个实施例,所述将所述初始容器组与所述调度接口对象进行关联后,还包括:
在所述初始容器组中增加删除拦截器;
相应的,所述在所述初始容器组对应资源被回收后,将被回收的所述初始容器组对应资源加入所述调度接口对象管理的预占用资源中进行预占用,包括:
在检测到所述初始容器组退出后,将所述初始容器组对应资源加入所述调度接口对象管理的预占用资源中;
移除所述初始容器组中的删除拦截器,对所述初始容器组对应资源进行回收,以完成所述调度接口对象对被回收的所述初始容器组对应资源的预占用。
根据本公开的一个或多个实施例,所述将所述初始容器组与所述调度接口对象进行关联,包括:
在所述调度接口对象的配置信息中将待回收资源信息修改为所述初始容器组对应资源的资源信息;
所述在检测到所述初始容器组退出后,将所述初始容器组对应资源加入所述调度接口对象管理的预占用资源中,包括:
在所述调度接口对象的配置信息中将所述待回收资源信息中的所述初始容器组对应资源的资源信息添加到所述预占用资源信息中,并清空所述待回收资源信息。
第二方面,根据本公开的一个或多个实施例,提供了一种资源调度设备,包括:
调度接口对象创建单元,用于响应于对资源节点上已创建的初始容器组的资源容量调整指令,创建用于进行资源预占用的调度接口对象,其中所述资源容量调整指令中包括调整后的目标资源容量;
资源预占用单元,用于若确定所述资源容量调整指令为资源容量扩展指令,则根据所述目标资源容量与所述初始容器组的初始资源容量之间的容量差值在所述资源节点上创建虚拟容器组;用于控制所述调度接口对象对所述初始容器组对应资源以及所述虚拟容器组对应资源进行预占用;
容器组创建单元,并基于所述调度接口对象的所有预占用资源创建新的容器组。
根据本公开的一个或多个实施例,所述资源预占用单元在控制所述调度接口对象对所述初始容器组对应资源以及所述虚拟容器组对应资源进行预占用时,用于:
将所述虚拟容器组对应资源加入所述调度接口对象管理的预占用资源中进行预占用;
将所述初始容器组与所述调度接口对象进行关联,并在所述初始容器组对应资源被回收后,将被回收的所述初始容器组对应资源加入所述调度接口对象管理的预占用资源中进行预占用。
根据本公开的一个或多个实施例,所述资源预占用单元在控制所述调度接口对象对所述初始容器组对应资源以及所述虚拟容器组对应资源进行预占用的过程中,还用于:
根据所述初始容器组以及所述虚拟容器组的状态,更新所述调度接口对象的状态;
相应的,所述容器组创建单元在基于所述调度接口对象的所有预占用资源创建新的容器组时,用于:
在检测到所述调度接口对象的状态为可用状态后,基于所述调度接口对象的所有预占用资源创建新的容器组。
根据本公开的一个或多个实施例,所述资源预占用单元在根据所述初始容器组以及所述虚拟容器组的状态,更新所述调度接口对象的状态时,用于:
在将所述虚拟容器组对应资源加入所述调度接口对象管理的预占用资源中进行预占用,以及将所述初始容器组与所述调度接口对象进行关联之后,将所述调度接口对象的状态更新为等待状态;
在将被回收的所述初始容器组对应资源加入所述调度接口对象管理的预占用资源中进行预占用后,将所述调度接口对象的状态更新为可用状态。
根据本公开的一个或多个实施例,所述资源预占用单元在根据所述初始容器组以及所述虚拟容器组的状态,更新所述调度接口对象的状态时,用于:
在所述资源节点上创建虚拟容器组时,若所述虚拟容器组未创建成功,则将所述调度接口对象的状态更新为待定状态,并在预设时间内进行一次或多次重试;
若在所述预设时间内所述虚拟容器组未创建成功,则将所述调度接口对象的状态更新为失败状态。
根据本公开的一个或多个实施例,所述资源预占用单元在将所述初始容器组与所述调度接口对象进行关联后,还用于:
在所述初始容器组中增加删除拦截器;
相应的,所述在所述初始容器组对应资源被回收后,将被回收的所述初始容器组对应资源加入所述调度接口对象管理的预占用资源中进行预占用,包括:
在检测到所述初始容器组退出后,将所述初始容器组对应资源加入所述调度接口对象管理的预占用资源中;
移除所述初始容器组中的删除拦截器,对所述初始容器组对应资源进行回收,以完成所述调度接口对象对被回收的所述初始容器组对应资源的预占用。
根据本公开的一个或多个实施例,所述资源预占用单元在将所述虚拟容器组对应资源加入所述调度接口对象管理的预占用资源中进行预占用时,用于:
在所述调度接口对象的配置信息中将预占用资源信息修改为所述虚拟容器组对应资源的资源信息;
所述资源预占用单元在将所述初始容器组与所述调度接口对象进行关联时,用于:
在所述调度接口对象的配置信息中将待回收资源信息修改为所述初始容器组对应资源的资源信息;
所述资源预占用单元在检测到所述初始容器组退出后,将所述初始容器组对应资源加入所述调度接口对象管理的预占用资源中时,用于:
在所述调度接口对象的配置信息中将所述待回收资源信息中的所述初始容器组对应资源的资源信息添加到所述预占用资源信息中,并清空所述待回收资源信息。
根据本公开的一个或多个实施例,所述资源预占用单元用于,若确定所述资源容量调整指令为资源容量缩减指令,则控制所述调度接口对象对所述初始容器组对应资源进行预占用;
所述容器组创建单元还用于,基于所述调度接口对象的所有预占用资源创建新的容器组。
根据本公开的一个或多个实施例,所述资源预占用单元在控制所述调度接口对象对所述初始容器组对应资源进行预占用时,用于:
将所述初始容器组与所述调度接口对象进行关联,并在所述初始容器组对应资源被回收后,将被回收的所述初始容器组对应资源加入所述调度接口对象管理的预占用资源中进行预占用。
根据本公开的一个或多个实施例,所述资源预占用单元在控制所述调度接口对象对所述初始容器组对应资源进行预占用的过程中,还用于:
根据所述初始容器组的状态,更新所述调度接口对象的状态;
相应的,所述容器组创建单元在基于所述调度接口对象的所有预占用资源创建新的容器组,包括:
在检测到所述调度接口对象的状态为可用状态后,基于所述调度接口对象的所有预占用资源创建新的容器组。
根据本公开的一个或多个实施例,所述资源预占用单元在根据所述初始容器组的状态,更新所述调度接口对象的状态时,用于:
在将所述初始容器组与所述调度接口对象进行关联之后,将所述调度接口对象的状态更新为等待状态;
在将被回收的所述初始容器组对应资源加入所述调度接口对象管理的预占用资源中进行预占用后,将所述调度接口对象的状态更新为可用状态。
根据本公开的一个或多个实施例,所述资源预占用单元在将所述初始容器组与所述调度接口对象进行关联后,还用于:
在所述初始容器组中增加删除拦截器;
相应的,所述在所述初始容器组对应资源被回收后,将被回收的所述初始容器组对应资源加入所述调度接口对象管理的预占用资源中进行预占用,包括:
在检测到所述初始容器组退出后,将所述初始容器组对应资源加入所述调度接口对象管理的预占用资源中;
移除所述初始容器组中的删除拦截器,对所述初始容器组对应资源进行回收,以完成所述调度接口对象对被回收的所述初始容器组对应资源的预占用。
根据本公开的一个或多个实施例,所述资源预占用单元在将所述初始容器组与所述调度接口对象进行关联时,用于:
在所述调度接口对象的配置信息中将待回收资源信息修改为所述初始容器组对应资源的资源信息;
所述在检测到所述初始容器组退出后,将所述初始容器组对应资源加入所述调度接口对象管理的预占用资源中,包括:
在所述调度接口对象的配置信息中将所述待回收资源信息中的所述初始容器组对应资源的资源信息添加到所述预占用资源信息中,并清空所述待回收资源信息。
第三方面,根据本公开的一个或多个实施例,提供了一种电子设备,包括:至少一个处理器和存储器;
所述存储器存储计算机执行指令;
所述至少一个处理器执行所述存储器存储的计算机执行指令,使得所述至少一个处理器执行如上第一方面以及第一方面各种可能的设计所述的资源调度方法。
第四方面,根据本公开的一个或多个实施例,提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机执行指令,当处理器执行所述计算机执行指令时,实现如上第一方面以及第一方面各种可能的设计所述的资源调度方法。
第五方面,根据本公开的一个或多个实施例,提供了一种计算机程序产品,包括计算机执行指令,当处理器执行所述计算机执行指令时,实现如上第一方面以及第一方面各种可能的设计所述的资源调度方法。
以上描述仅为本公开的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本公开中所涉及的公开范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离上述公开构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本公开中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。
此外,虽然采用特定次序描绘了各操作,但是这不应当理解为要求这些操作以所示出的特定次序或以顺序次序执行来执行。在一定环境下,多任务和并行处理可能是有利的。同样地,虽然在上面论述中包含了若干具体实现细节,但是这些不应当被解释为对本公开的范围的限制。在单独的实施例的上下文中描述的某些特征还可以组合地实现在单个实施例中。相反地,在单个实施例的上下文中描述的各种特征也可以单独地或以任何合适的子组合的方式实现在多个实施例中。
尽管已经采用特定于结构特征和/或方法逻辑动作的语言描述了本主题,但是应当理解所附权利要求书中所限定的主题未必局限于上面描述的特定特征或动作。相反,上面所描述的特定特征和动作仅仅是实现权利要求书的示例形式。
Claims (16)
1.一种资源调度方法,其特征在于,包括:
响应于对资源节点上已创建的初始容器组的资源容量调整指令,创建用于进行资源预占用的调度接口对象,其中所述资源容量调整指令中包括调整后的目标资源容量;
若确定所述资源容量调整指令为资源容量扩展指令,则根据所述目标资源容量与所述初始容器组的初始资源容量之间的容量差值在所述资源节点上创建虚拟容器组;
控制所述调度接口对象对所述初始容器组对应资源以及所述虚拟容器组对应资源进行预占用,并基于所述调度接口对象的所有预占用资源创建新的容器组。
2.根据权利要求1所述的方法,其特征在于,所述控制所述调度接口对象对所述初始容器组对应资源以及所述虚拟容器组对应资源进行预占用,包括:
将所述虚拟容器组对应资源加入所述调度接口对象管理的预占用资源中进行预占用;
将所述初始容器组与所述调度接口对象进行关联,并在所述初始容器组对应资源被回收后,将被回收的所述初始容器组对应资源加入所述调度接口对象管理的预占用资源中进行预占用。
3.根据权利要求2所述的方法,其特征在于,所述方法还包括:
根据所述初始容器组以及所述虚拟容器组的状态,更新所述调度接口对象的状态;
相应的,所述基于所述调度接口对象的所有预占用资源创建新的容器组,包括:
在检测到所述调度接口对象的状态为可用状态后,基于所述调度接口对象的所有预占用资源创建新的容器组。
4.根据权利要求3所述的方法,其特征在于,所述根据所述初始容器组以及所述虚拟容器组的状态,更新所述调度接口对象的状态,包括:
在将所述虚拟容器组对应资源加入所述调度接口对象管理的预占用资源中进行预占用,以及将所述初始容器组与所述调度接口对象进行关联之后,将所述调度接口对象的状态更新为等待状态;
在将被回收的所述初始容器组对应资源加入所述调度接口对象管理的预占用资源中进行预占用后,将所述调度接口对象的状态更新为可用状态。
5.根据权利要求3所述的方法,其特征在于,所述根据所述初始容器组以及所述虚拟容器组的状态,更新所述调度接口对象的状态,包括:
在所述资源节点上创建虚拟容器组时,若所述虚拟容器组未创建成功,则将所述调度接口对象的状态更新为待定状态,并在预设时间内进行一次或多次重试;
若在所述预设时间内所述虚拟容器组未创建成功,则将所述调度接口对象的状态更新为失败状态。
6.根据权利要求2所述的方法,其特征在于,所述将所述虚拟容器组对应资源加入所述调度接口对象管理的预占用资源中进行预占用,包括:
在所述调度接口对象的配置信息中将预占用资源信息修改为所述虚拟容器组对应资源的资源信息。
7.根据权利要求1所述的方法,其特征在于,所述方法还包括:
若确定所述资源容量调整指令为资源容量缩减指令,则控制所述调度接口对象对所述初始容器组对应资源进行预占用,并基于所述调度接口对象的所有预占用资源创建新的容器组。
8.根据权利要求7所述的方法,其特征在于,所述控制所述调度接口对象对所述初始容器组对应资源进行预占用,包括:
将所述初始容器组与所述调度接口对象进行关联,并在所述初始容器组对应资源被回收后,将被回收的所述初始容器组对应资源加入所述调度接口对象管理的预占用资源中进行预占用。
9.根据权利要求8所述的方法,其特征在于,所述控制所述调度接口对象对所述初始容器组对应资源进行预占用的过程中,还包括:
根据所述初始容器组的状态,更新所述调度接口对象的状态;
相应的,所述基于所述调度接口对象的所有预占用资源创建新的容器组,包括:
在检测到所述调度接口对象的状态为可用状态后,基于所述调度接口对象的所有预占用资源创建新的容器组。
10.根据权利要求9所述的方法,其特征在于,所述根据所述初始容器组的状态,更新所述调度接口对象的状态,包括:
在将所述初始容器组与所述调度接口对象进行关联之后,将所述调度接口对象的状态更新为等待状态;
在将被回收的所述初始容器组对应资源加入所述调度接口对象管理的预占用资源中进行预占用后,将所述调度接口对象的状态更新为可用状态。
11.根据权利要求2或8所述的方法,其特征在于,所述将所述初始容器组与所述调度接口对象进行关联后,还包括:
在所述初始容器组中增加删除拦截器;
相应的,所述在所述初始容器组对应资源被回收后,将被回收的所述初始容器组对应资源加入所述调度接口对象管理的预占用资源中进行预占用,包括:
在检测到所述初始容器组退出后,将所述初始容器组对应资源加入所述调度接口对象管理的预占用资源中;
移除所述初始容器组中的删除拦截器,对所述初始容器组对应资源进行回收,以完成所述调度接口对象对被回收的所述初始容器组对应资源的预占用。
12.根据权利要求11所述的方法,其特征在于,所述将所述初始容器组与所述调度接口对象进行关联,包括:
在所述调度接口对象的配置信息中将待回收资源信息修改为所述初始容器组对应资源的资源信息;
所述在检测到所述初始容器组退出后,将所述初始容器组对应资源加入所述调度接口对象管理的预占用资源中,包括:
在所述调度接口对象的配置信息中将所述待回收资源信息中的所述初始容器组对应资源的资源信息添加到所述预占用资源信息中,并清空所述待回收资源信息。
13.一种资源调度设备,其特征在于,包括:
调度接口对象创建单元,用于响应于对资源节点上已创建的初始容器组的资源容量调整指令,创建用于进行资源预占用的调度接口对象,其中所述资源容量调整指令中包括调整后的目标资源容量;
资源预占用单元,用于若确定所述资源容量调整指令为资源容量扩展指令,则根据所述目标资源容量与所述初始容器组的初始资源容量之间的容量差值在所述资源节点上创建虚拟容器组;用于控制所述调度接口对象对所述初始容器组对应资源以及所述虚拟容器组对应资源进行预占用;
容器组创建单元,并基于所述调度接口对象的所有预占用资源创建新的容器组。
14.一种电子设备,其特征在于,包括:至少一个处理器和存储器;
所述存储器存储计算机执行指令;
所述至少一个处理器执行所述存储器存储的计算机执行指令,使得所述至少一个处理器执行如权利要求1-12任一项所述的方法。
15.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机执行指令,当处理器执行所述计算机执行指令时,实现如权利要求1-12任一项所述的方法。
16.一种计算机程序产品,其特征在于,包括计算机执行指令,当处理器执行所述计算机执行指令时,实现如权利要求1-12任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311723782.7A CN117667420A (zh) | 2023-12-14 | 2023-12-14 | 资源调度方法、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311723782.7A CN117667420A (zh) | 2023-12-14 | 2023-12-14 | 资源调度方法、设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117667420A true CN117667420A (zh) | 2024-03-08 |
Family
ID=90071241
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311723782.7A Pending CN117667420A (zh) | 2023-12-14 | 2023-12-14 | 资源调度方法、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117667420A (zh) |
-
2023
- 2023-12-14 CN CN202311723782.7A patent/CN117667420A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US12019652B2 (en) | Method and device for synchronizing node data | |
CN114020470B (zh) | 资源分配方法、装置、可读介质及电子设备 | |
US20130191835A1 (en) | Distributed processing device and distributed processing system | |
CN111625364B (zh) | 任务分配方法、装置、电子设备及计算机可读介质 | |
CN111274503B (zh) | 数据处理的方法、装置、电子设备及计算机可读介质 | |
CN111240834B (zh) | 任务执行方法、装置、电子设备和存储介质 | |
CN113835992B (zh) | 内存泄露的处理方法、装置、电子设备及计算机存储介质 | |
CN116166395A (zh) | 任务调度方法、装置、介质及电子设备 | |
CN111813541B (zh) | 一种任务调度方法、装置、介质和设备 | |
US10318341B2 (en) | Selecting and resizing currently executing job to accommodate execution of another job | |
CN117667420A (zh) | 资源调度方法、设备及存储介质 | |
CN116954944A (zh) | 基于内存网格的分布式数据流处理方法、装置及设备 | |
CN113886105B (zh) | 跨进程的调用方法、装置、存储介质及电子设备 | |
CN113391882B (zh) | 虚拟机内存管理方法、装置、存储介质及电子设备 | |
CN113806142A (zh) | 一种数据恢复方法、装置及相关设备 | |
CN113760524A (zh) | 任务执行方法和装置 | |
US11432303B2 (en) | Method and apparatus for maximizing a number of connections that can be executed from a mobile application | |
CN110704782A (zh) | 页面响应方法、装置、电子设备及存储介质 | |
CN114116746B (zh) | 多系统数据存储方法、装置、介质及电子设备 | |
CN110221923B (zh) | 数据访问方法、装置及设备 | |
US8538977B2 (en) | Dynamically switching the serialization method of a data structure | |
CN117056036A (zh) | 多租户任务处理方法、装置、存储介质及电子设备 | |
US20240054000A1 (en) | Container scheduling and deployment method and apparatus, and domain controller system | |
CN117369953B (zh) | 镜像同步方法、装置、设备及存储介质 | |
CN118245241A (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 |