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

文档序号:31567646发布日期:2022-09-20 21:13阅读:42来源:国知局
容器调度方法、容器调度装置及存储介质与流程

1.本发明总体上涉及计算机技术,更具体地涉及容器调度方法、容器调度装置及存储介质。


背景技术:

2.随着容器(container,一种软件单元,其可部署至网络节点并可以被调用)技术的流行,容器集群的规模也在持续增长。集群可能出现资源利用率在时间、空间上不平衡,造成资源浪费、性能下降等问题。因此,在现有容器调度策略基础上,需要结合更多的调度方法,达到节约资源、快速响应、提高性能等目的。


技术实现要素:

3.在下文中给出了关于本发明的简要概述,以便提供关于本发明的一些方面的基本理解。但是,应当理解,这个概述并不是关于本发明的穷举性概述。它并不是意图用来确定本发明的关键性部分或重要部分,也不是意图用来限定本发明的范围。其目的仅仅是以简化的形式给出关于本发明的某些概念,以此作为稍后给出的更详细描述的前序。
4.本发明提出容器调度方法、容器调度装置及存储介质,实现容器调用的快速响应、性能提升。
5.根据本发明的一个方面,提供一种容器调度方法,包括:获取与被调度容器存在调用关系的相关容器;至少根据所述被调度容器与所述相关容器之间的调用频次,从多个备选节点中选择用于所述被调度容器的调度节点;以及将所述被调度容器调度到所述调度节点。
6.在本发明的实施例中,还包括:获取所述相关容器所在的节点;其中,至少根据所述被调度容器与所述相关容器之间的调用频次,以及多个备选节点中的每个和所述相关容器所在的节点之间的通信时延,从多个备选节点中选择所述调度节点。
7.在本发明的实施例中,对于多个备选节点中的每个,基于所述调用频次与所述通信时延的乘积进行评分。
8.在本发明的实施例中,将进行所述评分的结果为最低的最低分备选节点选择为所述调用节点。
9.在本发明的实施例中,对于所述相关容器所在的节点以及所述调用节点进行分组;根据所述被调度容器与所述相关容器之间的调用频次,将所述被调度容器与所述相关容器进行聚类;比较所述聚类的结果,以及所述分组的结果;根据比较结果,确定是否调整用于所述被调度容器的所述调用节点。
10.在本发明的实施例中,至少根据物理位置和/或节点之间通信时延,对于所述相关容器所在的节点以及所述调用节点进行分组。
11.在本发明的实施例中,基于预定的用于聚类的簇数量,进行聚类。
12.在本发明的实施例中,根据资源利用率确定是否调整用于所述被调度容器的所述
调用节点。
13.在本发明的实施例中,通过贪心算法调整用于所述被调度容器的所述调用节点,以使资源分配平衡。
14.在本发明的实施例中,调整用于所述被调度容器的所述调用节点包括:假设每次将一个聚类中的一个容器分别划分到另一个聚类,然后至少根据所述一个聚类中的容器之间的调用频次,以及所述另一个聚类中的容器之间的调用频次,对于聚类结果进行评价;以及基于所述评价结果,选择将所述一个聚类中的一个容器划分到所述另一个聚类。
15.在本发明的实施例中,所述调用频次为单位时间内的调用频次。
16.根据本发明的另一个方面,提供一种容器调度装置,包括:存储器,其上存储有指令;以及处理器,被配置为执行存储在所述存储器上的指令,以执行上述的容器调度方法。
17.根据本发明的又一个方面,提供一种计算机可读存储介质,包括计算机可执行指令,所述计算机可执行指令在由一个或多个处理器执行时,使得所述一个或多个处理器执行上述的容器调度方法。
18.根据本发明的实施例,实现容器调用的快速响应、性能提升。
附图说明
19.构成说明书的一部分的附图描述了本发明的实施例,并且连同说明书一起用于解释本发明的原理。
20.参照附图,根据下面的详细描述,可以更清楚地理解本发明,其中:
21.图1为根据本发明的实施例的容器调度方法的示例性流程图。
22.图2为利用根据本发明的实施例的容器调度方法调度一个新容器的具体示意图。
23.图3为根据本发明的实施例的容器调度方法的更进一步动作的示例性流程图。
24.图4(a)至图4(c)为利用根据本发明的实施例的容器调度方法对调度容器动态调整的具体示意图。
25.图5(a)至图5(b)为表示本发明与现有技术的效果对比图。
26.图6示出了可以实现根据本发明的实施例的计算设备的示例性配置。
具体实施方式
27.参考附图进行以下详细描述,并且提供以下详细描述以帮助全面理解本发明的各种示例实施例。以下描述包括各种细节以帮助理解,但是这些细节仅被认为是示例,而不是为了限制本发明,本发明是由随附权利要求及其等同内容限定的。在以下描述中使用的词语和短语仅用于能够清楚一致地理解本发明。另外,为了清楚和简洁起见,可能省略了对公知的结构、功能和配置的描述。本领域普通技术人员将认识到,在不脱离本发明的精神和范围的情况下,可以对本文描述的示例进行各种改变和修改。
28.目前,容器集群调度主要基于预选策略和优选策略。
29.作为容器调度器(即,调度管理软件等)的一个示例,可以列举kube-scheduler等,其根本工作任务是根据各种调度算法将容器或者其集合(例如,pod)绑定(bind)到最合适的工作节点,整个调度流程可以分为两个阶段:预选策略(predicates)和优选策略(priorities)。
30.预选(predicates)是指,输入所有节点,输出是满足预选条件的节点。kube-scheduler根据预选策略过滤掉不满足策略的节点。例如,如果某节点的资源不足或者不满足预选策略的条件如“node的label必须与pod的selector一致”时则无法通过预选。
31.优选(priorities)是指,输入是预选阶段筛选出的节点,优选会根据优先策略为通过预选的节点进行打分排名,选择得分最高的节点。例如,资源越富裕、负载越小的节点可能具有越高的排名。
32.网络节点的示例可以是通信系统中的各种服务器或者服务器的集合(例如,机房),网络功能可以运行在容器上。
33.然而,这两种策略主要是从网络节点的资源(cpu、内存、硬盘、端口等)考虑,再结合用户设定的亲和性策略(节点、容器),无法从业务的角度出发(例如调用链),也无法在部署后根据容器集群的状态进行动态调整。
34.图1为根据本发明的实施例的容器调度方法的示例性流程图。本发明的实施例的容器调度方法可以包括步骤s101~s103。
35.如图1所示,在步骤s101中,获取与被调度容器存在调用关系的相关容器;在步骤s102中,至少根据被调度容器与相关容器之间的调用频次,从多个备选节点中选择用于被调度容器的调度节点;在步骤s103中,将被调度容器调度到调度节点。
36.例如,图1所示的容器调度方法基于调用链,即被调度容器与相关容器在调用链上存在调用关系。例如,被调度容器将要被调度到调度节点,在调度节点上运行。
37.在一些实施例中,上述容器调度方法可以还包括:获取相关容器所在的节点;其中,至少根据被调度容器与相关容器之间的调用频次,以及多个备选节点中的每个和相关容器所在的节点之间的通信时延,从多个备选节点中选择调度节点。
38.例如,相关容器所在的节点为容器运行的节点。多个备选节点与相关容器所在的节点之间分别存在通信时延。
39.在一些实施例中,对于多个备选节点中的每个,基于调用频次与通信时延的乘积进行评分。
40.尤其是,在具有多个相关容器时,基于调用频次与通信时延的乘积之和评分。即,对于多个备选节点中的每个,分别计算被调度容器与各个相关容器之间的调用频次与该备选节点和各个相关容器所在的节点之间的通信时延的乘积,然后求和。对于所有多个备选节点,基于每个备选节点的求和结果进行评分。
41.例如,获取某个备选节点和相关容器所在节点之间的通信时延后,乘以被调调度容器与相关容器之间的调用频次得到乘积,将多个这样的乘积相加(有几个调用关系就相加几个乘积),将得到的和作为评分依据,对每个备选节点评分。
42.在一些实施例中,将进行评分的结果为最低的最低分备选节点选择为调用节点。
43.下面对利用上述容器调度方法调度一个新容器的操作进行具体示例。图2为利用根据本发明的实施例的容器调度方法调度一个新容器的具体示意图。
44.如图2所示,例如,区域(region)是指不同地域的机房,比如华东区、华北区等。n1、n2为一个区域中的两个节点;n3、n4为另一个区域中的两个节点。b为容器集群中调度到一个区域中的节点n1的容器,c为容器集群中调度到另一个区域中的节点n4的容器,a为将要调度的新容器。从调用链可以看出,容器a可以调用容器c,a可以调用容器b。例如,调度一个
新容器a可以是指将容器a放到某个节点运行。下面描述调度一个新容器a的具体操作的一个例子。
45.首先,当需要调度一个新容器a时,计算该容器a与调用链上相连容器b、c的单位时间内调用频次frequency。例如,计算frequencyab=200次/秒,frequencyac=100次/秒。根据实际网络部署方式,也可以按照b调用a,c调用a的频次来计算。
46.然后,在满足其它调度策略(例如之前所述的预选策略和/或优选策略等)后,得到该容器a可调度的备选节点是n2、n3。
47.之后,根据备选节点n2、n3与每个调用链相连容器b、c所在节点n1、n4的时延timen以及上述调用频次frequency,根据下式1对每个备选节点打分。
48.(式1)
49.score=σfrequence*timen50.例如,备选节点n2与容器b所在节点n1的时延是timen2n1=0.3ms,备选节点n2与容器c所在节点n4的时延是timen2n4=1.8ms,备选节点n3与容器b所在节点n1的时延是timen3n1=1.7ms,备选节点n3与容器c所在节点n4的时延是timen3n4=0.4ms。备选节点n2的得分scoren2=0.3*200+1.8*100=240,备选节点n3的得分scoren3=1.7*200+0.4*100=380。
51.最后,将容器a调度到得分最低的备选节点n2上。即,n2为新容器a的调度节点。
52.根据本发明的实施例,基于被调度容器与相关容器之间的调用频次来调度节点,以实现容器的合理分布。在运行过程中,被调度容器与相关容器之间的调用将可以被快速响应,从而提升性能。
53.此外,还可以进行进一步的调整操作。图3为根据本发明的实施例的容器调度方法的更进一步动作的示例性流程图。本发明的实施例的容器调度方法可以还包括步骤s301~s304。
54.如图3所示,在步骤s301中,对于相关容器所在的节点以及调用节点进行分组;在步骤s302中,根据被调度容器与相关容器之间的调用频次,将被调度容器与相关容器进行聚类;在步骤s303中,比较聚类的结果,以及分组的结果;在步骤s304中,根据比较结果,确定是否调整用于被调度容器的调用节点。
55.在一些实施例中,至少根据物理位置和/或节点之间通信时延,对于相关容器所在的节点以及调用节点进行分组。
56.例如,分组的目的是对集群资源进行划分。比如有3个区域,两个是在北京,一个是在上海。根据物理位置和节点之间的通信时延,可以划分为2个组(北京的两个机房为1个组,上海的为一个组)。
57.容器聚类的目的可以是将调用关系比较密切的容器分在同一类。容器聚类后,比如有a,b两个类,那么可以将类a中的容器放到北京,类b中的容器放到上海。这样划分是因为,北京地区的容器调用关系比较密切(调用关系可以根据容器之间的调用频次等计算,例如调用频次越高,则关系越密切,可以认为距离越近(distance=1/frequency)),与上海地区的容器通信频率相对较低。同样地,上海地区的容器调用关系比较密切,与北京地区的容器通信频率相对较低。这样整体的通信时延就可以更低。
58.在一些实施例中,基于预定的用于聚类的簇数量,进行聚类。
59.例如,如果聚类的簇数为3,则可以容器a、b、c各为一个类别;如果簇数为2,a与b的调用频次更高,则ab为一个类,c为一个类;如果簇数为1,则abc为一个类。
60.在一些实施例中,根据资源利用率确定是否调整用于被调度容器的调用节点。
61.例如,将容器聚类然后对应于两组资源,然而,一组资源中容器过多,另一组资源中容器过少,则可能导致资源分配不平衡,影响资源利用率,此时需要调整用于被调度容器的调用节点,以使得资源分配平衡。
62.在一些实施例中,通过贪心算法调整用于被调度容器的调用节点,以使资源分配平衡。
63.例如,贪心算法是在对问题求解时,总是做出在当前看来是最好的选择。也就是说,不从整体最优上加以考虑,算法得到的是在某种意义上的局部最优解。
64.在一些实施例中,调整用于被调度容器的调用节点包括:假设每次将一个聚类中的一个容器分别划分到另一个聚类,然后至少根据一个聚类中的容器之间的调用频次,以及另一个聚类中的容器之间的调用频次,对于聚类结果进行评价;以及基于评价结果,选择将一个聚类中的一个容器划分到另一个聚类。
65.下面将描述利用上述容器调度方法进行动态调整的一个例子。图4(a)至图4(c)为利用根据本发明的实施例的容器调度方法对调度容器动态调整的具体示意图。
66.如图所示,图4(a)是最终的容器分布结果。在该图中,示出了调整之后,聚类结果与分组结果较为匹配的情况。
67.作为聚类结果的一个示例,图4(b)可以是最初聚类结果,a、c、d、e聚到了一个类1中,b单独聚到一个类2里。由于类1中容器太多,类2中容器比较少,资源分组是两个,导致资源分配不平衡,需要考虑例如将容器a划分到类2中。划分的依据可以是贪心算法。每次将类1中的一个容器划到类2中,可以计算划分后的各类中以及各类之间所有具有调用关系的容器之间调用频次与具有调用关系的两个容器所在节点的通信时延的乘积(如果两个容器间没有调用关系,则不计算该乘积)之和,然后将和最小时对应的容器划分到类2。如果资源仍不平衡,则继续上述操作。
68.例如,如图4(b)所示,如果将类1中的容器a划分到类2中,得到类1的c,d,e,以及类2的a,b。可以计算此时的类2中容器a调用容器b的频次与容器a所在节点和容器b所在节点的通信时延的乘积。然后,计算类2中容器a调用类1中容器c的频次与容器a所在节点和容器c所在节点的通信时延的乘积,并计算类1中容器c调用容器d的频次与容器c所在节点和容器d所在节点的通信时延的乘积,加上类1中容器c调用容器e的频次与容器c所在节点和容器e所在节点的通信时延的乘积,将上述所有乘积相加得到和。
69.同样地,如果将类1中的容器c划分到类2中,得到类1的a,d,e,以及类2的c,b。也可以计算此时的类1中容器a调用类2中容器b的频次与容器a所在节点和容器b所在节点的通信时延的乘积,计算类1中容器a调用类2中容器c的频次与容器a所在节点和容器c所在节点的通信时延的乘积,并计算类2中容器c调用类1中容器d的频次与容器c所在节点和容器d所在节点的通信时延的乘积加上类2中容器c调用类1中容器e的频次与容器c所在节点和容器e所在节点的通信时延的乘积,将上述乘积相加得到和。
70.以此类推,每次将类1中的某个容器划分到类2中,然后用上述类似的方式得到和。然后,将乘积之和最小时对应划分的容器(此示例中可以是a)从类1中划分到类2。
71.图4(c)是调整后的聚类结果。在图4(c)中,将在图4(b)中聚类为类1的容器a调整到类2中。并且,如图(a)所示,将容器类2中的容器a、b在节点分组1运行,将容器类1中的容器c、d、e在节点分组2运行。如此,可以得到图4(a)所述的较为均衡的分组和聚类匹配结果。
72.此外,在一些实施例中,调用频次可以为单位时间内的调用频次。例如,以次/秒为单位。
73.本发明的实施例涉及基于调用链的容器调度方法。将调用关系比较紧密且频繁的容器簇部署在相对靠近的节点上,并可以根据后续容器集群的部署情况,进行动态调整。通过该方法,可以实现容器调用的快速响应、性能提升。
74.图5(a)至图5(b)为表示本发明与现有技术的效果对比图。
75.如图所示,图5(a)所示的方案1对应于现有技术,图5(b)所示的方案2对应于本发明。根据图5(a)至图5(b)可知,现有技术的方案1需要在不同的区域中调用三次,即容器a调用容器b一次,容器b调用容器c一次,容器c调用容器d一次,而本发明的方案2只需在不同的区域中调用一次,即容器b调用容器c一次。
76.根据本发明的实施例,相对现有技术,本发明具有以下优点:本发明提出基于调用链的容器调度方法,充分利用了容器间的调度信息。包括两部分:在容器节点创建时的调度,以及根据容器集群的状态进行动态调整。使调用比较频繁的容器在物理节点中距离更近,从而节省网络的传输资源,以及减少调用时延,实现容器调用的快速响应、性能提升。本发明可以适用于云计算、微服务、容器及编排等。
77.本发明还提供容器调度装置,该容器调度装置包括:后述存储器,其上存储有指令;以及后述处理器,被配置为执行存储在存储器上的指令,以执行上述容器调度方法。
78.图6示出了可以实现根据本发明的实施例的计算设备的示例性配置。
79.计算设备600是能够应用本发明的上述方面的硬件设备的实例。计算设备600可以是被配置为执行处理和/或计算的任何机器。计算设备600可以是但不限制于工作站、服务器、台式计算机、膝上型计算机、平板计算机、个人数据助手(pda)、智能电话、车载计算机或以上组合。
80.如图6所示,计算设备600可以包括可以经由一个或多个接口与总线602连接或通信的一个或多个元件。总线602可以包括但不限于,工业标准架构(industry standard architecture,isa)总线、微通道架构(micro channel architecture,mca)总线、增强isa(eisa)总线、视频电子标准协会(vesa)局部总线、以及外设组件互连(pci)总线等。计算设备600可以包括例如一个或多个处理器604、一个或多个输入设备606以及一个或多个输出设备608。一个或多个处理器604可以是任何种类的处理器,并且可以包括但不限于一个或多个通用处理器或专用处理器(诸如专用处理芯片)。处理器602例如可以被配置为执行存储在所述存储器上的指令,以执行上述容器调度方法。输入设备606可以是能够向计算设备输入信息的任何类型的输入设备,并且可以包括但不限于鼠标、键盘、触摸屏、麦克风和/或远程控制器。输出设备608可以是能够呈现信息的任何类型的设备,并且可以包括但不限于显示器、扬声器、视频/音频输出终端、振动器和/或打印机。
81.计算设备600还可以包括或被连接至非暂态存储设备614,该非暂态存储设备614可以是任何非暂态的并且可以实现数据存储的存储设备,并且可以包括但不限于盘驱动器、光存储设备、固态存储器、软盘、柔性盘、硬盘、磁带或任何其他磁性介质、压缩盘或任何
其他光学介质、缓存存储器和/或任何其他存储芯片或模块、和/或计算机可以从其中读取数据、指令和/或代码的其他任何介质。计算设备600还可以包括随机存取存储器(ram)610和只读存储器(rom)612。rom 612可以以非易失性方式存储待执行的程序、实用程序或进程。ram610可提供易失性数据存储,并存储与计算设备600的操作相关的指令。计算设备600还可包括耦接至数据链路618的网络/总线接口616。网络/总线接口616可以是能够启用与外部装置和/或网络通信的任何种类的设备或系统,并且可以包括但不限于调制解调器、网络卡、红外线通信设备、无线通信设备和/或芯片集(诸如蓝牙tm设备、802.11设备、wifi设备、wimax设备、蜂窝通信设施等)。
82.本发明可以被实现为装置、系统、集成电路和非瞬时性计算机可读存储介质上的计算机程序的任何组合。可以将一个或多个处理器实现为执行本发明中描述的部分或全部功能的集成电路(ic)、专用集成电路(asic)或大规模集成电路(lsi)、系统lsi,超级lsi或超lsi组件。
83.本发明包括软件、应用程序、计算机程序或算法的使用。可以将软件、应用程序、计算机程序或算法存储在非瞬时性计算机可读存储介质上,以使诸如一个或多个处理器的计算机执行上述步骤和附图中描述的步骤。例如,一个或多个存储器以可执行指令存储软件或算法,并且一个或多个处理器可以关联执行该软件或算法的一组指令,以根据本发明中描述的实施例提供各种功能。
84.软件和计算机程序(也可以称为程序、软件应用程序、应用程序、组件或代码)包括用于可编程处理器的机器指令,并且可以以高级过程性语言、面向对象编程语言、功能性编程语言、逻辑编程语言或汇编语言或机器语言来实现。术语“计算机可读存储介质”是指用于向可编程数据处理器提供机器指令或数据的任何计算机程序产品、装置或设备,例如磁盘、光盘、固态存储设备、存储器和可编程逻辑设备(pld),包括将机器指令作为计算机可读信号来接收的计算机可读存储介质。
85.举例来说,计算机可读存储介质可以包括动态随机存取存储器(dram)、随机存取存储器(ram)、只读存储器(rom)、电可擦只读存储器(eeprom)、紧凑盘只读存储器(cd-rom)或其他光盘存储设备、磁盘存储设备或其他磁性存储设备,或可以用于以指令或数据结构的形式携带或存储所需的计算机可读程序代码以及能够被通用或专用计算机或通用或专用处理器访问的任何其它介质。如本发明中所使用的,磁盘或盘包括紧凑盘(cd)、激光盘、光盘、数字多功能盘(dvd)、软盘和蓝光盘,其中磁盘通常以磁性方式复制数据,而盘则通过激光以光学方式复制数据。上述的组合也包括在计算机可读存储介质的范围内。
86.提供本发明的主题作为用于执行本发明中描述的特征的方法、系统、和计算机可读存储介质的示例。但是,除了上述特征之外,还可以预期其他特征或变型。可以预期的是,可以用可能代替任何上述实现的技术的任何新出现的技术来完成本发明的部件和功能的实现。
87.另外,以上描述提供了示例,而不限制权利要求中阐述的范围、适用性或配置。在不脱离本发明的精神和范围的情况下,可以对所讨论的元件的功能和布置进行改变。各种实施例可以适当地省略、替代或添加各种过程或部件。例如,关于某些实施例描述的特征可以在其他实施例中被结合。
88.类似地,虽然在附图中以特定次序描绘了操作,但是这不应该被理解为要求以所
示的特定次序或者以顺序次序执行这样的操作,或者要求执行所有图示的操作以实现所希望的结果。在某些情况下,多任务处理和并行处理可以是有利的。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1