G06F9/455 G06F9/50 G06F11/30
1.一种资源调度方法,其特征在于,所述方法包括:
接收终端设备的资源申请请求,所述资源申请请求用于申请创建一个或多个资源对象;
根据所述资源申请请求,获取所述资源对象的参数信息,所述参数信息包括所述资源对象的资源规格和所述资源对象的申请数量;
根据所述资源规格和集监控数据库,确定第一资源序列,所述第一资源序列包括至少一个第一集与资源对象可创建量的对应关系,所述集监控数据库用于记录多个集的宿主机信息和资源对象信息;
根据所述申请数量和所述第一资源序列,确定目标集和所述目标集对应的资源对象分配量;
根据所述目标集的资源对象分配量,向所述目标集发送创建所述资源对象的请求,以在所述目标集中的宿主机上创建所述资源对象。
2.根据权利要求1所述的方法,其特征在于,所述向所述目标集发送创建所述资源对象的请求,所述方法还包括:
在监控到所述目标集上所述资源对象创建成功的情况下,根据所述目标集对应的资源对象分配量,更新所述集监控数据库。
3.根据权利要求1所述的方法,其特征在于,所述集的宿主机信息包括所述集的剩余硬件资源量,所述根据所述资源规格和集监控数据库,确定第一资源序列,包括:
根据所述资源规格和所述集监控数据库中多个集的硬件资源剩余量,确定所述第一资源序列。
4.根据权利要求3所述的方法,其特征在于,所述参数信息还包括所述资源对象所属的目标区域位置,所述集监控数据库还用于记录所有集所在的区域位置,所述根据所述资源规格和集监控数据库,确定第一资源序列之前,所述方法还包括:
根据所述目标区域位置和所述集监控数据库中所有集所在的区域位置,对所述集监控数据库中所有集进行筛选;
所述根据所述资源规格和集监控数据库,确定第一资源序列,包括:
根据所述资源规格和所述集监控数据库中筛选后的集的硬件资源剩余量,确定所述第一资源序列。
5.根据权利要求4所述的方法,其特征在于,所述根据所述资源规格和集监控数据库,确定第一资源序列,包括:
在所述集监控数据库中,将硬件资源剩余量大于等于所述资源规格的至少一个集,确定为所述第一集;
根据所述资源规格和所述第一集的硬件资源剩余量,确定所述第一集对应的资源对象可创建量;
根据各所述第一集对应的资源对象可创建量,确定所述第一资源序列。
6.根据权利要求4所述的方法,其特征在于,所述根据所述申请数量和所述第一资源序列,确定目标集和所述目标集对应的资源对象分配量,包括:
根据所述第一资源序列,获得所有所述第一集的资源对象可创建总量;
如果所述资源对象可创建总量大于等于所述申请数量,则在所述第一集中确定所述目标集,并根据所述第一集的资源对象可创建量和所述申请数量,确定所述目标集对应的资源对象分配量。
7.根据权利要求6所述的方法,其特征在于,所述根据所述申请数量和所述第一资源序列,确定目标集和所述目标集对应的资源对象分配量,还包括:
如果所述资源对象可创建总量大于等于所述申请数量,则按照资源对象可创建量,对所述第一资源序列进行降序排序;
在排序后的所述第一资源序列中,依次将所述第一集确定为所述目标集,并根据所述第一集的资源对象可创建量确定所述目标集对应的资源对象分配量,直至各所述目标集的资源对象分配量之和大于等于所述申请数量。
8.根据权利要求6所述的方法,其特征在于,所述根据所述申请数量和所述第一资源序列,确定目标集和所述目标集对应的资源对象分配量,还包括:
如果所述资源对象可创建总量大于等于所述申请数量,则根据所述第一集的资源对象信息,对所述第一集中是否存在至少一个已创建所述资源对象的第二集进行查询;
如果存在已创建所述资源对象的第二集,则确定第二资源序列,所述第二资源序列包括所述第二集与资源对象已创建量的对应关系;
根据所述申请数量、所述第一资源序列和所述第二资源序列,确定所述目标集和所述目标集对应的资源对象分配量。
9.根据权利要求8所述的方法,其特征在于,所述根据所述申请数量、所述第一资源序列和所述第二资源序列,确定所述目标集和所述目标集对应的资源对象分配量,包括:
根据所述第一资源序列和所述第二资源序列,得到所有所述第二集的资源对象总量,所有所述第二集的资源对象总量为所有所述第二集的资源对象可创建量和资源对象已创建量之和;
如果所有所述第二集的资源对象总量大于等于所述申请数量,则依次将所述第二集确定为所述目标集,并根据所述第二集的资源对象可创建量确定所述目标集对应的资源对象分配量,直至所有所述目标集的资源对象分配量和资源对象已创建量之和大于等于所述申请数量。
10.根据权利要求9所述的方法,其特征在于,所述根据所述申请数量、所述第一资源序列和所述第二资源序列,确定所述目标集和所述目标集对应的资源对象分配量,还包括:
如果所有所述第二集的资源对象总量小于所述申请数量,则将所有所述第二集确定为所述目标集,并根据所述第二集的资源对象可创建量确定所述目标集的资源对象分配量;
在所述第一资源序列中,依次将所述第一集中除所述第二集以外的第三集确定为所述目标集,并根据所述第三集的资源对象可创建量确定所述目标集的资源对象分配量,直至所有所述目标集的资源对象分配量和资源对象已创建量之和大于等于所述申请数量。
11.根据权利要求1-10任一项所述的方法,其特征在于,所述集为Kubernetes集。
12.一种资源调度装置,其特征在于,所述装置包括:
接收模块,用于接收终端设备的资源申请请求,所述资源申请请求用于申请创建一个或多个资源对象;
获取模块,用于根据所述资源申请请求,获取所述资源对象的参数信息,所述参数信息包括所述资源对象的资源规格和所述资源对象的申请数量;
调度模块,用于根据所述资源规格和集监控数据库,确定第一资源序列,所述第一资源序列包括至少一个第一集与资源对象可创建量的对应关系,所述集监控数据库用于记录多个集的宿主机信息和资源对象信息,根据所述申请数量和所述第一资源序列,确定目标集和所述目标集对应的资源对象分配量;
发送模块,用于根据所述目标集的资源对象分配量,向所述目标集发送创建所述资源对象的请求,以在所述目标集中的宿主机上创建所述资源对象。
13.一种资源调度设备,其特征在于,包括:至少一个处理器和存储器;
所述存储器用于存储计算机执行指令;
所述至少一个处理器执行所述存储器存储的计算机执行指令,使得所述至少一个处理器执行如权利要求1-11任一项所述的方法。
14.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机执行指令,当处理器执行所述计算机执行指令时,实现如权利要求1-11任一项所述的方法。
本公开的实施例涉及计算机技术领域中的云计算领域,尤其涉及一种资源调度方法、装置、设备及介质。
在云计算领域中,通常采用容器技术在宿主机进行应用程序部署。其中,容器是多个进程的集合,不同容器之间的进程相互隔离,能够避免不同容器中的进程之间的资源竞争,而且能够在不同云、不同宿主机上快速部署。
随着容器技术的发展,出现了多种容器编排技术,也即运行和协同多个宿主机上的容器化应用程序的技术。其中,Kubernetes(简称K8s)技术作为在一组宿主机上运行和协同容器化应用程序运行的技术,由于其技术先进性和落地方案越来越成熟,在多种容器编排技术中脱颖而出。Kubernetes集联邦为分布式的容器调度系统,在Kubernetes集联邦(Kubernetes Cluster Federation)中有多个集(Cluster),一个集管理多个宿主机,每个宿主机上可能部署有一个或多个容器,每个容器在部署之前,都需要申请相应的资源。
因此,随着集数量的增加,如何提高多个集之间资源调度的效果是亟需解决的问题。
本公开的实施例提供一种资源调度方法、装置、设备及介质,用以解决多个集之间的资源调度效果不佳的问题。
第一方面,本公开的实施例提供一种资源调度方法,包括:
接收终端设备的资源申请请求,所述资源申请请求用于申请创建一个或多个资源对象;
根据所述资源申请请求,获取所述资源对象的参数信息,所述参数信息包括所述资源对象的资源规格和所述资源对象的申请数量;
根据所述资源规格和集监控数据库,确定第一资源序列,所述第一资源序列包括至少一个第一集与资源对象可创建量的对应关系,所述集监控数据库用于记录多个集的宿主机信息和资源对象信息;
根据所述申请数量和所述第一资源序列,确定目标集和所述目标集对应的资源对象分配量;
根据所述目标集的资源对象分配量,向所述目标集发送创建所述资源对象的请求,以在所述目标集中的宿主机上创建所述资源对象。
在一种可能的实施方式中,所述向所述目标集发送创建所述资源对象的请求,所述方法还包括:
在监控到所述目标集上所述资源对象创建成功的情况下,根据所述目标集对应的资源对象分配量,更新所述集监控数据库。
在一种可能的实施方式中,所述集的宿主机信息包括所述集的剩余硬件资源量,所述根据所述资源规格和集监控数据库,确定第一资源序列,包括:
根据所述资源规格和所述集监控数据库中多个集的硬件资源剩余量,确定所述第一资源序列。
在一种可能的实施方式中,所述参数信息还包括所述资源对象所属的目标区域位置,所述集监控数据库还用于记录所有集所在的区域位置,所述根据所述资源规格和集监控数据库,确定第一资源序列之前,所述方法还包括:
根据所述目标区域位置和所述集监控数据库中所有集所在的区域位置,对所述集监控数据库中所有集进行筛选;
所述根据所述资源规格和集监控数据库,确定第一资源序列,包括:
根据所述资源规格和所述集监控数据库中筛选后的集的硬件资源剩余量,确定所述第一资源序列。
在一种可能的实施方式中,所述根据所述资源规格和集监控数据库,确定第一资源序列,包括:
在所述集监控数据库中,将硬件资源剩余量大于等于所述资源规格的至少一个集,确定为所述第一集;
根据所述资源规格和所述第一集的硬件资源剩余量,确定所述第一集对应的资源对象可创建量;
根据各所述第一集对应的资源对象可创建量,确定所述第一资源序列。
在一种可能的实施方式中,所述根据所述申请数量和所述第一资源序列,确定目标集和所述目标集对应的资源对象分配量,包括:
根据所述第一资源序列,获得所有所述第一集的资源对象可创建总量;
如果所述资源对象可创建总量大于等于所述申请数量,则在所述第一集中确定所述目标集,并根据所述第一集的资源对象可创建量和所述申请数量,确定所述目标集对应的资源对象分配量。
在一种可能的实施方式中,所述根据所述申请数量和所述第一资源序列,确定目标集和所述目标集对应的资源对象分配量,还包括:
如果所述资源对象可创建总量大于等于所述申请数量,则按照资源对象可创建量,对所述第一资源序列进行降序排序;
在排序后的所述第一资源序列中,依次将所述第一集确定为所述目标集,并根据所述第一集的资源对象可创建量确定所述目标集对应的资源对象分配量,直至各所述目标集的资源对象分配量之和大于等于所述申请数量。
在一种可能的实施方式中,所述根据所述申请数量和所述第一资源序列,确定目标集和所述目标集对应的资源对象分配量,还包括:
如果所述资源对象可创建总量大于等于所述申请数量,则根据所述第一集的资源对象信息,对所述第一集中是否存在至少一个已创建所述资源对象的第二集进行查询;
如果存在已创建所述资源对象的第二集,则确定第二资源序列,所述第二资源序列包括所述第二集与资源对象已创建量的对应关系;
根据所述申请数量、所述第一资源序列和所述第二资源序列,确定所述目标集和所述目标集对应的资源对象分配量。
在一种可能的实施方式中,所述根据所述申请数量、所述第一资源序列和所述第二资源序列,确定所述目标集和所述目标集对应的资源对象分配量,包括:
根据所述第一资源序列和所述第二资源序列,得到所有所述第二集的资源对象总量,所有所述第二集的资源对象总量为所有所述第二集的资源对象可创建量和资源对象已创建量之和;
如果所有所述第二集的资源对象总量大于等于所述申请数量,则依次将所述第二集确定为所述目标集,并根据所述第二集的资源对象可创建量确定所述目标集对应的资源对象分配量,直至所有所述目标集的资源对象分配量和资源对象已创建量之和大于等于所述申请数量。
在一种可能的实施方式中,所述根据所述申请数量、所述第一资源序列和所述第二资源序列,确定所述目标集和所述目标集对应的资源对象分配量,还包括:
如果所有所述第二集的资源对象总量小于所述申请数量,则将所有所述第二集确定为所述目标集,并根据所述第二集的资源对象可创建量确定所述目标集的资源对象分配量;
在所述第一资源序列中,依次将所述第一集中除所述第二集以外的第三集确定为所述目标集,并根据所述第三集的资源对象可创建量确定所述目标集的资源对象分配量,直至所有所述目标集的资源对象分配量和资源对象已创建量之和大于等于所述申请数量。
在一种可能的实施方式中,所述集为Kubernetes集。
另一方面,本公开的实施例提供一种资源调度装置,包括:
接收模块,用于接收终端设备的资源申请请求,所述资源申请请求用于申请创建一个或多个资源对象;
获取模块,用于根据所述资源申请请求,获取所述资源对象的参数信息,所述参数信息包括所述资源对象的资源规格和所述资源对象的申请数量;
调度模块,用于根据所述资源规格和集监控数据库,确定第一资源序列,所述第一资源序列包括至少一个第一集与资源对象可创建量的对应关系,所述集监控数据库用于记录多个集的宿主机信息和资源对象信息,根据所述申请数量和所述第一资源序列,确定目标集和所述目标集对应的资源对象分配量;
发送模块,用于根据所述目标集的资源对象分配量,向所述目标集发送创建所述资源对象的请求,以在所述目标集中的宿主机上创建所述资源对象。
在一种可能的实现方式中,所述装置还包括:
更新模块,用于在监控到所述目标集上所述资源对象创建成功的情况下,根据所述目标集对应的资源对象分配量,更新所述集监控数据库。
在一种可能的实现方式中,所述集的宿主机信息包括所述集的剩余硬件资源量,所述调度模块,具体用于:
根据所述资源规格和所述集监控数据库中多个集的硬件资源剩余量,确定所述第一资源序列。
在一种可能的实现方式中,所述参数信息还包括所述资源对象所属的目标区域位置,所述集监控数据库还用于记录所有集所在的区域位置,所述装置还包括:
筛选模块,用于根据所述目标区域位置和所述集监控数据库中所有集所在的区域位置,对所述集监控数据库中所有集进行筛选;
所述调度模块,具体用于:
根据所述资源规格和所述集监控数据库中筛选后的集的硬件资源剩余量,确定所述第一资源序列。
在一种可能的实现方式中,所述调度模块,具体用于:
在所述集监控数据库中,将硬件资源剩余量大于等于所述资源规格的至少一个集,确定为所述第一集;
根据所述资源规格和所述第一集的硬件资源剩余量,确定所述第一集对应的资源对象可创建量;
根据各所述第一集对应的资源对象可创建量,确定所述第一资源序列。
在一种可能的实现方式中,所述调度模块,具体用于:
根据所述第一资源序列,获得所有所述第一集的资源对象可创建总量;
如果所述资源对象可创建总量大于等于所述申请数量,则在所述第一集中确定所述目标集,并根据所述第一集的资源对象可创建量和所述申请数量,确定所述目标集对应的资源对象分配量。
在一种可能的实现方式中,所述调度模块,具体用于:
如果所述资源对象可创建总量大于等于所述申请数量,则按照资源对象可创建量,对所述第一资源序列进行降序排序;
在排序后的所述第一资源序列中,依次将所述第一集确定为所述目标集,并根据所述第一集的资源对象可创建量确定所述目标集对应的资源对象分配量,直至各所述目标集的资源对象分配量之和大于等于所述申请数量。
在一种可能的实现方式中,所述调度模块,具体用于:
如果所述资源对象可创建总量大于等于所述申请数量,则根据所述第一集的资源对象信息,对所述第一集中是否存在至少一个已创建所述资源对象的第二集进行查询;
如果存在已创建所述资源对象的第二集,则确定第二资源序列,所述第二资源序列包括所述第二集与资源对象已创建量的对应关系;
根据所述申请数量、所述第一资源序列和所述第二资源序列,确定所述目标集和所述目标集对应的资源对象分配量。
在一种可能的实现方式中,所述调度模块,具体用于:
根据所述第一资源序列和所述第二资源序列,得到所有所述第二集的资源对象总量,所有所述第二集的资源对象总量为所有所述第二集的资源对象可创建量和资源对象已创建量之和;
如果所有所述第二集的资源对象总量大于等于所述申请数量,则依次将所述第二集确定为所述目标集,并根据所述第二集的资源对象可创建量确定所述目标集对应的资源对象分配量,直至所有所述目标集的资源对象分配量和资源对象已创建量之和大于等于所述申请数量。
在一种可能的实现方式中,所述调度模块,具体用于:
如果所有所述第二集的资源对象总量小于所述申请数量,则将所有所述第二集确定为所述目标集,并根据所述第二集的资源对象可创建量确定所述目标集的资源对象分配量;
在所述第一资源序列中,依次将所述第一集中除所述第二集以外的第三集确定为所述目标集,并根据所述第三集的资源对象可创建量确定所述目标集的资源对象分配量,直至所有所述目标集的资源对象分配量和资源对象已创建量之和大于等于所述申请数量。
在一种可能的实现方式中,所述集为Kubernetes集。
第三方面,本公开实施例提供一种资源调度设备,包括:至少一个处理器和存储器;
所述存储器存储计算机执行指令;
所述至少一个处理器执行所述存储器存储的计算机执行指令,使得所述至少一个处理器执行如上第一方面以及第一方面各种可能的实施方式所述的资源调度方法。
第四方面,本公开实施例提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机执行指令,当处理器执行所述计算机执行指令时,实现如上第一方面以及第一方面各种可能的实施方式所述的资源调度方法。
本公开的实施例提供的资源调度方法、装置、设备及存储介质,在接收到申请创建一个或多个资源对象的资源申请请求时,获取资源对象的参数信息,参数信息中包括资源对象的资源规格和资源数量。根据用于记录多个集的宿主机信息和资源对象信息的集监控数据、以及资源对象的资源规格,确定第一资源序列。根据资源对象的申请数量和第一资源序列,确定目标集和目标集对应的资源分配量。基于目标集的资源对象分配量向目标集发送创建资源对象的请求。
因此,本公开的实施例综合考虑资源对象的资源规格、资源数量以及各个集的宿主机信息和资源对象信息,合理地确定目标集和目标集对应的资源分配量,有效地提高在多个集中进行资源调度的效果。
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。
图1为本公开一实施例提供资源调度方法适用的架构示例图;
图2为本公开一实施例提供资源调度方法适用的应用场景示例图;
图3为本公开一实施例提供资源调度方法的流程示意图;
图4为本公开另一实施例提供资源调度方法的流程示意图;
图5为本公开一实施例提供资源调度方法的流程示例图;
图6为本公开另一实施例提供资源调度方法的流程示例图;
图7为本公开一实施例提供资源调度装置的结构示意图;
图8为本公开另一实施例提供资源调度装置的流程示意图;
图9为本公开一实施例提供资源调度设备的结构示意图。
通过上述附图,已示出本公开明确的实施例,后文中将有更详细的描述。这些附图和文字描述并不是为了通过任何方式限制本公开构思的范围,而是通过参考特定实施例为本领域技术人员说明本公开的概念。
为使本公开实施例的目的、技术方案和优点更加清楚,下面将结合本公开实施例中的附图,对本公开实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本公开一部分实施例,而不是全部的实施例。基于本公开中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本公开保护的范围。
首先对本公开的实施例所涉及的名词进行解释:
1、容器:
在操作系统中有各式各样的进程,这些进程可以是操作系统自带的服务的进程也可以是应用程序的进程。为了减少进程之间的相互影响,目前可以采用虚拟机技术或者容器技术为进程提供相对独立的运行环境。
在容器技术中,容器是一组具有隔离特性的进程集合。容器具有独立的文件系统,换句话说,不同容器中的进程运行在各自独立的文件系统上。而且,不同容器所使用的内存、处理器等硬件资源相互隔离。相较于虚拟机,容器能够快速、灵活部署,因此,容器适用于部署在云环境中。
在容器部署过程中,应用程序或者服务可以被构建成一个容器的镜像,镜像是指容器运行所需要的所有文件集合。通过运行镜像,可以部署相应的容器。因此,一个镜像相当于是一个模板,一个容器相当于是一个具体的运行实例,镜像具有一次构建、到处运行的特点,部署灵活且迁移能力强。其中,按照容器方式进行部署的应用程序又被称为容器化应用程序。
2、集:
在云环境(例如公有云环境或者私有云环境)中,一个集管理多个节点(Node),每个节点是集中单个机器的抽象含义,节点既可以是单个物理机器,例如服务器、计算机,也可以是虚拟机。在集中,每个节点可以看作是硬件资源。在集上部署容器时,集可以将容器的部署任务分配一个或多个节点。因此,节点也可以被称为宿主机。
3、资源对象:
在容器部署之前,需要先申请容器运行所需的硬件资源。资源对象是用户可以申请的基础单元,一个资源对象中可以部署一个或多个容器。
4、Kubernetes集联邦
Kubernetes脱胎于Borg系统,是指在一组宿主机上运行和协同容器化应用程序运行的技术,提供应用部署、规划、更新维护的机制,换句话说,Kubernetes是容器管理技术。
Kubernetes系统中管理多个宿主机的集又被称为Kubernetes集,在Kubernetes集中通过Kubernetes应用程序编程接口(Application ProgrammingInterface,API)来操作Kubernetes中的多个对象,例如资源对象、服务对象、容器等。其中,在Kubernetes集中,资源对象简写为pod。Kubernetes集联邦用于实现多个Kubernetes集的统一管理。多个Kubernetes集可以是跨地域、跨云服务厂商的集。
在相关技术中,除多个Kubernetes集之外,Kubernetes集联邦需要额外部署一个Kubernetes集联邦的应用程序编程接口服务(Federation ApplicationProgramming Interface Server,联邦API服务)和一个etcd集。其中,etcd是分布式键值数据库。联邦API服务用于管理多个Kubernetes集中的kubernetes API,etcd集将Kubernetes集联邦跨集创建的资源都会记录在etcd集中。当集数量过多时,联邦API服务会出现性能瓶颈,当资源创建量过大时,etcd集的输入输出性能(I/O)性能也会出现瓶颈。
另外,在资源创建时依次去询问各个集是否能够创建资源对象,当集数量过多时,这种资源调度方式的效果不佳。
因此,随着集的数量增多、集的规模增大(例如一个Kubernetes集可管理5000多个宿主机),多个集之间的资源调度问题将会是一个比较难以管控的问题。
为提高多个集之间的资源调度效果,本公开的实施例提供了一种资源调度方法,在该方法中,在接收到申请创建一个或多个资源对象的资源申请请求的情况下,根据资源对象的参数信息中资源对象的资源规格和集监控数据库,确定第一资源序列,第一资源序列包至少一个第一集与资源对象可创建量的对应关系,根据资源对象的申请数量和第一资源序列,确定目标集和目标集对应的资源对象分配量。
因此,本公开的实施例提供的资源调度方法在充分考虑集的资源对象可创建量和资源对象的申请数量的前提下进行多个集之间的资源调度,有效地提高多个集之间的资源调度效果,而且无需对集联邦的架构进行改造,可以兼容不同版本的集联邦(例如Kubernetes集联邦)。
其中,本公开的实施例提供的资源调度方法可以通过一个或多个应用程序或者服务实现,该一个或多个应用程序或者服务可以部署在多个集以外的电子设备上,也可以部署在多个集的宿主机上。如果集数量增多或者资源对象的数量增多,该一个或多个应用程序或者服务可以横向扩容,换句话说,利用云服务下容器化应用易迁移、易部署的特性,该应用程序或者服务部署在多个集以外的多个电子设备上或者部署在多个集的多个宿主机上,以提高本公开的实施例提供的资源调度方法的资源调度能力和资源调度效果。
作为示例的,如图1所示,本公开的实施例提供的资源调度方法可以通过资源管理服务和集管理服务实现,集管理服务负责接收资源申请请求并与多个集(集1、集2、集3、集4、集5、……集N)进行信息交互,资源管理服务负责监控各个集的宿主机和容器。其中,集管理服务和资源管理服务可以部署在多个集以外的一个或多个电子设备上,或者可以部署在相同或不同的一个或多个集上。
图2为本公开的实施例提供的资源调度方法适用的应用场景示例图。该应用场景为云服务场景,包括云平台和多个用户终端(例如用户终端1、用户终端2等),在云平台上包括多个集(例如集1、集2等)和用于管理多个集的集联邦服务器,不同的集可以部署在同一地理区域也可以部署在不同的地理区域,每个集中包括多个宿主机和用于管理多个宿主机的集服务器,宿主机上可以运行一个或多个容器。
其中,该云平台可以为公有云也可以为私有云。例如,该云平台为私有云时,可以为互联网公司内部的开发人员进行零售业务的开发提供充足的计算资源(比如开发人员为电脑上的网购商城或者移动终端上的网购应用程序提供零售业务,而在该云平台进行资源申请、编译构建、业务研发),还能够延伸至互联网公司的线下门店,为线下门店的零售业务提供计算资源和数据服务,以提高线下门店的零售业务。
下面以具体地实施例对本公开的实施例的技术方案以及本公开的技术方案如何解决上述技术问题进行详细说明。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例中不再赘述。下面将结合附图,对本公开的实施例进行描述。
图3为本公开一实施例提供的资源调度方法的流程示意图,本实施例的执行主体以电子设备为例,电子设备可以为一个或多个客户终端或者一个或多个服务器。如图3所示,该方法包括:
S301、接收终端设备的资源申请请求。
其中,终端设备可以为计算机、平板电脑、手机等设备。
其中,资源申请请求用于申请在云服务上创建一个或多个资源对象,一个资源对象可以为一个或多个容器的部署和运行提供硬件资源。
具体的,在容器部署之前,用户可在终端设备上输入相应的资源申请指令,以在容器部署之前为容器准备相应的硬件资源。例如,Kubernetes集联邦中用户可以在终端设备上输入相应的kubectl命令行来申请创建资源对象。终端设备在检测到用户输入的资源申请指令后,可生成资源申请请求并发送给当前的电子设备。
S302、根据资源申请请求,获取资源对象的参数信息,参数信息包括资源对象的资源规格和资源对象的申请数量。
其中,资源对象的资源规格是指资源对象所包含的硬件资源大小,例如,资源对象的资源规格为2核中央处理器(central processing unit,CPU)、2GB内存空间以及10GB的磁盘空间。资源对象的申请数量即资源申请请求所申请创建的资源对象的数量。
具体的,资源申请请求中可以携带资源对象的参数信息,也可以不携带资源对象的参数信息。如果资源申请请求携带有资源对象的参数信息,则可直接从资源申请请求中,获取资源对象的参数信息,否则,可接收终端设备另行发送的资源对象的参数信息。
S303、根据资源规格和集监控数据库,确定第一资源序列。
其中,集监控数据库用于记录多个集的宿主机信息和资源对象信息,多个集位于同一集联邦。
可选的,集的宿主机信息包括集的剩余硬件资源量。
在得到资源申请请求所申请创建的资源对象的参数信息后,可在集监控数据库中获取各集的剩余硬件资源量。将各集的剩余硬件资源量与资源对象的资源规格进行比较,如果不存在剩余硬件资源量大于等于资源对象的资源规格的集,则说明各集的剩余硬件资源都不足以创建一个资源对象,向终端设备返回资源申请失败的消息。如果存在剩余硬件资源大于等于资源对象的资源规格的集,则将剩余硬件资源大于等于资源对象的资源规格的集确定为第一集。其中,第一集的数量为一个或多个。
根据第一集的剩余硬件资源量和资源对象的资源规格,确定各第一集分别能够创建资源对象的数量,为了简洁描述,将第一集能够创建资源对象的数量称为第一集的资源对象可创建量。由一个或多个第一集和各第一集的资源对象可创建量构成第一资源序列,因此,第一资源序列包括一个或多个第一集与资源对象可创建量的对应关系。
作为示例的,第一集的剩余硬件资源量为4核CPU、16GB内存空间以及20GB的磁盘空间,资源对象的资源规格为2核中央处理器(central processing unit,CPU)、2GB内存空间以及10GB的磁盘空间,则第一集的资源对象可创建量为2。
可选的,集的宿主机信息包括集的总硬件资源量,集的资源对象信息包括集中各已创建资源对象的资源规格和各已创建资源对象的创建数量。因此,在得到资源申请请求所申请创建的资源对象的参数信息后,也可从集监控数据库中获取各集的总硬件资源量、各已创建资源对象的资源规格和各已创建资源对象的资源数量。针对各集,根据集中各已创建资源对象的资源规格和资源数量,可得到集的已用硬件资源量,根据集的总硬件资源量和集的已用硬件资源量,得到集的剩余硬件资源量。
可选的,集的宿主机信息还可以包括集中宿主机的数量和集中各宿主机的总硬件资源量、剩余硬件资源量、已用硬件资源量等。依据集中各宿主机的总硬件资源量、剩余硬件资源量、已用硬件资源量,也可确定集的剩余硬件资源量。
可选的,集监控数据库中建有分别用于存储宿主机信息的第一数据表和用于存储资源对象信息的第二数据表。将所有集的宿主机信息记录在第一数据表,将所有集的资源对象信息记录在第二数据表中。
进一步的,集监控数据库为关系型数据库,例如MySQL数据库。
S304、根据申请数量和第一资源序列,确定目标集和目标集对应的资源对象分配量。
其中,目标集的数量为一个或多个。
具体的,在得到第一资源序列后,可根据申请数量和第一资源序列中一个或多个第一集的资源对象可创建量,在一个或多个第一集中,确定一个或多个目标集和各目标集对应的资源对象分配量。目标集对应的资源对象分配量为需要在目标集上申请的资源对象的数量,目标集对应的资源对象分配量小于等于该目标集的资源对象可创建量。
S305、根据目标集的资源对象分配量,向目标集发送创建资源对象的请求,以在目标集中的宿主机上创建资源对象。
具体的,在确定一个或多个目标集的资源对象分配量后,可向各目标集发送创建资源对象的请求,向目标集发送的创建资源对象的请求包括资源对象的资源规格和该目标集对应的资源对象分配量,以便目标集根据资源对象的资源规格和该目标集对应的资源对象分配量,在该目标集中的宿主机上申请创建资源对象。
可选的,对目标集上资源对象是否创建成功进行监控,如果监控打目标集上资源对象创建成功,则根据目标集对应的资源对象分配量,更新集监控数据库,以提高集监控数据库中数据的准确性。在根据目标集对应的资源对象分配量,更新集监控数据库,可更新集监控数据库中目标集的宿主机信息,例如目标集的剩余硬件资源量,还可更新集监控数据库中目标集的资源对象信息,例如目标集上资源对象的规格和数量。
作为示例的,以Kubernetes系统为例,可通过开启Kubernetes系统中list功能和watch功能,实现对各个集的宿主机信息和资源对象信息的获取和对目标集上资源对象是否创建成功的监控。具体的,通过list功能获取各集的宿主机信息,并将宿主机信息记录到集监控数据库的nodeinfo表中,通过list功能获取各集的资源对象信息,并将资源对象信息记录到集监控数据库的podinfo表中,还可以根据获取的资源对象信息,更新nodeinfo表中各集的剩余硬件资源量。在资源对象的申请创建过程中,可以通过watch功能监控资源对象的创建和删除。
本公开实施例中,根据集监控数据库和资源申请请求所申请创建资源的资源规格、资源数量,确定目标集和目标集对应的资源对象分配量,因此充分考虑各个集的资源情况,依据各个集的资源对象创建能力,在多个集中进行资源对象的分配,有效地提高了多个集中资源调度效果,且无需对多个集所在的集联邦的架构进行改造,适用于不同的集联邦。
图4为本公开另一实施例提供的资源调度方法的流程示意图,本实施例的执行主体以电子设备为例,电子设备可以为一个或多个客户终端或者一个或多个服务器。如图4所示,该方法包括:
S401、接收终端设备的资源申请请求。
其中,S401的实现原理和技术效果可参照前述实施例,不再赘述。
S402、根据资源申请请求,获取资源对象的参数信息,参数信息包括资源对象的资源规格、资源对象的申请数量和目标区域位置。
其中,集联邦可以跨区域布置,其中,不同区域可以为不同的地理区域,也可以为不同的机房。例如,集联邦包括位于地理区域A的集1、地理区域B的集2、地理区域C的集3等。又如,集联邦包括位于机房a的集4、位于机房b的集5等。一个地理区域可以分布一个或多个集,一个机房可以分布一个或多个集,或者一个集可以包括多个机房。资源对象的参数信息中的目标区域位置是指资源对象需要布置在位于目标区域位置的集上,是用户可以根据自身需求在终端设备上选择一个或多个目标区域位置,例如在浏览器上从地理区域A、地理区域B、地理区域C中选择地理区域A作为目标区域位置。
其中,资源对象的资源规格和资源对象的申请数量可以参照步骤S302的描述,在此不再赘述。
具体的,资源申请请求中可以携带资源对象的参数信息,也可以不携带资源对象的参数信息。如果资源申请请求携带有资源对象的参数信息,则可直接从资源申请请求中,获取资源对象的参数信息,否则,可接收终端设备另行发送的资源对象的参数信息。
S403、根据目标区域位置和集监控数据库中所有集所在的区域位置,对集监控数据库中所有集进行筛选。
其中,集监控数据库除了用于记录多个集的宿主机信息和资源对象信息之外,还记录了各个集所在的区域位置。除了从集监控数据库中获取各个集的区域位置外,也可以通过直接与各个集进行通信来确定各个集的区域位置。
具体的,根据集监控数据库中各集所在的区域位置和目标区域位置,对集监控数据库中的所有集进行筛选,确定位于目标区域位置的一个或多个集。
S404、根据资源规格和集监控数据库中筛选后的集的硬件资源剩余量,确定第一资源序列。
具体的,在对集监控数据库中的所有集进行筛选,确定位于目标区域位置的一个或多个集之后,可根据集监控数据库,获得位于目标区域位置的各集的剩余硬件资源量。将位于目标区域位置的各集的剩余硬件资源量与资源对象的资源规格进行比较,如果在位于目标区域位置的各集中不存在剩余硬件资源大于等于资源对象的资源规格的集。则向终端设备返回资源申请失败的消息。如果在位于目标区域位置的各集中存在剩余硬件资源大于等于资源对象的资源规格的集,则将剩余硬件资源大于等于资源对象的资源规格的集确定为第一集。
根据第一集的剩余硬件资源和资源对象的资源规格,确定第一集的资源对象可创建量。由一个或多个第一集和各第一集的资源对象可创建量构成第一资源序列。
S405、根据申请数量和第一资源序列,确定目标集和目标集对应的资源对象分配量。
S406、根据目标集的资源对象分配量,向目标集发送创建资源对象的请求,以在目标集中的宿主机上创建资源对象。
其中,S405、S406的实现原理和技术效果可参照前述实施例,不再赘述。
本公开实施例中,根据集监控数据库和资源申请请求所申请创建资源的资源规格、资源数量、目标区域位置,确定目标集和目标集对应的资源对象分配量,因此充分考虑各个集的资源情况,依据各个集的资源对象创建能力,在多个集中进行资源对象的分配,有效地提高了多个集中资源调度效果,且无需对多个集所在的集联邦的架构进行改造,适用于不同的集联邦。
在一些实施例中,S304或S405的一种可能的实现方式为:根据第一资源序列,获取所有第一集的资源对象可创建总量;如果资源对象可创建总量大于等于申请数量,则在第一集中确定目标集,并根据第一集的资源对象可创建量和申请数量,确定目标集对应的资源对象分配量。
具体的,可在第一资源序列中获取各个第一集的资源对象可创建量,将各个第一集的资源对象可创建量相加,得到所有第一集的资源对象可创建总量。将所有第一集的资源对象可创建总量与资源申请请求所申请的资源对象的申请数量进行比较,如果第一集的资源对象可创建总量大于等于申请数量,说明能够在各个第一集中能够完成申请数量个资源对象的创建,因此,可在第一集中确定一个或多个目标集,并根据第一集的资源对象可创建量和申请数量,确定各个目标集对应的资源对象分配量。其中,各个目标集对应的资源对象分配量之和大于等于申请数量。
如果第一集的资源对象可创建总量小于申请数量,则说明在各个第一集中无法完成申请数量个资源对象的创建,因此,可向终端设备返回申请失败的消息,还可提醒用户减少资源对象的申请数量。
在一些实施例中,S304或S405的另一种可能的实现方式为:根据第一资源序列,获取所有第一集的资源对象可创建总量;如果资源对象可创建总量大于等于申请数量,则按照资源对象可创建量,对第一资源序列进行降序排序;在排序后的第一资源序列中,依次将第一集确定为目标集,并根据第一集的资源对象可创建量确定目标集对应的资源对象分配量,直至各个目标集的资源对象分配量之和大于等于申请数量。
具体的,可在第一资源序列中获取各个第一集的资源对象可创建量,将各个第一集的资源对象可创建量相加,得到所有第一集的资源对象可创建总量。将所有第一集的资源对象可创建总量与资源申请请求所申请的资源对象的申请数量进行比较,如果第一集的资源对象可创建总量大于等于申请数量,说明能够在各个第一集中能够完成申请数量个资源对象的创建,此时可按照资源对象可创建量,对第一资源序列进行降序排序,也即,在第一资源序列中各第一集按照资源对象可创建量从多到少的顺序排序。
具体的,在对第一资源序列进行降序排序后,先将第一资源序列中的首个第一集确定为目标集,如果该目标集的资源对象可创建量大于等于申请数量,则将申请数量确定为该目标集的资源对象分配量,并且结束资源对象的分配。如果该目标集的资源对象可创建量小于申请数量,则将该目标集的资源对象可创建量确定为该目标集的资源对象分配量。接着,将第一资源序列中下一个第一集确定为目标集,如果该目标集的资源对象可创建量加上已确定的目标集的资源对象分配量大于等于申请数量,则将申请数量与该目标集的资源对象可创建量之差确定为该目标集的资源对象分配量,结束资源对象的分配。否则,将该目标集的资源对象可创建量确定为该目标集的资源对象分配量,再将下一个第一集确定为目标集。如此依次将一个或多个第一集确定为目标集,直至目标集的资源对象分配量大于等于申请数量。
因此,本实施例中充分考虑各个第一集的资源对象可创建量并有序地根据第一集确定目标集和目标集的资源对象分配量,有效地提高了多个集中资源调度的合理性和效率,进而提高了资源调度效果。
在一些实施例中,在当前用户为某一应用程序或者服务的容器化运行申请创建资源对象时,可能已有其他用户为该应用程序或服务申请有同样的资源对象,又未及时更新到资源管理数据库中。因此,为尽量提高集联邦中该资源对象的数量尽量接近申请数量,S404或S405的另一种可能的实现方式为:根据第一资源序列,获取所有第一集的资源对象可创建总量;如果资源对象可创建总量大于等于申请数量,根据第一集的资源对象信息,对第一集中是否存在至少一个已创建所申请资源对象的第二集进行查询;如果存在已创建所申请资源对象的第二集,则确定第二资源序列,第二资源序列包括第二集和资源对象已创建量的对应关系;根据申请数量、第一资源序列和第二资源序列,确定目标集和目标集对应的资源对象分配量。
具体的,如果资源对象可创建总量大于等于申请数量,则针对第一资源序列中的各个第一集,向各个第一集发送资源对象创建查询信息,已查询所有第一集是否已创建有该次资源申请请求所申请的资源对象,若存在至少一个第一集上已创建有该次资源申请请求所申请的资源对象,则确定第一集中存在至少一个已创建所申请资源对象的第二集,否则确定第一集中不存在已创建所申请资源对象的第二集。
如果第一集中存在至少一个已创建所申请资源对象的第二集,则获取各个第二集上已创建的该资源对象的数量,为了简洁描述,将第二集上已创建的该资源对象的数量称为第二集的资源对象已创建量。根据第二集的资源对象已创建量,建立第二资源序列,第二资源序列包括第二集和资源对象已创建量的对应关系。依据申请数量、第一资源序列和第二资源序列,确定目标集和目标集对应的资源对象分配量,使得目标集对应的资源对象分配量和资源对象已创建量之和大于等于申请数量。因此,在充分考虑集的资源对象可创建量和资源对象已创建量的前提下,在多个集中进行资源对象创建任务的分配,有效提高资源调度效果。
如果第一集中不存在已创建所申请资源对象的第二集,则依据申请数量和第一资源序列,确定目标集和目标集对应的资源对象分配量,具体的实现原理和技术效果可参照前述实施例,不再赘述。
可选的,在依据申请数量、第一资源序列和第二资源序列,确定目标集和目标集对应的资源对象分配量的过程中,根据第一资源序列和第二资源序列,得到所有第二集的资源对象总量,所有第二集的资源对象总量为所有第二集的资源对象可创建量和资源对象已创建量之和;如果所有第二集的资源对象总量大于等于申请数量,则依次将第二集确定为目标集,并根据第二集的资源对象可创建量确定目标集对应的资源对象分配量,直至所有目标集的资源对象分配量和资源对象已创建量之和大于等于申请数量,结束资源对象创建任务的分配。
在第一资源序列中,获取各第二集的资源对象可创建量,在第二资源序列中,获取各第二集的资源对象已创建量。将所有第二集的资源对象可创建量和资源对象已创建量相加,得到所有第二集的资源对象总量。将所有第二集的资源对象总量与申请数量进行比较,如果所有第二集的资源对象总量大于等于申请数量,则说明所有第二集的硬件资源足以创建申请数量个资源对象,因此可依次将第二集确定为目标集,并根据第二集的资源对象可创建量确定目标集对应的资源对象分配量,直至所有目标集的资源对象分配量和资源对象已创建量之和大于等于申请数量,结束资源对象创建任务的分配。因此,尽量将资源对象布置在已创建有该资源对象的第二集上,提高多个集中资源调度的合理性。
在依次将第二集确定为目标集,并根据第二集的资源对象可创建量确定目标集对应的资源对象分配量的过程中,也可以按照各个第二集的资源对象可创建量对第二资源序列进行排序,在排序后的第二资源序列中,按照排序顺序,将首个第二集确定为目标集,确定该目标集的资源对象可分配量加上该目标集的资源对象已创建量是否大于等于申请数量,若是,则将申请数量与该目标集的资源对象已创建量的差值,确定为该目标集的资源对象分配量,完成资源对象创建任务的分配。若否,则将该目标集的资源对象可创建量确定为该目标集的资源对象分配量,并继续对下一个第二集进行上述过程,直至所有目标集的资源对象分配量与所有目标集的资源对象已创建量之和大于等于申请数量。
如果所有第二集的资源对象总量小于申请数量,则说明所有第二集的硬件资源不足以创建申请数量个资源对象,还需要在第一集中除第二集以外的集上申请创建资源对象,为了便于区分,将第一集中除第二集以外的集称为第三集。因此,如果所有第二集的资源对象总量小于申请数量,则将所有第二集确定为目标集,并根据第二集的资源对象可创建量确定为目标集的资源对象分配量。接着,在第一资源序列中,依次将第三集确定为目标集,并根据第三集的资源对象可创建量确定目标集的资源对象分配量,直至所有目标集的资源对象分配量和资源对象已创建量之和大于等于申请数量。
在将第三集确定为目标集,并根据第三集的资源对象可创建量确定目标集的资源对象分配量的过程中,可从第一资源序列中,将首个第三集确定为目标集,如果该目标集的资源对象可创建量、所有已确定的目标集的资源对象分配量和所有已确定的目标集的资源对象已创建量之和大于等于申请数量,则将申请数量与所有已确定的目标集的资源对象分配量和所有已确定的目标集的资源对象已创建量之和的差,确定为依据首个第三集确定的目标集的资源对象分配量。如果该目标集的资源对象可创建量、所有已确定的目标集的资源对象分配量和所有已确定的目标集的资源对象已创建量之和小于申请数量,则将依据首个第三集确定的目标集的资源对象可创建量,确定为该目标集的资源对象分配量。如此依次将第三集确定为目标集,直至所有目标集的资源对象分配量和资源对象已创建量之和大于等于申请数量。
可选的,前述实施例中的集联邦为Kubernetes集联邦,前述实施例中的集为Kubernetes集,从而有效地提高Kubernetes集联邦中多个Kubernetes集之间的资源调度效果。
作为示例的,以本公开的实施例提供的资源调度方法通过资源管理服务和集管理服务实现为例,如图5所示,本公开的实施例提供的资源调度方法包括:(1)集管理服务接收终端设备的资源申请请求,根据资源申请请求,获取资源对象的参数信息;(2)集管理服务将资源对象的参数信息中参数对象的资源规格发送资源管理服务;(3)资源管理服务根据资源规格和集监控数据库,确定第一资源序列,第一资源序列包括至少一个第一集与资源对象可创建量的对应关系;(4)资源管理服务将第一资源序列发送给集管理服务;(5)集管理服务根据申请数量和第一资源序列,确定目标集与目标集对应的资源对象分配量;(6)集管理服务根据目标集的资源对象分配量,向目标集发送创建资源对象的请求。
进一步的,以集联邦为Kubernetes集联邦、集为Kubernetes集、资源对象的参数信息还包括目标机房为例,如图6所示,本公开的实施例提供的资源调度方法包括:(1)集管理服务接收终端设备的资源申请请求,根据资源申请请求,获取资源对象的资源规格、申请数量和目标机房;(2)集管理服务根据目标机房,筛选出位于目标机房的Kubernetes集的集名称;(3)集管理服务将位于目标机房的Kubernetes集的集名称和资源对象的资源规格发送给资源管理服务;(4)资源管理服务根据位于目标机房的Kubernetes集的集名称和资源对象的资源规格,在位于目标机房的Kubernetes集中,过滤掉剩余硬件资源量不满足资源规格的Kubernetes集;(5)资源管理服务计算过滤剩下的Kubernetes集的资源对象可创建量,以集名称+资源对象可创建量的方式得到第一资源序列;(6)资源管理服务向集管理服务返回第一资源序列;(7)针对第一资源序列中的各Kubernetes集,集管理服务判断Kubernetes集的资源对象可创建总量是否大于等于申请量,若否,则直接结束资源调度,若是,则继续以及第一资源序列确定目标集和各目标集的资源对象分配量;(8)根据各目标集的资源对象分配量向各目标集申请创建资源对象。
图7为本公开一实施例提供的资源调度装置的结构示意图。如图7所示,该资源调度装置700包括:接收模块701、获取模块702、调度模块703、发送模块704。
接收模块701,用于接收终端设备的资源申请请求,资源申请请求用于申请创建一个或多个资源对象;
获取模块702,用于根据资源申请请求,获取资源对象的参数信息,参数信息包括资源对象的资源规格和资源对象的申请数量;
调度模块703,用于根据资源规格和集监控数据库,确定第一资源序列,第一资源序列包括至少一个第一集与资源对象可创建量的对应关系,集监控数据库用于记录多个集的宿主机信息和资源对象信息,根据申请数量和第一资源序列,确定目标集和目标集对应的资源对象分配量;
发送模块704,用于根据目标集的资源对象分配量,向目标集发送创建资源对象的请求,以在目标集中的宿主机上创建资源对象。
本公开实施例中,根据集监控数据库和资源申请请求所申请创建资源的资源规格、资源数量,确定目标集和目标集对应的资源对象分配量,因此充分考虑各个集的资源情况,依据各个集的资源对象创建能力,在多个集中进行资源对象的分配,有效地提高了多个集中资源调度效果,且无需对多个集所在的集联邦的架构进行改造,适用于不同的集联邦。
在一种可能的实现方式中,如图8所示,资源调度装置700还包括:
更新模块705,用于在监控到目标集上资源对象创建成功的情况下,根据目标集对应的资源对象分配量,更新集监控数据库。
在一种可能的实现方式中,集的宿主机信息包括集的剩余硬件资源量,调度模块703,具体用于:
根据资源规格和集监控数据库中多个集的硬件资源剩余量,确定第一资源序列。
在一种可能的实现方式中,参数信息还包括资源对象所属的目标区域位置,集监控数据库还用于记录所有集所在的区域位置,资源调度装置700还包括:
筛选模块,用于根据目标区域位置和集监控数据库中所有集所在的区域位置,对集监控数据库中所有集进行筛选;
调度模块703,具体用于:
根据资源规格和集监控数据库中筛选后的集的硬件资源剩余量,确定第一资源序列。
在一种可能的实现方式中,调度模块703,具体用于:
在集监控数据库中,将硬件资源剩余量大于等于资源规格的至少一个集,确定为第一集;
根据资源规格和第一集的硬件资源剩余量,确定第一集对应的资源对象可创建量;
根据各第一集对应的资源对象可创建量,确定第一资源序列。
在一种可能的实现方式中,调度模块703,具体用于:
根据第一资源序列,获得所有第一集的资源对象可创建总量;
如果资源对象可创建总量大于等于申请数量,则在第一集中确定目标集,并根据第一集的资源对象可创建量和申请数量,确定目标集对应的资源对象分配量。
在一种可能的实现方式中,调度模块703,具体用于:
如果资源对象可创建总量大于等于申请数量,则按照资源对象可创建量,对第一资源序列进行降序排序;
在排序后的第一资源序列中,依次将第一集确定为目标集,并根据第一集的资源对象可创建量确定目标集对应的资源对象分配量,直至各目标集的资源对象分配量之和大于等于申请数量。
在一种可能的实现方式中,调度模块703,具体用于:
如果资源对象可创建总量大于等于申请数量,则根据第一集的资源对象信息,对第一集中是否存在至少一个已创建资源对象的第二集进行查询;
如果存在已创建资源对象的第二集,则确定第二资源序列,第二资源序列包括第二集与资源对象已创建量的对应关系;
根据申请数量、第一资源序列和第二资源序列,确定目标集和目标集对应的资源对象分配量。
在一种可能的实现方式中,调度模块703,具体用于:
根据第一资源序列和第二资源序列,得到所有第二集的资源对象总量,所有第二集的资源对象总量为所有第二集的资源对象可创建量和资源对象已创建量之和;
如果所有第二集的资源对象总量大于等于申请数量,则依次将第二集确定为目标集,并根据第二集的资源对象可创建量确定目标集对应的资源对象分配量,直至所有目标集的资源对象分配量和资源对象已创建量之和大于等于申请数量。
在一种可能的实现方式中,调度模块703,具体用于:
如果所有第二集的资源对象总量小于申请数量,则将所有第二集确定为目标集,并根据第二集的资源对象可创建量确定目标集的资源对象分配量;
在第一资源序列中,依次将第一集中除第二集以外的第三集确定为目标集,并根据第三集的资源对象可创建量确定目标集的资源对象分配量,直至所有目标集的资源对象分配量和资源对象已创建量之和大于等于申请数量。
在一种可能的实现方式中,集为Kubernetes集。
本公开实施例提供的集调度装置,可用于执行上述的方法实施例,其实现原理和技术效果类似,本实施例此处不再赘述。
图9为本公开一实施例提供的资源调度设备的结构示意图。如图9所示,本实施例提供的资源调度设备900包括:至少一个处理器901和存储器902。该资源调度设备900还包括通信部件903。其中,处理器901、存储器902以及通信部件903通过总线904连接。
在具体实现过程中,至少一个处理器901执行存储器902存储的计算机执行指令,使得至少一个处理器901执行如上的资源调度方法。
处理器901的具体实现过程可参见上述方法实施例,其实现原理和技术效果类似,本实施例此处不再赘述。
在上述的图9所示的实施例中,应理解,处理器可以是中央处理单元(英文:Central Processing Unit,简称:CPU),还可以是其他通用处理器、数字信号处理器(英文:Digital Signal Processor,简称:DSP)、专用集成电路(英文:Application SpecificIntegrated Circuit,简称:ASIC)等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合发明所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。
存储器可能包含高速RAM存储器,也可能还包括非易失性存储NVM,例如至少一个磁盘存储器。
总线可以是工业标准体系结构(Industry Standard Architecture,ISA)总线、外部设备互连(Peripheral Component Interconnect,PCI)总线或扩展工业标准体系结构(Extended Industry Standard Architecture,EISA)总线等。总线可以分为地址总线、数据总线、控制总线等。为便于表示,本公开附图中的总线并不限定仅有一根总线或一种类型的总线。
本公开还提供一种计算机可读存储介质,计算机可读存储介质中存储有计算机执行指令,当处理器执行所述计算机执行指令时,实现如上的建表语句生成方法。
上述的计算机可读存储介质,上述可读存储介质可以是由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(SRAM),电可擦除可编程只读存储器(EEPROM),可擦除可编程只读存储器(EPROM),可编程只读存储器(PROM),只读存储器(ROM),磁存储器,快闪存储器,磁盘或光盘。可读存储介质可以是通用或专用计算机能够存取的任何可用介质。
一种示例性的可读存储介质耦合至处理器,从而使处理器能够从该可读存储介质读取信息,且可向该可读存储介质写入信息。当然,可读存储介质也可以是处理器的组成部分。处理器和可读存储介质可以位于专用集成电路(Application Specific IntegratedCircuits,简称:ASIC)中。当然,处理器和可读存储介质也可以作为分立组件存在于设备中。
最后应说明的是:以上各实施例仅用以说明本公开的技术方案,而非对其限制;尽管参照前述各实施例对本公开进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本公开各实施例技术方案的范围。
本文发布于:2023-04-13 13:02:27,感谢您对本站的认可!
本文链接:https://patent.en369.cn/patent/3/86027.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |