容器调度方法及装置、电子设备、存储介质与流程

文档序号:33706068发布日期:2023-03-31 21:41阅读:26来源:国知局
容器调度方法及装置、电子设备、存储介质与流程

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


背景技术:

2.随着软件的微服务化和虚拟化技术的发展,软件的开发与部署逐渐脱离传统的流程与技术,开始向着云原生的方向发展。现如今,越来越多的公司将自己的软件业务通过容器技术进行微服务化,以方便迭代与部署,而随着容器数量和规模的不断增加,容器编排技术变得尤为重要,其中,以kubernetes最为流行。kubernetes能够对容器进行综合调度管理。一般情况下,同一时刻只能进行单容器的调度,并且不同容器之间在调度时不仅存在着cpu、内存、资源的竞争,同时受复杂的调度策略的影响,容器之间存在着调度的关联。为了保证kubernetes的性能,需要对容器调度进行加速,现有的调度加速方式以多容器并行调度为主。
3.一般情况下,并行调度过程首先通过调度器从服务器中获取需要部署的容器以及当前的集群节点与容器的分布现状。然后启动多个调度器,每个调度器根据当前的集群节点与容器的分布现状控制一个容器进行调度算法的运行。每个容器在调度算法运行完成后得到调度结果,调度器会对每个调度结果进行冲突检测。
4.但其不足之处在于,每个容器会使用单独的线程进行调度算法的预选与优选,因此本质上仍是通过增加计算资源,来提升调度的效率,并未对容器调度的流程进行优化。在资源有限的情况下,方案适用性低。


技术实现要素:

5.有鉴于此,本技术实施例提供了一种容器调度方法及装置、电子设备、存储介质。
6.本技术实施例提供一种容器调度方法,该方法包括:
7.判定待调度容器满足预设条件;
8.获取缓存中与所述待调度容器类型相同的同类容器对应的同类调度运算结果;所述缓存中包括已完成调度的各类容器对应的调度运算结果;
9.基于获取到的所述同类调度运算结果执行调度,得到所述待调度容器的目标调度结果。
10.在上述实施例的基础上,本技术实施例还提供一种容器调度装置,该装置包括:判定模块、获取模块和处理模块;
11.判定模块,用于判定待调度容器满足预设条件;
12.获取模块,用于获取缓存中,与所述待调度容器类型相同的同类容器对应的同类调度运算结果;所述缓存中包括已完成调度的各类容器对应的调度运算结果;
13.处理模块,用于基于获取到的所述同类调度运算结果执行调度,得到所述待调度容器的目标调度结果。
14.在上述实施例的基础上,本技术实施例还提供一种电子设备,该电子设备包括处理器和用于存储能够在处理器上运行的计算机程序的存储器;
15.其中,所述处理器用于运行所述计算机程序时,执行上述实施例中所述方法的步骤。
16.在上述实施例的基础上,本技术实施例还提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行实现上述实施例中所述方法的步骤。
17.本技术实施例所提供的容器调度方法,在待调度容器满足预设条件后,可以从缓存中获取与待调度容器类型相同的同类容器对应的同类调度运算结果;进而,复用同类容器的同类调度运算结果执行调度,得到待调度容器对应的目标调度结果。如此,通过复用同类容器的同类调度运算结果的方式,能够在计算资源相同的情况下,有效加速调度过程,减少调度计算次数。
附图说明
18.图1为相关技术提出的调度算法运行的流程示意图;
19.图2为相关技术提出的并行调度的流程示意图;
20.图3为本技术实施例提供的一种容器调度方法的流程示意图;
21.图4为本技术实施例提供的另一种容器调度方法的流程示意图;
22.图5为本技术实施例提供的一种容器调度方法中调度算法运行的流程示意图;
23.图6为本技术实施例提供的一种容器调度装置的结构示意图;
24.图7为本技术实施例提供的电子设备的实体示意图。
具体实施方式
25.为了能够更加详尽地了解本技术实施例的特点与技术内容,下面结合附图对本技术实施例的实现进行详细阐述,所附附图仅供参考说明之用,并非用来限定本技术实施例。
26.除非另有定义,本技术实施例所使用的所有的技术和科学术语与属于本技术的技术领域的技术人员通常理解的含义相同。本技术实施例中所使用的术语只是为了描述本技术实施例的目的,不是旨在限制本技术。
27.通常情况下,在利用kubernetes进行容器调度时,同一时刻只能进行单容器的调度算法运行,其具体实现过程如图1所示。参见图1,容器在进行调度算法的运行时,整体分为两个阶段:调度阶段和绑定阶段。其中调度阶段为调度算法主要的计算过程,主要分为调度运算阶段,和对调度运算结果进行验证的验证运算阶段。
28.调度运算阶段还可以分为预选调度运算阶段和优选调度运算阶段。其中,预选调度运算阶段用于选择符合容器描述信息的节点,这里的描述信息指的是容器对资源的需求等信息;优选调度运算阶段用于对预选过后的节点进行打分和排序;绑定阶段主要用于将调度结果应用到集群中。其中,预选调度运算阶段可以包括预过滤阶段和过滤阶段。优选调度运算阶段包括预打分阶段和打分阶段。
29.验证运算阶段还包括规范打分阶段、保存结果和许可阶段,该三个阶段是对调度算法的计算结果进行规范、选择和确认,最终得到容器的目标调度结果。
30.为了保证kubernetes的性能,需要对容器调度进行加速,相关技术提出的调度加
速方式主要以并行调度为主,其具体实现过程如2所示。参见图2,首先,调度器需要从集群的服务器中获取需要部署的容器以及当前的集群节点与容器的分布现状。然后启动多个调度器,每个调度器根据当前的集群节点与容器的分布现状控制一个容器进行调度算法的运行,运行结束后得到的调度结果先存储在结果缓存中;这里的结果缓存表示所有调度器未反馈到服务器的调度结果,由所有调度器共同维护。每个容器在完成调度算法的运行后,将调度结果存储到结果缓存中,调度器会对不同调度结果进行冲突检测,判断节点资源是否冲突。
31.但其不足之处在于,每个容器会使用单独的线程进行调度算法的预选与优选,本质上仍是通过增加计算资源,来提升调度的效率,并未对容器调度的流程进行优化。在资源有限的情况下,方案适用性低。
32.此外,相关技术还提出基于开源插件的批量调度的方式,其具体过程如下:
33.1)由人工手动设置每次批量调度的最小调度数量;
34.2)从集群的服务器中获取需要部署的容器以及当前的集群节点与容器的分布现状;
35.3)开始对容器进行调度,如果当前待调度容器数量小于最小调度数量,容器将被标记为可调度,表示当前待调度容器可以通过批量调度的方式进行调度。
36.4)调度完成后,开始对容器进行确认,如果调度成功的容器数量小于最小调度数量,容器将被标记为等待,表示批量容器调度成功。
37.但其不足之处在于,设计上过于简单,本质上仍然是单独的调度过程,只是在调度前和调度后对同一组容器进行同步。同时,当一个集群的资源不足以调度一批容器时,则所有容器都会调度失败,这就对人工设置的“最小调度数量”值提出了很高的要求。
38.为了解决相关技术存在的上述问题,本技术实施例提供了一种容器调度方法,如图3所示,该方法可以包括以下步骤:
39.s301、确定待调度容器满足预设条件。
40.这里,待调度容器可以是集群中需要部署的容器。调度器通过从集群的服务器获取需要部署的容器队列,并控制容器队列中的容器逐个执行调度算法,获取每个容器对应的目标调度结果。
41.在一些实施例中,预设条件可以包括:缓存中存在与待调度容器类型相同的同类容器。
42.在一些实施例中,预设条件还可以包括:在预设时间内,待调度容器对应的集群中节点未发生增加、删除、或者改写的操作;和/或,待调度容器对应的集群资源在预设时间内未发生变化。
43.s302、获取缓存中,与待调度容器类型相同的同类容器对应的同类调度运算结果;其中,缓存中包括已完成调度的各类容器对应的调度运算结果。
44.这里,在确定了满足预设条件的待调度容器后,可以通过在缓存中查找与待调度容器类型相同的同类容器对应的同类调度运算结果,这样,调度器可以直接复用该同类调度运算结果完成对待调度容器的调度,避免了对容器进行全部的运算处理,从而提高容器调度的效率。
45.具体地,缓存中可以包括已完成调度的各类容器对应的调度运算结果。
46.s303、基于获取到的同类调度运算结果执行调度,得到待调度容器的目标调度结果。
47.需要说明的是,满足预设条件的待调度容器只需执行必要的运算处理,其流程与全量调度不同。全量调度是指在每个调度运算阶段,均对待调度容器进行完整的调度运算处理。而满足预设条件的调度容器的处理流程与全量调度的不同处在于,用如下方式代替调度运算阶段的运算过程:在各个调度运算阶段,先从缓存中获取同类容器在此阶段的调度运算子结果。进一步地,再基于获取的该调度运算子结果,进行此阶段的必要的运算处理过程,将得到的计算结果再运用于下一阶段的计算,如此完成调度运算处理。进一步地,调度器仍然会对待调度容器执行验证运算阶段(即规范打分阶段、保存结果和许可阶段)的处理,得到最终的目标调度结果。
48.这里,最终的目标调度结果,相当于是从集群中的众多节点中为待调度容器选择最优的待部署节点。
49.由此可见,本技术实施例所提供的容器调度方法,在待调度容器满足预设条件后,可以从缓存中获取与待调度容器类型相同的同类容器对应的同类调度运算结果;进而,复用同类容器的同类调度运算结果执行调度,得到待调度容器对应的目标调度结果。如此,通过复用同类容器的同类调度运算结果的方式,能够在计算资源相同的情况下,有效加速调度过程,减少调度计算次数。
50.基于上述实施例,s301中的预设条件可以包括:缓存中存在与待调度容器类型相同的同类容器。
51.这里,缓存用于存储各类容器对应的调度运算结果。如果缓存中存在与待调度容器类型相同的同类容器,则可以根据s302和s303中的步骤进行调度。同类容器的划分标准是,容器的部署模板相同。
52.需要说明的是,容器环境中的调度场景主要发生在容器应用创建和容器应用扩展的情况下,而容器应用一般拥有多个实例,相同实例在一些调度程序中,得到的结果是相同的。也就是说,类型相同的容器,调度运算结果可能不同;但在调度算法运行过程中的部分过程,同类容器会得到相同的结果。例如,调度算法执行中的某个阶段要求某类容器需要调度到进行了标记的节点,而调度算法运行过程中会有一个处理是排除没有进行标记的节点,则同类容器这一步的结果都是一样的。因此,可以通过复用同类容器对应的同类调度运算结果,来提高容器调度的效率。
53.在一些实施例中,预设条件还可以包括:在预设时间内,待调度容器对应的集群资源中的节点未发生增加、删除、或者改写的操作;和/或,待调度容器对应的集群资源在预设时间内未发生变化。
54.这里,在预设时间内,待调度容器对应的集群中节点未发生增加、删除、或者改写的操作,可以理解为,集群中的节点在预设时间内未发生变化。另外,待调度容器对应的集群资源在预设时间内未发生变化可以是,在预设时间内没有新的容器被部署到集群的节点中。
55.也就是说,调度器只要检测到待调度容器满足上述条件中的至少一种,就可以确定该待调度容器可以通过复用同类容器的调度运算结果,来提高容器调度的效率。
56.基于上述实施例,s302的缓存中的同类调度运算结果,可以包括已完成调度的同
类容器在多个调度运算阶段分别对应的调度运算子结果;
57.进一步,s303中基于获取到的同类调度运算结果执行调度,得到待调度容器的目标调度结果,可以包括:
58.s3021、从i取值为1开始,从缓存中,依次获取同类容器在第i个调度运算阶段对应的第i调度运算子结果;其中,i为大于等于1小于等于n的整数,n为调度运算阶段的总数;
59.s3022、基于第i调度运算子结果执行第一运算处理,得到待调度容器在第i个调度运算阶段的目标调度运算子结果;第一运算处理是指在每个调度运算阶段,对待调度容器执行的全量运算处理中的必要运算处理;直至i取值为n,得到所述待调度容器的第n个调度运算阶段的目标调度运算子结果;
60.s3023、基于第n个调度运算阶段的目标调度运算子结果,确定待调度容器的目标调度结果。
61.这里,在确定了待调度容器满足预设条件后,可以通过在缓存中查找与待调度容器类型相同的同类容器对应的同类调度运算结果,并复用该同类调度运算结果,从而提高容器调度的效率。
62.需要说明的是,缓存中包括已完成调度的各类容器在多个调度运算阶段分别对应的调度运算子结果。缓存中存储的调度运算子结果会按调度运算阶段和容器类型两个维度为索引,保存每种类型的容器在各个调度运算阶段的调度运算子结果。例如,缓存中可以保存每种类型的容器在预过滤阶段、过滤阶段、预打分阶段、以及打分阶段分别对应的调度运算子结果。
63.具体地,在每个调度运算阶段,调度器可以先从缓存中获取同类容器在当前调度运算阶段对应的调度运算子结果。进而,基于同类容器在当前调度运算阶段对应的调度运算子结果执行第一运算处理,得到待调度容器在当前调度运算阶段对应的目标调度运算子结果。
64.进一步地,调度器可以将当前调度运算阶段的目标调度运算子结果输入至下一调度运算阶段,进行下一运算调度运算阶段的处理,直至完成所有的调度运算阶段,得到最后一个调度运算阶段的目标调度运算子结果,即第n个调度运算阶段的目标调度运算子结果。
65.需要说明的是,每个调度运算阶段得到的目标调度运算子结果,都将运用于下一调度运算阶段算法的运行,即第i个调度运算阶段的目标调度运算子结果,会影响第i+1个调度运算阶段的目标调度运算子结果。
66.例如,在过滤阶段的目标调度运算子结果可以是为待调度容器确定一组可用节点。在预打分阶段,调度器可以获取同类容器在该预打分阶段的调度运算子结果,并结合该预打分阶段同类容器的调度运算子结果和上个阶段的目标调度运算子结果(一组可用节点),确定每个可用节点的分数。也就是说,在该调度运算阶段中减少了对每个节点的打分运算,直接复用同类容器的调度运算子结果对可用节点进行打分,提高了调度运算的效率。
67.这里,第一运算处理,是指待调度容器执行必要的运算处理。也就是说,在每个调度运算阶段,只需要对待调度容器执行必要的运算处理,其他的运算处理可以不用执行,而直接复用同类容器在当前调度运算阶段对应的调度运算子结果。也就是说,调度器并不需要对待调度容器执行全量运算处理。
68.例如,参考图5所示,同类容器在过滤阶段的调度运算子结果为一组可用节点。调
度器可以在缓存中获取同类容器在过滤阶段的调度运算子结果后,再基于此结果,进行此阶段的必要运算处理,例如图5中第一运算处理中过滤阶段的运算处理。
69.本技术实施例中,在得到第n个调度运算阶段的目标调度运算子结果后,调度器可以对该目标调度运算子结果进行验证运算阶段(即图5所示的规范打分阶段、保存结果和许可阶段)的处理,得到最终的目标调度结果。
70.在一些实施例中,基于上述实施例,上述方法还可以包括:
71.s3024、若缓存中不存在第i调度运算子结果,则对待调度容器执行在第i个调度运算阶段的第二运算处理,得到待调度容器在第i个调度运算阶段对应的目标调度运算子结果;第二运算处理是指在每个调度运算阶段,对待调度容器执行的全量运算处理;直至i取值为n,得到所述待调度容器的第n个调度运算阶段的目标调度运算子结果。
72.这里,如果在第i个调度运算阶段,缓存中不存在同类容器在该调度运算阶段对应的第i调度运算子结果,那么就要通过全量运算处理来确定待调度容器在该调度运算阶段对应的目标调度运算子结果。
73.本技术实施例中,第二运算处理即表征全量运算处理。第二运算处理中可以包括第一运算处理,也就是说,第一运算处理是第二运算处理中的部分内容。具体地,只要缓存中未包含同类容器在某一调度运算阶段对应的调度运算子结果,就需要通过全量计算来确定当前调度运算阶段对应的目标调度运算子结果。
74.需要说明的是,若缓存中不存在第i调度运算子结果,则会影响后续第i+1个调度运算阶段的处理。也就是说,在无法复用某个调度运算阶段中同类容器的调度运算子结果的情况下,调度器需要将当前调度运算阶段和后续的调度运算阶段调整至全量运算流程中,即通过第二运算来完成当前调度运算阶段和后续的调度运算阶段的运算处理,以得到第n个调度运算阶段的目标调度运算子结果。
75.基于上述实施例,在s3023中得到待调度容器在第i个调度运算阶段对应的目标调度运算子结果之后,还包括:
76.s3023a、将待调度容器在每个调度运算阶段对应的目标调度运算子结果添加至缓存中。
77.这里,在通过第二运算处理得到待调度容器在每个调度运算阶段对应的目标调度运算子结果后,调度器可以将计算得到的当前调度运算阶段对应的目标调度运算子结果,按照调度运算阶段和容器类型两个维度为索引,添加至缓存中以完成对缓存中信息的更新,以便于其他待调度容器在进行调度运算过程中使用。
78.基于上述实施例,在s303中基于获取到的同类调度运算结果执行调度,得到待调度容器的目标调度结果之后,还可以包括:
79.s304、若待调度容器不满足预设条件,则根据全量调度运算流程执行调度,得到待调度容器的目标调度结果。
80.基于上述实施例,所述方法还可以包括:
81.s305、更新缓存中同容类器对应的有效性时间;有效性时间用于表征同类容器对应的同类调度运算结果能够被获取的时间范围。
82.这里,在完成容器的调度以后,会更新缓存中同容类器对应的有效性时间;有效性时间用于表征同类容器对应的调度运算结果能够被获取的时间范围。
83.具体地,无论是通过复用同类调度运算结果完成调度,还是通过全量调度运算流程完成调度,都会将缓存中同容类器对应的有效性时间(time to live,ttl)更新为初始值。例如,某一类型的容器的ttl初始值为10,那么在初始化以后,表示在接下来的10秒内,此类型的容器可以通过复用同类调度运算结果进行加速调度。此外,同类容器的有效性时间ttl会随着时间递减,在某一类容器的ttl减为0时,会将该容器类型从缓存中删除。
84.本技术实施例通过调度运算结果复用的方式,能够有效加速调度过程。这里,以包括10个节点的集群为例,假设缓存中存在与待调度容器类型相同的同类容器的调度运算结果,则在理想情况下,与原始的通过全量调度运算流程的调度过程相比,可通过调度运算结果复用的方式,减少10*3*4=120次调度计算,有效加速调度过程。
85.由此可见,本技术实施例所提供的容器调度方法,在待调度容器满足预设条件后,从缓存中获取与待调度容器类型相同的同类容器对应的同类调度运算结果;基于同类调度运算结果执行调度,得到待调度容器的目标调度运算结果。如此,通过复用同类调度运算结果的方式,能够在计算资源相同的情况下,有效加速调度过程,减少调度计算次数。
86.本技术在上述实施例的基础上,还提供了一种容器调度方法,如图4和图5所示,该方法包括:
87.s401、判定待调度容器满足预设条件。
88.这里,待调度容器可以是集群中需要部署的容器。调度器通过从集群的服务器获取需要部署的容器队列,并控制容器队列中的容器逐个执行调度算法,计算得到每个容器对应的目标调度结果。
89.这里,预设条件可以包括:缓存中存在与待调度容器类型相同的同类容器;在预设时间内,所述待调度容器对应的集群中节点未发生增加、删除、或者改写的操作;以及,待调度容器对应的集群资源在预设时间内未发生变化。
90.需要说明的是,容器环境中的调度场景主要发生在容器应用创建和容器应用扩展的情况下,而容器应用一般拥有多个实例,相同实例在一些调度程序中,得到的结果是相同的。也就是说,类型相同的容器,调度运算结果可能不同;但在调度算法运行过程中的部分过程,同类容器会得到相同的结果。例如,某一调度程序要求某类容器需要调度到进行了标记的节点,而调度算法运行过程中会有一个处理是排除没有进行标记的节点,则同类容器这一步的结果都是一样的。因此,可以通过复用相同调度程序对应的结果,来提高容器调度的效率。
91.缓存具体用于存储各类容器对应的调度运算结果。如果缓存中存在与待调度容器类型相同的同类容器,则调度器可以复用该同类容器的同类调度运算结果,对待调度容器进行调度处理。同类容器的划分标准是,容器的部署模板相同。以10个节点的集群为例,假如图5中调度运算阶段的前四阶段中各包含5种待调度程序,则进入此调度算法的容器需要使用20种待调度程序对10个节点分别进行调度计算,总共计算次数为20*10=200次。
92.还需要说明的是,前四个调度运算阶段中,相同调度运算阶段内的调度处理还可以划分为全量运算处理和必要运算处理,分类的标准为同类容器在集群节点的状态相同的情况下,输出结果一致。
93.这里,集群节点状态相同是指集群节点没有进行增加删除的操作,集群计算资源无变化,同时不存在部分人为的更新操作,如标签变化、节点污点变化等。
94.此外,输出结果一致在不同阶段表现不一样,例如在过滤阶段,输出结果一致表现为一组相同的节点。以过滤阶段为例,通过上述的分类方法,分类结果如下:判断节点是否可调度的nodeunschedulable plugins、判断节点名称是否相符的nodename plugins、判断节点端口可调度的nodeport plugins等,都是属于可复用的处理运算;而用于判断容器分散程度的podtopologyspread plugins、判断容器相互之间亲和性的interpodaffinity plugins等,都是属于必要处理运算。
95.具体地,在调度算法计算过程中的各个阶段中,都会先执行完所有的可复用的全量处理运算,得到可复用的调度运算结果,利用调度运算结果对缓存中的信息进行更新或添加操作,同时将此结果作为输入,再执行此阶段的必要处理运算。
96.s402、从缓存中,获取同类容器在第i个调度运算阶段对应的第i调度运算子结果;
97.s403、基于第i调度运算子结果执行第一运算处理,得到待调度容器在第i个调度运算阶段的目标调度运算子结果;其中,i为大于等于1小于等于n的整数,n为调度运算阶段的总数;直至i取值为n,得到所述待调度容器的第n个调度运算阶段的目标调度运算子结果。
98.其中,第一运算处理是指在每个调度运算阶段,对待调度容器执行的全量运算处理中的必要运算处理;
99.这里,在确定了待调度容器满足预设条件后,可以在缓存中查找与待调度容器类型相同的同类容器对应的同类调度运算结果,并复用该同类调度运算结果,从而提高容器调度的效率。
100.需要说明的是,缓存中包括已完成调度的各类容器在多个调度运算阶段分别对应的调度运算子结果。缓存可以按调度运算阶段和容器类型两个维度为索引,保存各个阶段的调度运算子结果。
101.具体地,在当前调度运算阶段(即第i个调度运算阶段),调度器可以先从缓存中获取同类容器在第i个调度运算阶段对应的第i调度运算子结果。进而,基于该第i调度运算子结果执行第一运算处理,得到待调度容器在当前的第i个调度运算阶段对应的目标调度运算子结果。
102.这里,第一运算处理,是指待调度容器执行必要的运算处理。也就是说,在第i个调度运算阶段,只需要对待调度容器执行必要的运算处理,其他的运算处理可以不用执行,而直接复用同类容器在第i个调度运算阶段对应的第i调度运算子结果。也就是说,调度器并不需要对待调度容器执行全量运算处理。
103.例如,参考图5所示,同类容器在过滤阶段的调度运算子结果为一组可用节点。调度器可以在缓存中获取同类容器在过滤阶段的调度运算子结果后,再基于此结果,进行此阶段的必要运算处理,例如图5中第一运算处理中过滤阶段的第一运算处理。
104.在得到第i个调度运算阶段的目标调度运算子结果后,继续进行第i+1个调度运算阶段的处理。
105.具体地,调度器在第i+1个调度运算阶段,可以继续从缓存中获取同类容器在第i+1个调度运算阶段对应的第i+1调度运算子结果,并基于第i+1调度运算子结果和第i个调度运算阶段对应的目标调度运算子结果执行第一运算处理,得到待调度容器在第i+1个调度运算阶段的目标调度运算子结果,直至i取值为n,得到待调度容器在第n个调度运算阶段的
目标调度运算子结果。
106.这里,在确定了第i个调度运算子结果之后,继续进行下一个调度运算阶段(即第i+1个调度运算阶段)的运算处理,对第i+1个调度运算阶段的运算处理与第i个调度运算阶段的运算处理类似,都是从缓存中查找同类容器在当前阶段(即第i+1个调度运算阶段)的调度运算子结果,并基于该调度运算子结果进行第一运算处理,得到待调度容器在第i+1个调度运算阶段对应的目标调度运算子结果。
107.需要说明的是,调度器需要对每个调度运算阶段执行上述处理,直至得到最终第n个调度运算阶段对应的目标调度运算子结果。
108.s404、若缓存中不存在第i调度运算子结果,则对待调度容器执行在第i个调度运算阶段的第二运算处理,得到待调度容器在第i个调度运算阶段对应的目标调度运算子结果。
109.其中,第二运算处理是指在每个调度运算阶段,对待调度容器执行的全量运算处理。
110.这里,如果在第i个调度运算阶段,缓存中不存在同类容器在该调度运算阶段对应的第i调度运算子结果,那么就要通过全量运算处理来确定待调度容器在该调度运算阶段对应的目标调度运算子结果。
111.本技术实施例中,第二运算处理即表征全量运算处理。第二运算处理中可以包括第一运算处理,也就是说,第一运算处理是第二运算处理中的部分内容。具体地,只要缓存中未包含同类容器在某一调度运算阶段对应的调度运算子结果,就需要通过全量运算处理来确定当前调度运算阶段对应的目标调度运算子结果。
112.需要说明的是,在得到第i个调度运算阶段的目标调度运算子结果后,可以继续通过全量运算处理,进行第i+1个调度运算阶段的处理。
113.具体地,调度器在第i+1个调度运算阶段,可以基于计算得到的第i个调度运算阶段对应的目标调度运算子结果执行第二运算处理,得到待调度容器在第i+1个调度运算阶段的目标调度运算子结果,直至i取值为n,得到待调度容器在第n个调度运算阶段的目标调度运算子结果。
114.s405、将待调度容器在每个调度运算阶段对应的目标调度运算子结果添加至缓存中。
115.这里,通过第二运算处理得到待调度容器,在第i个调度运算阶段对应的目标调度运算子结果后,将计算得到的目标调度运算子结果,按照调度运算阶段和容器类型两个维度为索引,添加至缓存中以完成对缓存中信息的更新。
116.s406、基于第n个调度运算阶段的目标调度运算子结果,确定待调度容器的目标调度结果。
117.本技术实施例中,在得到第n个调度运算阶段的目标调度运算子结果后,调度器还可以基于第n个调度运算阶段的目标调度运算子结果执行图5所示的规范打分阶段、保存阶段、以及许可阶段的验证运算处理,得到最终的目标调度结果。
118.这里,在确定了目标调度结果后,也就相当于确定了得分最高的节点,将得分最高的节点确定为待部署节点。
119.s407、若待调度容器不满足预设条件,则根据全量调度运算流程执行调度,得到待
调度容器的目标调度结果。
120.s408、更新缓存中同容类器对应的有效性时间;有效性时间用于表征同类容器对应的同类调度运算结果能够被获取的时间范围。
121.这里,在完成容器的调度以后,会更新缓存中同容类器对应的有效性时间;有效性时间用于表征同类容器对应的调度运算结果能够被获取的时间范围。
122.具体地,无论是通过复用同类调度运算结果完成调度,还是通过全量调度运算流程完成调度,都会将缓存中同容类器对应的有效性时间(time to live,ttl)更新为初始值。例如,某一类型的容器的ttl初始值为10,那么在初始化以后,表示在接下来的10秒内,此类型的容器可以通过复用同类调度运算结果进行加速调度。此外,同类容器的有效性时间ttl会随着时间递减,在某一类容器的ttl减为0时,会将该容器类型从缓存中删除。
123.本技术实施例通过调度运算结果复用的方式,能够有效加速调度过程。这里,以包括10个节点的集群为例,假设缓存中存在与待调度程序类型相同的同类容器的调度运算结果,则在理想情况下,与原始的通过计算的调度运算过程相比,可通过调度运算结果复用的方式,减少10*3*4=120次调度计算,有效加速调度过程。
124.由此可见,本技术实施例所提供的容器调度方法,在待调度容器满足预设条件后,从缓存中获取与待调度容器类型相同的同类容器对应的同类调度运算结果;基于同类调度运算结果执行调度,得到待调度容器的目标调度结果。如此,通过复用同类调度运算结果的方式,能够在计算资源相同的情况下,有效加速调度过程,减少调度计算次数。
125.本技术在上述实施例的基础上,还提供了一种容器调度装置60,如图6所示,该装置60可以包括:判定模块61、获取模块62和处理模块63;
126.判定模块61,用于判定待调度容器满足预设条件;
127.获取模块62,用于获取缓存中,与所述待调度容器类型相同的同类容器对应的同类调度运算结果;所述缓存中包括已完成调度的各类容器对应的调度运算结果;
128.处理模块63,用于基于获取到的所述同类调度运算结果执行调度,得到所述待调度容器的目标调度结果。
129.基于上述实施例,所述预设条件包括:
130.所述缓存中存在与所述待调度容器类型相同的同类容器。
131.基于上述实施例,所述预设条件还包括:
132.在预设时间内,所述待调度容器对应的集群中节点未发生增加、删除、或者改写的操作;
133.和/或,
134.所述待调度容器对应的集群资源在所述预设时间内未发生变化。
135.基于上述实施例,所述缓存中的同类调度运算结果包括已完成调度的同类容器在多个调度运算阶段分别对应的调度运算子结果;
136.所述处理模块63还可以包括:获取子模块和确定子模块,其中,
137.所述获取子模块,用于从i取值为1开始,从所述缓存中,依次获取所述同类容器在第i个调度运算阶段对应的第i调度运算子结果;其中,i为大于等于1小于等于n的整数,n为调度运算阶段的总数;
138.所述第一确定子模块,用于基于所述第i调度运算子结果执行第一运算处理,得到
所述待调度容器在所述第i个调度运算阶段的目标调度运算子结果;所述第一运算处理是指在每个调度运算阶段,对所述待调度容器执行的全量运算处理中的必要运算处理;直至i取值为n,得到所述待调度容器的第n个调度运算阶段的目标调度运算子结果;基于所述第n个调度运算阶段的目标调度运算子结果,确定所述目标调度结果。
139.基于上述实施例,所述处理模块63还可以包括:第二确定子模块,所述第二确定子模块,用于若所述缓存中不存在所述第i调度运算子结果,则对所述待调度容器执行在所述第i个调度运算阶段的第二运算处理,得到所述待调度容器在所述第i个调度运算阶段对应的所述目标调度运算子结果;所述第二运算处理是指在每个调度运算阶段,对所述待调度容器执行的全量运算处理。
140.基于上述实施例,所述第二确定子模块还用于将所述待调度容器在每个调度运算阶段对应的目标调度运算子结果添加至所述缓存中。
141.基于上述实施例,所述装置60还可以包括:计算模块,所述计算模块,用于若所述待调度容器不满足所述预设条件,则根据全量调度运算流程执行调度,得到所述待调度容器的目标调度结果。
142.基于上述实施例,所述装置60还可以包括:更新模块,所述更新模块,用于更新所述缓存中所述同容类器对应的有效性时间;所述有效性时间用于表征所述同类容器对应的所述同类调度运算结果能够被获取的时间范围。
143.以上装置实施例的描述,与上述方法实施例的描述是类似的,具有同方法实施例相似的有益效果。对于本技术装置实施例中未披露的技术细节,请参照本技术方法实施例的描述而理解。
144.本技术在上述实施例的基础上,还提供了一种电子设备,对应于一种容器调度方法。在本技术实施例中,该电子设备中可以集成有上述实施例中的容器调度装置或电子设备。
145.图7为本技术实施例的电子设备的硬件组成结构示意图,如图7所示,本技术实施例提出的电子设备可以包括处理器71、以及存储有所述处理器可执行指令的存储器72;
146.所述处理器71和所述存储器72通过总线73连接;
147.所述处理器71,运行所述存储器72中存储的计算机程序时,可以执行以下指令:
148.判定待调度容器满足预设条件;
149.获取缓存中与所述待调度容器类型相同的同类容器对应的同类调度运算结果;所述缓存中包括已完成调度的各类容器对应的调度运算结果;
150.基于获取到的所述同类调度运算结果执行调度,得到所述待调度容器的目标调度结果。
151.在本技术提供的实施例中,上述处理器71可以为特定用途集成电路(application specific integrated circuit,asic)、数字信号处理器(digital signal processor,dsp)、数字信号处理装置(digital signal processing device,dspd)、可编程逻辑装置(progmable logic device,pld)、现场可编程门阵列(field progmable gate array,fpga)、中央处理器(central processing unit,cpu)、控制器中的至少一种。可以理解地,对于不同的设备,用于实现上述处理器功能的电子器件还可以为其它,本技术实施例不作具体限定。
152.在实际应用中,存储器72可以是易失性存储器(volatile memory),例如ram;或者非易失性存储器(non-volatile memory),例如rom,快闪存储器(flash memory),硬盘(hard disk drive,hdd)或固态硬盘(solid-state drive,ssd);或者上述种类的存储器的组合,并向处理器71提供指令和数据。
153.本技术实施例还提供了一种计算机存储介质,具体为计算机可读存储介质。其上存储有计算机指令,在计算机存储介质位于电子设备时,该计算机指令被处理器执行时实现本技术实施例上述容器调度方法中的任意步骤。
154.在本技术所提供的几个实施例中,应该理解到,所揭露的设备和方法,可以通过其它的方式实现。以上所描述的设备实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,如:多个单元或组件可以结合,或可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的各组成部分相互之间的耦合、或直接耦合、或通信连接可以是通过一些接口,设备或单元的间接耦合或通信连接,可以是电性的、机械的或其它形式的。
155.上述作为分离部件说明的单元可以是、或也可以不是物理上分开的,作为单元显示的部件可以是、或也可以不是物理单元,即可以位于一个地方,也可以分布到多个网络单元上;可以根据实际的需要选择其中的部分或全部单元来实现本实施例方案的目的。
156.另外,在本技术各实施例中的各功能单元可以全部集成在一个处理单元中,也可以是各单元分别单独作为一个单元,也可以至少两个单元集成在一个单元中;上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
157.本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:移动存储设备、rom、ram、磁碟或者光盘等各种可以存储程序代码的介质。
158.或者,本技术上述集成的单元如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本技术实施例的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机、服务器、或者网络设备等)执行本技术各个实施例所述方法的全部或部分。而前述的存储介质包括:移动存储设备、rom、ram、磁碟或者光盘等各种可以存储程序代码的介质。
159.需要说明的是:本技术实施例所记载的技术方案之间,在不冲突的情况下,可以任意组合。
160.以上所述,仅为本技术的具体实施方式,但本技术的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本技术揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本技术的保护范围之内。因此,本技术的保护范围应以所述权利要求的保护范围为准。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1