一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种资源分配方法、装置、电子设备及存储介质与流程

2022-02-19 00:06:28 来源:中国专利 TAG:


1.本技术涉及资源调度技术领域,尤其涉及一种资源分配方法、装置、电子设备及存储介质。


背景技术:

2.在kubernetes(一种容器组管理系统,简称为k8s)中,最基本的运行单元是pod,pod中可以包含多个容器,但一般来说,一个pod中仅仅包含一个容器。
3.kubernetes中的分布式任务是指,一个任务job(job指的是一次性任务,通过job可以并行运行多个容器,当其任务执行完以后,就自动退出,集群也不再重新将其唤醒)中包含了多个pod,多个pod分别做运算,再根据某种协议将运算的结果合并。分布式任务可以突破单机性能的限制,让多台机器为整个运算服务,能够加快运算的速度。
4.在相关技术中,当用户通过kubernetes创建了一个job,且目前资源池中的资源只能够使这个job下的部分pod可以被调度并运行,则会造成job无法启动,且资源池中被该job已持有的资源无法被其它job使用的情况;此外,当存在多个待启动的job,且目前资源池中的资源只能够使其中一个job下的所有pod被调度时,会出现每个job都持有了部分pod的资源而不释放,导致每个job都无法启动的情况;进而上述情况均会导致资源的浪费。
5.针对相关技术中存在的进行资源分配时出现资源浪费的技术问题,目前尚未提供有效的解决方案。


技术实现要素:

6.为了解决相关技术中进行资源分配时出现资源浪费的技术问题,本技术提供了一种资源分配方法、装置、电子设备及存储介质。
7.第一方面,本技术实施例提供了一种资源分配方法,包括:
8.在监听到发生任务新增事件的情况下,获取与所述任务新增事件对应的进行容器化部署的目标任务的任务配置文件,其中,所述任务新增事件用于指示对所述目标任务进行资源分配;
9.按照所述任务配置文件中指示的所述目标任务包含的应用实例的资源占用量,将所述应用实例预调度到至少一个候选节点中的目标节点上,以使所述目标节点的可用资源中所述资源占用量的资源被所述应用实例预占用,其中,所述可用资源的可用资源量大于或者等于所述资源占用量;
10.在所述应用实例均预调度成功的情况下,将所述应用实例调度到所述目标节点上,其中,所述预调度成功用于指示在对每个所述应用实例进行预调度之后,每个所述候选节点的剩余资源的资源量大于等于0。
11.可选地,如前述的方法,在所述获取与所述任务新增事件对应的进行容器化部署的目标任务的任务配置文件之前,所述方法还包括:
12.获取由目标对象创建的所述任务配置文件;
13.将所述任务配置文件存储至目标数据库中,其中,所述任务新增事件为将所述任务配置文件存储至所述目标数据库中。
14.可选地,如前述的方法,所述获取与所述任务新增事件对应的目标任务的任务配置文件包括:
15.从所述目标数据库中获取与所述任务新增事件对应的所述任务配置文件。
16.可选地,如前述的方法,所述应用实例的数量为多个,且所述候选节点的数量为多个;
17.所述按照所述任务配置文件中指示的所述目标任务包含的应用实例的资源占用量,将所述应用实例预调度到至少一个候选节点中的目标节点上,以使所述目标节点的可用资源中所述资源占用量的资源被所述应用实例预占用包括:
18.在各个所述候选节点的所述可用资源量之和大于或等于各个所述应用实例的所述资源占用量之和的情况下,依次将多个所述应用实例预调度到多个所述候选节点中的至少一个所述目标节点上,以使所述目标节点的可用资源中所述资源占用量的资源被所述应用实例预占用,其中,一个所述应用实例调度到一个所述目标节点上。
19.可选地,如前述的方法,所述按照每个所述应用实例的资源占用量以及所述目标节点的可用资源量,依次将多个所述应用实例预调度到多个所述候选节点中的至少一个所述目标节点上,包括:
20.按照每个所述应用实例对应的调度次序,确定当前待处理的目标应用实例;
21.确定所述目标应用实例预调度到的第一目标节点,其中,所述第一目标节点为多个所述候选节点中,可用资源量大于所述目标应用实例的资源占用量,且可用资源量最少的节点;
22.将所述目标应用实例预调度到所述第一目标节点上。
23.可选地,如前述的方法,在所述将所述目标应用实例预调度到所述第一目标节点上之后,所述方法还包括:
24.使用所述第一目标节点的可用资源量与所述目标应用实例的资源占用量的差值,对所述第一目标节点的可用资源量进行更新。
25.可选地,如前述的方法,在所述将所述应用实例调度到所述目标节点上之前,所述方法还包括:
26.将所述应用实例与目标节点之间的对应关系存储至目标存储系统中,以使所述目标节点在监听到自身被绑定有所述应用实例之后,根据所述应用实例创建目标容器,并启动所述目标容器运行所述应用实例。
27.第二方面,本技术实施例提供了一种资源分配装置,包括:
28.文件获取模块,用于在监听到发生任务新增事件的情况下,获取与所述任务新增事件对应的进行容器化部署的目标任务的任务配置文件,其中,所述任务新增事件用于指示对所述目标任务进行资源分配;
29.预调度模块,用于按照所述任务配置文件中指示的所述目标任务包含的应用实例的资源占用量,将所述应用实例预调度到至少一个候选节点中的目标节点上,以使所述目标节点的可用资源中所述资源占用量的资源被所述应用实例预占用,其中,所述可用资源的可用资源量大于或者等于所述资源占用量;
30.调度确定模块,用于在所述应用实例均预调度成功的情况下,将所述应用实例调度到所述目标节点上,其中,所述预调度成功用于指示在对每个所述应用实例进行预调度之后,每个所述候选节点的剩余资源的资源量大于等于0。
31.第三方面,本技术实施例提供了一种电子设备,包括:处理器、通信接口、存储器和通信总线,其中,所述处理器、通信接口和存储器通过通信总线完成相互间的通信;
32.所述存储器,用于存放计算机程序;
33.所述处理器,用于执行所述计算机程序时,实现如前述任一项所述的方法。
34.第四方面,本技术实施例提供了一种计算机可读存储介质,所述存储介质包括存储的程序,其中,所述程序运行时执行如前任一项所述的方法。
35.本技术实施例提供的上述技术方案与现有技术相比具有如下优点:
36.本技术实施例提供的该方法,通过先确定目标任务中的应用实例均可以被预调度之后,才对各个应用实例进行真正的调度,可以避免在直接对应用实例进行调度时,因为当前候选节点无法向目标任务提供足够资源,导致目标任务中某些应用实例无法被调度,因而目标任务无法被执行的情况,同时,由于目标任务中已被调度的应用实例持续占用着资源而不释放,容易出现其它任务因为无法获取足够的资源而无法执行的情况;进而,通过本实施例中的方法可以有效提高资源的使用效率,并且可以提高由各个候选节点构成的资源池的对任务的吞吐量。
附图说明
37.此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本发明的实施例,并与说明书一起用于解释本发明的原理。
38.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
39.图1为本技术实施例提供的一种资源分配方法的流程图;
40.图2为本技术另一实施例提供的一种资源分配方法的流程图;
41.图3为本技术另一实施例提供的一种资源分配方法的流程图;
42.图4为本技术应用例提供的一种资源分配方法的流程图;
43.图5为本技术实施例提供的一种资源分配装置的框图;
44.图6为本技术实施例提供的一种电子设备的结构示意图。
具体实施方式
45.为使本技术实施例的目的、技术方案和优点更加清楚,下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本技术的一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本技术保护的范围。
46.在相关技术中,kubernetes提供了job(管理工作类容器,一个或多个pod的集合)用于对计算任务进行容器化部署,当用户通过kubernetes创建了一个job,这个job下的pod可能会被调度,也可能不会被调度。比如:一个job1下关联了10个pod,其中6个pod能被调度
并运行,另外4个处于等待的状态,但是当使用分布式任务运行深度学习的训练,即分布式训练(一般而言,深度学习需要对大量的训练数据进行运算,单机无法满足需求,因此分布式训练是深度学习的主流方式)时,必须10个pod都运行,才能进行训练,必须等待另外4个pod启动,才能继续运行。无疑,在另外4个任务运行之前,这个job1既持有6个pod的资源而不释放,同时还等待被释放4个任务的资源。这带来了资源的浪费。
47.另一种情况下,如果目前资源池有4个资源,而存在job2和job3,job2和job3下分别有4个pod,在相关技术中,会存在job2获得了1个pod的资源,而job3获得了3个pod的资源,此时,这job2和job3都无法正常启动,但是资源却都被占用了。如果剩余资源没有增加的话,这两个任务将永远无法正常启动。
48.由此可知,相关技术中的资源调用,如果能有一种新的调度方式,能够解决这样的调度困境,将能大大提高整个系统的吞吐量。
49.为了解决上述技术问题,根据本技术实施例的一个方面,提供了一种资源分配方法。可选地,在本实施例中,上述属性信息的获取方法可以应用于的由终端和服务器所构成的硬件环境中。服务器通过网络与终端进行连接,可用于为终端或终端上安装的客户端提供服务,可在服务器上或独立于服务器设置数据库,用于为服务器提供数据存储服务。
50.上述网络可以包括但不限于以下至少之一:有线网络,无线网络。上述有线网络可以包括但不限于以下至少之一:广域网,城域网,局域网,上述无线网络可以包括但不限于以下至少之一:wifi(wireless fidelity,无线保真),蓝牙。终端可以并不限定于为pc、手机、平板电脑等。
51.本技术实施例的资源分配方法可以由服务器来执行,也可以由终端来执行,还可以是由服务器和终端共同执行。其中,终端执行本技术实施例的资源分配方法也可以是由安装在其上的客户端来执行。
52.以由服务器来执行本实施例中的资源分配方法为例,图1为本技术实施例提供的一种资源分配方法,包括如下所述步骤s101至s103:
53.步骤s101,在监听到发生任务新增事件的情况下,获取与任务新增事件对应的进行容器化部署的目标任务的任务配置文件,其中,任务新增事件用于指示对目标任务进行资源分配。
54.本技术的资源分配方法的应用于需要根据任务对资源进行分配,以使任务获取运行所需的资源的应用场景;例如,在kubernetes中,对job进行资源分配的场景,此外,还可以是其他场景。以在kubernetes中,对进行容器化部署的job(即,目标任务)进行资源分配的场景为例,对于一个新增的jobi,由于需要确定给该jobi分配多少资源,因此需要获取该jobi的任务配置文件。
55.任务配置文件中可以是用于创建目标任务jobi所需的配置文件,任务配置文件中包含目标任务jobi中的所有pod,以及各个pod所需的资源,资源的类型可以包括但不限于:存储资源、内存资源以及cpu资源等等。任务配置文件可以是由用户在特定存储位置创建得到的文件,在任务配置文件创建完成之后,即可视为发生了用于触发对任务配置文件对应的目标任务进行资源分配的任务新增事件。
56.例如,可以按照预设频率监听(例如,每5s监听一次)是否存在新生成或新写入的任务配置文件,当监听到某一存储位置新写入有一任务配置文件时,即判定发生任务新增
事件,然后读取得到最新写入的任务配置文件。
57.步骤s102,按照任务配置文件中指示的目标任务包含的应用实例的资源占用量,将应用实例预调度到至少一个候选节点中的目标节点上,以使目标节点的可用资源中资源占用量的资源被应用实例预占用,其中,可用资源的可用资源量大于或者等于资源占用量。
58.在获取任务配置文件之后,由于任务配置文件是对应于目标任务的,且其中包含目标任务jobi中的所有pod,以及各个pod所需的资源,每个pod即为一个应用实例,因此,基于任务配置文件可以确定出目标任务包含的所有应用实例,以及每个应用实例的资源占用量。
59.资源占用量可以是目标任务中各个应用实例pod所需占用的资源的总和,例如,假设目标任务jobi中包括的每个应用实例pob所需的资源都一致时,并且每个pod所需的资源记为一个单位资源(例如,内存2gb

10个cpu运算单元

20gb存储资源)时,则该目标任务jobi的资源占用量为4个单位资源。在一般情况下,一个job至少包括一个pod,并且每个pod需要分配至同一个处理节点node中运行。
60.候选节点可以是用于提供运算资源的节点,候选节点可以包括一个或多个,由多个候选节点可以构成资源池,每个候选节点所能够提供的运算资源都是有限的,因此,当候选节点中的可用资源量会随着运行的任务的增加而减少,其中,目标节点则是目标任务中的某一个应用实例被调度至的节点。并且,在未确定目标任务中的各个应用实例均可以被分配对应的资源的情况下,可以只将应用实例预调度到至少一个候选节点中的目标节点上,以使目标节点的可用资源中资源占用量的资源被应用实例预占用;即,目标节点上的可用资源中资源占用量的资源只是暂时被应用实例预占用,而未将该目标节点上的可用资源中资源占用量的资源用于运行该应用实例,通过此方式可以避免同一个资源被重复分配给多个应用实例;若最后目标任务包含的应用实例都可以被预调度到某一个目标节点上,则可以使应用实例占用对应的预占用的资源;若最后目标任务包含的至少一个应用实例无法被预调度到任一个候选节点上,则使目标任务的所有应用实例解除预占用对应的资源,以使被预占用的资源释放,并用于预分配给其他任务的应用实例。
61.例如,当应用实例只存在1个,候选节点存在3个时,先确定应用实例的资源占用量l1,然后确定各个候选节点的可用资源量l2,l3,l4;最后根据l1分别与l2,l3,l4之间的数量关系,选择得到可用资源量大于l1的候选节点作为目标节点。
62.步骤s103,在应用实例均预调度成功的情况下,将应用实例调度到目标节点上,其中,预调度成功用于指示在对每个应用实例进行预调度之后,每个候选节点的剩余资源的资源量大于等于0。
63.预调度成功可以是目标任务中的应用实例在被调度至应用实例对应的目标节点后,每个目标节点中的剩余的资源量仍然大于或等于0;即,预调度成功不会出现目标节点被调度的应用实例所需的资源量大于其本身可用资源量的情况;进一步的,在与目标任务对应的所有预调度中,每个资源只能被一个预调度的应用实例占用。
64.当每个应用实例均预调度成功之后,即说明目标任务可以通过一个目标节点或多个目标节点的组合执行,因此,将各个应用实例调度至每个应用实例对应的目标节点上。
65.例如,当目标任务存在2个应用实例a、b,存在3个候选节点a、b、c时,在按照前述步骤s102中的方法确定应用实例a可以被预调度至候选节点a中(即,候选节点a的可用资源量
大于或等于应用实例a的资源占用量),应用实例b可以被预调度至候选节点b中(即,候选节点b的可用资源量大于或等于应用实例b的资源占用量)时,则将应用实例a调度至候选节点a,应用实例b调度至候选节点b中,以完成对目标任务的资源调度。
66.通过本实施例中的方法,先确定目标任务中的应用实例均可以被预调度之后,才对各个应用实例进行真正的调度,可以避免在直接对应用实例进行调度时,因为当前候选节点无法向目标任务提供足够资源,导致目标任务中某些应用实例无法被调度,因而目标任务无法被执行的情况,同时,由于目标任务中已被调度的应用实例持续占用着资源而不释放,容易出现其它任务因为无法获取足够的资源而无法执行的情况;进而,通过本实施例中的方法可以有效提高资源的使用效率,并且可以提高由各个候选节点构成的资源池的对任务的吞吐量。
67.如图2所示,在一些实施例中,如前述的方法,在所述步骤s101获取与任务新增事件对应的进行容器化部署的目标任务的任务配置文件之前,方法还包括如下所述步骤s201和s202:
68.步骤s201,获取由目标对象创建的任务配置文件。
69.目标对象可以是需要为目标任务获取运算服务的配置人员,任务配置文件则是目标对象用于创建目标任务的文件。
70.可选的,需要创建kubernetes中的新的crd(custom resource definition,定制资源对象)资源,来管理下面的各个pod,因为kubernetes原生的job无法满足gangscheduler。可以建立新资源iqjob(即,任务配置文件),iqjob与现有技术中的job相比,增加了podsetuuid字段,相比于job任务配置文件中通过podsetuuid字段可以定义目标任务的uuid(通用唯一识别码,universally unique identifier),pod的数量,每个pod所需的各类资源的资源量。
71.步骤s202,将任务配置文件存储至目标数据库中,其中,任务新增事件为将任务配置文件存储至目标数据库中。
72.目标数据库可以是用于存储任务配置文件的数据库,当任务配置文件存储至目标数据库之后,可以按照预设的监听频率,通过预设的查询接口对数据库进行监听,当确认目标数据库中新增了任务配置文件之后,则确定发生了任务新增事件。
73.例如,kubernete api server得到iqjob(即,任务配置文件)之后,会将其记录到etcd(即,目标数据库,etcd是一个高可用的key/value存储系统,主要用于分享配置和服务发现)中。通过list_and_watch接口可以发现etcd中新增了一个iqjob,并且得到这个iqjob的全部内容。
74.通过本实施例中的方法,可以实时获取新增的任务配置文件,进而可以提高任务处理的及时性。
75.在一些实施例中,如前述的方法,所述步骤s101获取与任务新增事件对应的目标任务的任务配置文件包括:
76.从目标数据库中获取与任务新增事件对应的任务配置文件。
77.由前述实施例步骤s201和s202可知,任务配置文件存储于目标数据库中;因此,可以从目标数据库中获取该任务配置文件。
78.例如,基于任务新增事件,可以确定目标数据库中新写入了一个任务配置文件,然
后可以通过数据库中各个文件的写入时间,即可查询到最新写入的文件,并可确认该文件即为任务新增时间对应的任务配置文件。
79.通过本实施例中的方法,可以快速获取目标数据库中新增的任务配置文件,以便于后期快速基于任务配置文件对目标任务进行资源分配。
80.在一些实施例中,如前述的方法,应用实例的数量为多个,且候选节点的数量为多个;
81.所述步骤s102按照任务配置文件中指示的目标任务包含的应用实例的资源占用量,将应用实例预调度到至少一个候选节点中的目标节点上,以使目标节点的可用资源中资源占用量的资源被应用实例预占用包括:
82.在各个候选节点的可用资源量之和大于或等于各个应用实例的资源占用量之和的情况下,按照每个应用实例的资源占用量,依次将多个应用实例预调度到多个候选节点中的至少一个目标节点上,以使目标节点的可用资源中资源占用量的资源被应用实例预占用,其中,一个应用实例调度到一个目标节点上。
83.可用资源量之和可以是对各个候选节点的可用资源进行累加后得到;资源占用量之和可以是对目标任务的各个应用实例的资源占用量进行累加之后得到,并且可以基于任务配置文件中各个应用实例对应的配置内容,确定各个应用实例的资源占用量。由于目标任务只有在其中的每个应用实例都能够被调度到目标节点上之后,该目标任务才能够被执行,因此,只有在各个候选节点的可用资源量之和大于或等于各个应用实例的资源占用量之和的情况下,才有必要进行预调度。
84.在满足候选节点的可用资源量之和大于或等于各个应用实例的资源占用量之和的情况下,则可以基于每个应用实例的资源占用量以及每个候选节点的可用资源量之间的关系,确定每个应用实例预调度到的目标节点,以使目标节点的可用资源中资源占用量的资源被应用实例预占用,目标节点上的可用资源中资源占用量的资源只是暂时被应用实例预占用,而未将该目标节点上的可用资源中资源占用量的资源用于运行该应用实例,通过此方式可以避免同一个资源被重复分配给多个应用实例。进一步的,一个应用实例只需要调度到一个目标节点上,而一个目标节点可以被调度有多个应用实例。
85.例如,在确定每个应用实例pod的资源占用量之后,可以依次对每个应用实例pod进行判断,将所有候选节点node中每个应用实例pod可以预调度到的候选节点node作为目标节点,并建立应用实例pod与目标节点之间的对应关系,可选的,可以依次将每个应用实例pod的资源占用量与各个候选节点node的可用资源量进行比对,当确定候选节点node1的可用资源量大于或等于应用实例pod的资源占用量时,即将应用实例pod调度到作为目标节点的该候选节点node1上。
86.通过本实施例中的方法,可以在各个候选节点的可用资源量之和大于或等于各个应用实例的资源占用量之和的情况下,按照每个应用实例的资源占用量的情况下,才对应用实例进行调度,进而可以避免由于可用资源量之和小于资源占用量之和导致的无法完成对所有应用实例进行预调度的情况,可以有效提高预调度的效率。
87.如图3所示,在一些实施例中,如前述的方法,所述步骤按照每个应用实例的资源占用量以及目标节点的可用资源量,依次将多个应用实例预调度到多个候选节点中的至少一个目标节点上,包括如下所述步骤s301至s303:
88.步骤s301,按照每个应用实例对应的调度次序,确定当前待处理的目标应用实例。
89.调度次序可以是预先确定的用于指示对各个应用实例进行调度的次序,每个应用实例都有对应的调度次序。可选的,调度次序可以是预先人为设定的,还可以是按照其他策略进行排序得到,例如:按照每个应用实例的资源占用量,当资源占用量中包括多个类型的资源(例如,内存、cpu、gpu、磁盘等等)时,可以通过确定用于进行排序的资源类型的单个资源占用量对各个应用实例进行排序,得到应用实例对应的调度次序。一般情况下,各个调度次序都是按序排列的。
90.当前一应用实例被预调度完成之后,基于前一应用实例的调度次序即可确定当前待处理的应用实例,并将其记为目标应用实例。
91.步骤s302,确定目标应用实例预调度到的第一目标节点,其中,第一目标节点为多个候选节点中,可用资源量大于目标应用实例的资源占用量,且可用资源量最少的节点。
92.可以根据可用资源量由小至大的顺序对候选节点进行排序,并且按照该排序依次与目标应用实例的资源占用量进行比对,当确定某一可用资源量满足目标应用实例的资源占用量时,则可以筛选到可用资源量大于目标应用实例的资源占用量,且可用资源量最少的第一目标节点。
93.步骤s303,将目标应用实例预调度到第一目标节点上。
94.在确定了满足步骤s302中条件的第一目标节点之后,即可将目标应用实例预调度到第一目标节点上,以通过目标应用实例的资源占用量占用第一目标节点上对应的资源量。
95.通过本实施例中的方法,通过选择得到可用资源量大于目标应用实例的资源占用量,且可用资源量最少的节点作为第一目标节点,可以使候选节点在被调度有目标应用实例之后,剩余的资源量最少,可以有效减少资源的浪费。
96.在一些实施例中,如前述的方法,在将目标应用实例预调度到第一目标节点上之后,方法还包括如下所述步骤s401:
97.步骤s401,使用第一目标节点的可用资源量与目标应用实例的资源占用量的差值,对第一目标节点的可用资源量进行更新。
98.第一目标节点的可用资源量为目标应用实例预调度至第一目标节点之前可用的资源量;进而差值则为目标应用实例预调度至第一目标节点之后,第一目标节点可用的资源量。
99.在得到差值之后,后期若还需要对该第一目标节点分配应用实例,则需要基于差值判断第一目标节点是否满足待分配的应用实例的需求,因此,需要通过差值对第一目标节点的可用资源量进行更新,否则会出现即使预调度成功,在真实调度时,也会出现因为可用资源量不足,而无法将预调度的应用实例真实调度至第一目标节点的情况。
100.在一些实施例中,如前述的方法,在将应用实例调度到目标节点上之前,方法还包括如下所述步骤s501:
101.步骤s501,将应用实例与目标节点之间的对应关系存储至目标存储系统中,以使目标节点在监听到自身被绑定有应用实例之后,根据应用实例创建目标容器,并启动目标容器运行应用实例。
102.目标存储系统可以是如前述实施例中所述的etcd,并且,可以通过k8s scheduler
将应用实例与目标节点之间的对应关系写入etcd。
103.目标节点上运行的kubelet通过list and watch接口,可以监听得到了被绑定到自身的应用实例pod,然后根据应用实例创建目标容器,并启动目标容器运行应用实例。
104.通过本实施例中的方法,可以使各个目标节点根据对应关系启动目标容器运行应用实例。
105.如图4所示为应用前述任一实施例中方法的应用例:
106.1.接收用户创建的iqjob(即,任务配置文件),iqjob中参数的格式与创建job(即,目标任务)格式一致。
107.2.k8s api server(提供了k8s各类资源对象(pod,rc,service等)的增删改查及watch等http rest接口,是整个系统的数据总线和数据中心)得到请求之后,会将其记录到etcd(即,目标数据库)中。
108.3.iqjob controller通过list_and_watch接口(用于对etcd进行监听的接口)可以发现etcd中新增了一个iqjob之后,从etcd中得到这个iqjob的全部内容。
109.4.首先去查询k8s api server获得当前所有node(即,候选节点)的资源使用情况。
110.5.根据iqjob中的pod(即,应用实例)的内容,初始化podset(用于判断各个候选节点的可用资源量之和是否大于或等于各个应用实例的资源占用量之和),在确定各个候选节点的可用资源量之和是否大于或等于各个应用实例的资源占用量之和之后,再判断是否每一个pod都可以被调度到node上。
111.6.如果可以则通过gang scheduler(一个kube

batch作业(kube

batch job)可能有多个pod,这些pod要不全部执行,要不一个都不执行)的调度,并将请求k8s scheduler做真实的调度。
112.7.k8s scheduler将调度的信息,即pod与node的对应关系写入etcd(即,与目标数据库一致的目标存储系统)。
113.8.此时,node上运行的kubelet(在每个node节点上运行的主要“节点代理”)通过list and watch接口对etcd进行监听,根据对应关系得到了被绑定到自身的pod,然后启动container运行被绑定到自身的pod。
114.如图5所示,根据本技术另一方面的一个实施例,还提供了一种资源分配装置,包括:
115.文件获取模块1,用于在监听到发生任务新增事件的情况下,获取与任务新增事件对应的进行容器化部署的目标任务的任务配置文件,其中,任务新增事件用于指示对目标任务进行资源分配;
116.预调度模块2,用于按照任务配置文件中指示的目标任务包含的应用实例的资源占用量,将应用实例预调度到至少一个候选节点中的目标节点上,以使目标节点的可用资源中资源占用量的资源被应用实例预占用,其中,可用资源的可用资源量大于或者等于资源占用量;
117.调度确定模块3,用于在应用实例均预调度成功的情况下,将应用实例调度到目标节点上,其中,预调度成功用于指示在对每个应用实例进行预调度之后,每个候选节点的剩余资源的资源量大于等于0。
118.具体的,本发明实施例的装置中各模块实现其功能的具体过程可参见方法实施例中的相关描述,此处不再赘述。
119.在一些实施例中,如前述的装置,还包括:
120.获取模块,用于获取由目标对象创建的任务配置文件;
121.文件存储模块,用于将任务配置文件存储至目标数据库中,其中,任务新增事件为将任务配置文件存储至目标数据库中。
122.具体的,本发明实施例的装置中各模块实现其功能的具体过程可参见方法实施例中的相关描述,此处不再赘述。
123.在一些实施例中,如前述的装置,文件获取模块1,用于从目标数据库中获取与任务新增事件对应的任务配置文件。
124.具体的,本发明实施例的装置中各模块实现其功能的具体过程可参见方法实施例中的相关描述,此处不再赘述。
125.在一些实施例中,如前述的装置,应用实例的数量为多个,且候选节点的数量为多个;
126.预调度模块2,用于在各个候选节点的可用资源量之和大于或等于各个应用实例的资源占用量之和的情况下,依次将多个应用实例预调度到多个候选节点中的至少一个目标节点上,以使目标节点的可用资源中资源占用量的资源被应用实例预占用,其中,一个应用实例调度到一个目标节点上。
127.具体的,本发明实施例的装置中各模块实现其功能的具体过程可参见方法实施例中的相关描述,此处不再赘述。
128.在一些实施例中,如前述的装置,预调度模块2包括:
129.第一确定单元,用于按照每个应用实例对应的调度次序,确定当前待处理的目标应用实例;
130.第二确定单元,用于确定目标应用实例预调度到的第一目标节点,其中,第一目标节点为多个候选节点中,可用资源量大于目标应用实例的资源占用量,且可用资源量最少的节点;
131.预调度单元,用于将目标应用实例预调度到第一目标节点上。
132.具体的,本发明实施例的装置中各模块实现其功能的具体过程可参见方法实施例中的相关描述,此处不再赘述。
133.在一些实施例中,如前述的装置,还包括:
134.更新模块,用于使用第一目标节点的可用资源量与目标应用实例的资源占用量的差值,对第一目标节点的可用资源量进行更新。
135.具体的,本发明实施例的装置中各模块实现其功能的具体过程可参见方法实施例中的相关描述,此处不再赘述。
136.在一些实施例中,如前述的装置,还包括:
137.对应关系存储模块,用于将应用实例与目标节点之间的对应关系存储至目标存储系统中,以使目标节点在监听到自身被绑定有应用实例之后,根据应用实例创建目标容器,并启动目标容器运行应用实例。
138.具体的,本发明实施例的装置中各模块实现其功能的具体过程可参见方法实施例
中的相关描述,此处不再赘述。
139.根据本技术的另一个实施例,还提供一种电子设备,包括:如图6所示,电子设备可以包括:处理器1501、通信接口1502、存储器1503和通信总线1504,其中,处理器1501,通信接口1502,存储器1503通过通信总线1504完成相互间的通信。
140.存储器1503,用于存放计算机程序;
141.处理器1501,用于执行存储器1503上所存放的程序时,实现上述方法实施例的步骤。
142.上述电子设备提到的总线可以是外设部件互连标准(peripheral component interconnect,pci)总线或扩展工业标准结构(extended industry standard architecture,eisa)总线等。该总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
143.通信接口用于上述电子设备与其他设备之间的通信。
144.存储器可以包括随机存取存储器(random access memory,ram),也可以包括非易失性存储器(non

volatile memory,nvm),例如至少一个磁盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储装置。
145.上述的处理器可以是通用处理器,包括中央处理器(central processing unit,cpu)、网络处理器(network processor,np)等;还可以是数字信号处理器(digital signal processing,dsp)、专用集成电路(application specific integrated circuit,asic)、现场可编程门阵列(field

programmable gate array,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
146.本技术实施例还提供一种计算机可读存储介质,存储介质包括存储的程序,其中,程序运行时执行上述方法实施例的方法步骤。
147.需要说明的是,在本文中,诸如“第一”和“第二”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
148.以上所述仅是本发明的具体实施方式,使本领域技术人员能够理解或实现本发明。对这些实施例的多种修改对本领域的技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所申请的原理和新颖特点相一致的最宽的范围。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献