一种容器组调度方法及装置与流程

文档序号:27502813发布日期:2021-11-22 16:33阅读:87来源:国知局
一种容器组调度方法及装置与流程

1.本技术涉及云计算技术领域,尤其涉及一种pod调度方法及装置。


背景技术:

2.kurbernetes(也称为k8s)是google开源的容器集群管理系统,它是一个完备的分布式支撑平台,具有完备的集群管理能力。同时,kurbernetes系统也是一个全新的基于容器技术的分布式架构领先方案,为容器化的应用提供部署运行、资源调度、服务发现、动态伸缩等一系列完整功能。
3.kurbernetes通常以集群的形式部署。kurbernetes集群包括多个节点,该多个节点被划分为管理节点(master)和工作节点(node)。其中,工作节点用于承载被分配(调度)的容器组(pod)的运行。
4.pod为kurbernetes集群的最小调度单位,一个pod可包含一个或多个相关容器,属于同一pod的多个容器共享网络、存储等资源。目前,pod调度主要按照pod列表中待调度pod的先后顺序依次调度,即,逐一为每一个待调度pod分配用于承载该pod的工作节点。但在实际使用中发现,该调度方式可能导致部分业务不可用。


技术实现要素:

5.有鉴于此,本技术提出一种pod调度方法及装置,用以保证用户业务可用性。
6.为实现上述申请目的,本技术提供了如下技术方案:
7.第一方面,本技术提供一种pod调度方法,应用于kurbernetes集群,所述方法包括:
8.确定所述集群中待调度的n个业务组的业务优先级排序,所述业务组包括用于实现该业务组对应业务的至少一个pod;
9.按照业务优先级从高到低的顺序,从所述n个业务组中,选择m个目标业务组,所述m个目标业务组的资源需求总量不大于所述集群的可用资源量;
10.针对每一个目标业务组,将该目标业务组中各pod调度至所述集群包括的工作节点。
11.可选的,所述确定所述集群中待调度的n个业务组的业务优先级排序,包括:
12.针对所述n个业务组中的每一个业务组,统计该业务组在预设统计时间段内的访问量;
13.根据各业务组的访问量,确定所述n个业务组的业务优先级排序,其中,访问量越高对应业务优先级越高。
14.可选的,所述根据各业务组的访问量,确定所述n个业务组的业务优先级排序之后,所述方法还包括:
15.如果所述n个业务组中存在业务组间访问量差值小于预设差值阈值的至少两个第一业务组,分别统计各第一业务组的资源占用率;
16.根据所述各第一业务组的资源占用率,更新所述n个业务组对应业务优先级排序中所述至少两个第一业务组之间的业务优先级顺序,其中,资源占用率越小对应业务优先级越高。
17.可选的,所述将该目标业务组中各pod调度至所述集群包括的工作节点,包括:
18.确定该目标业务组中各pod之间的调用关系;
19.针对该目标业务组中每一个pod,确定该pod在所述调用关系中所处调用层级;
20.按照调用层级从深到浅的顺序,依次将各pod调度至所述集群包括的工作节点。
21.可选的,所述针对每一个目标业务组,将该目标业务组中各pod调度至所述集群包括的工作节点之后,所述方法还包括:
22.如果所述n个业务组中存在未调度的第二业务组,且所述m个目标业务组中存在预设时间段内访问量小于预设访问量阈值的空闲目标业务组,且所述第二业务组的资源需求量不大于所述空闲目标业务组的资源需求量与所述集群剩余资源量的和,删除所述集群中所述空闲目标业务组对应各pod;
23.将所述第二业务组包括的各pod调度至所述集群包括的工作节点。
24.可选的,所述针对每一个目标业务组,将该目标业务组中各pod调度至所述集群包括的工作节点之后,所述方法还包括:
25.如果检测到新增工作节点,且所述m个目标业务组中存在预设时间段内访问量小于预设访问量阈值的空闲pod,将所述空闲pod迁移至所述新增工作节点。
26.第二方面,本技术提供一种pod调度装置,应用于kurbernetes集群,所述装置包括:
27.确定单元,用于确定所述集群中待调度的n个业务组的业务优先级排序,所述业务组包括用于实现该业务组对应业务的至少一个pod;
28.选择单元,用于按照业务优先级从高到低的顺序,从所述n个业务组中,选择m个目标业务组,所述m个目标业务组的资源需求总量不大于所述集群的可用资源量;
29.调度单元,用于针对每一个目标业务组,将该目标业务组中各pod调度至所述集群包括的工作节点。
30.可选的,所述确定单元确定所述集群中待调度的n个业务组的业务优先级排序,包括:
31.针对所述n个业务组中的每一个业务组,统计该业务组在预设统计时间段内的访问量;
32.根据各业务组的访问量,确定所述n个业务组的业务优先级排序,其中,访问量越高对应业务优先级越高。
33.可选的,所述装置还包括:
34.统计单元,用于在所述确定单元根据各业务组的访问量,确定所述n个业务组的业务优先级排序之后,如果所述n个业务组中存在业务组间访问量差值小于预设差值阈值的至少两个第一业务组,分别统计各第一业务组的资源占用率;
35.更新单元,用于根据所述各第一业务组的资源占用率,更新所述n个业务组对应业务优先级排序中所述至少两个第一业务组之间的业务优先级顺序,其中,资源占用率越小对应业务优先级越高。
36.可选的,所述调度单元将该目标业务组中各pod调度至所述集群包括的工作节点,包括:
37.确定该目标业务组中各pod之间的调用关系;
38.针对该目标业务组中每一个pod,确定该pod在所述调用关系中所处调用层级;
39.按照调用层级从深到浅的顺序,依次将各pod调度至所述集群包括的工作节点。
40.可选的,所述装置还包括:
41.删除单元,用于在所述调度单元针对每一个目标业务组,将该目标业务组中各pod调度至所述集群包括的工作节点之后,如果所述n个业务组中存在未调度的第二业务组,且所述m个目标业务组中存在预设时间段内访问量小于预设访问量阈值的空闲目标业务组,且所述第二业务组的资源需求量不大于所述空闲目标业务组的资源需求量与所述集群剩余资源量的和,删除所述集群中所述空闲目标业务组对应各pod;
42.所述调度单元,还用于将所述第二业务组包括的各pod调度至所述集群包括的工作节点。
43.可选的,所述装置还包括:
44.迁移单元,用于在所述调度单元针对每一个目标业务组,将该目标业务组中各pod调度至所述集群包括的工作节点之后,如果检测到新增工作节点,且所述m个目标业务组中存在预设时间段内访问量小于预设访问量阈值的空闲pod,将所述空闲pod迁移至所述新增工作节点。
45.由以上描述可以看出,本技术实施例中,按照用户业务对pod进行划分,属于同一业务的pod划入同一业务组,针对不同业务组确定业务优先级,然后,基于不同业务优先级确定各业务组调度顺序,且在集群可用资源满足业务组资源需求的情况下进行调度,因此,可保证被调度业务组对应业务正常运行,即,保证业务可用性。
附图说明
46.为了更清楚地说明本技术实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
47.图1是本技术实施例示出的一种pod调度方法流程图;
48.图2是本技术实施例示出的一种步骤101的实现流程;
49.图3是本技术实施例示出的一种业务优先级排序更新流程;
50.图4是本技术实施例示出的一种步骤103的实现流程;
51.图5是本技术实施例示出的一种业务组内各pod调用关系示例;
52.图6是本技术实施例示出的一种pod调度流程;
53.图7是本技术实施例示出的一种pod调度装置的结构示意图。
具体实施方式
54.这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例
中所描述的实施方式并不代表与本技术相一致的所有实施方式。
55.在本技术实施例使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本技术实施例。在本技术实施例中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
56.应当理解,尽管在本技术实施例可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本技术实施例范围的情况下,协商信息也可以被称为第二信息,类似地,第二信息也可以被称为协商信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在
……
时”或“当
……
时”或“响应于确定”。
57.本技术提供一种pod调度方法,该方法基于业务组对pod进行调度,可有效保证被调度业务组对应业务的可用性。
58.为了使本技术的目的、技术方案和优点更加清楚,下面结合附图和具体实施例对本技术执行详细描述:
59.参见图1,为本技术实施例示出的一种pod调度方法流程图,该流程应用于kurbernetes集群。该kurbernetes集群包括至少一个工作节点(node),每一个工作节点用于承载被调度至本节点的pod的运行。
60.如图1所示,该流程可包括以下步骤:
61.步骤101,确定集群中待调度的n个业务组的业务优先级排序。
62.本技术实施例中,按照用户业务划分业务组,每一个业务组包括用于实现该业务组对应业务的至少一个pod。
63.本步骤针对当前待调度的n个业务组确定各业务组的业务优先级排序,具体确定业务优先级排序的过程在下文中描述,这里暂不赘述。
64.步骤102,按照业务优先级从高到低的顺序,从n个业务组中,选择m个目标业务组。
65.即,选择业务优先级较高的前m个业务组。这里,将选择出的前m个业务组均称为目标业务组。可以理解的是,之所以称为目标业务组,只是为便于区分而进行的命名,并非用于限定。
66.该选择出的m个目标业务组的资源需求总量不大于集群的可用资源量,以保证该m个目标业务组被调度后均可正常运行。
67.步骤103,针对每一个目标业务组,将该目标业务组中各pod调度至集群包括的工作节点。
68.集群以pod为基本调度单位,将目标业务组包括的各pod逐一调度至集群的各工作节点,最终完成对每一个目标业务组的调度。
69.在具体调度时,可根据各工作节点的负载情况,将各pod均衡调度至各工作节点。
70.至此,完成图1所示流程。
71.通过图1所示流程可以看出,本技术实施例中,按照用户业务对pod进行划分,将属于同一业务的pod划入同一业务组,然后,按照不同业务组的业务优先级确定各业务组调度顺序,且在集群可用资源满足业务组资源需求的情况下进行调度,从而保证被调度业务组对应业务的正常运行,即,保证业务可用性。
72.下面对步骤101中确定n个业务组的业务优先级排序的过程进行描述。参见图2,本技术实施例示出的一种步骤101的实现流程。
73.如图2所示,该流程可包括以下步骤:
74.步骤201,针对n个业务组中的每一个业务组,统计该业务组在预设统计时间段内的访问量。
75.这里,预设统计时间段通常为业务访问较集中的时间段。比如,针对业务1的访问主要集中在8:00到18:00,则可设置业务1对应业务组的统计时间段为8:00到18:00;针对业务2的访问主要集中在20:00到24:00,则可设置业务2对应业务组的统计时间段为20:00到24:00。
76.本步骤通过对各业务组在对应访问较集中时间段进行统计,来确定各业务组的访问情况。
77.步骤202,根据各业务组的访问量,确定n个业务组的业务优先级排序,其中,访问量越高对应业务优先级越高。
78.这里,以4个业务组为例,该4个业务组分别为group1~group4。如果通过步骤201确定group1的访问量为50万次、group2的访问量为10万次、group3的访问量为30.05万次、group4的访问量为30万次,则该4个业务组的业务优先级排序(从高到低)为group1

group3

group4

group2。
79.至此,完成图2所示流程。
80.通过图2所示流程可以看出,本技术实施例基于业务访问量确定各业务组的业务优先级排序,从而保证业务访问量大的业务组优先调度(尤其在集群资源不足时),因此,可使集群资源利用更加合理。
81.作为一个实施例,在执行步骤202之后,还可执行图3所示业务优先级排序更新流程。如图3所示,该流程可包括以下步骤:
82.步骤301,如果n个业务组中存在业务组间访问量差值小于预设差值阈值的至少两个第一业务组,分别统计各第一业务组的资源占用率。
83.这里,将n个业务组中访问量差值小于预设差值阈值的至少两个业务组均称为第一业务组。可以理解的是,之所以称为第一业务组,只是为了便于区分而进行的命名,并非用于限定。
84.该至少两个第一业务组间的访问量差值小于预设差值阈值,说明该至少两个第一业务组的访问量非常接近,此时,可分别统计每一个第一业务组的资源占用率。
85.比如,预设差值阈值为1千次,则根据前述group1~group4的访问量可知,group3与group4之间的访问量差值(30.05

30=0.05万次)小于预设差值阈值(1千次),此时,可分别统计group3、group4的资源占用率。
86.这里,资源占用率主要包括cpu占用率和内存占用率。其中,cpu占用率可为业务组中各pod的cpu资源需求总量占集群可用cpu资源的比率;内存占用率可为业务组中各pod的内存资源需求总量占集群可用内存资源的比率。
87.仍以group3、group4为例,参见表1,为本技术实施例示出的group3包括的各pod的资源需求示例。
[0088][0089]
表1参见表2,为本技术实施例示出的group4包括的各pod的资源需求示例。
[0090][0091]
表2
[0092]
当前集群可用cpu资源为20m、内存资源为40gi,则group3的cpu占用率为(0.5+1+1+2+0.5+0.5)/20=27.5%,内存占用率为(512mi+1gi+512mi+2gi+512mi+512mi)/40gi=12.5%;group4的cpu占用率为(1+1+0.5+2+0.5+1)/20=30%,内存占用率为(1gi+1gi+512mi+1gi+512mi+512mi)/40gi=11.25%。
[0093]
步骤302,根据各第一业务组的资源占用率,更新通过步骤202已确定的业务优先级排序中至少两个第一业务组之间的业务优先级顺序,其中,资源占用率越小对应业务优先级越高。
[0094]
作为一个示例,可综合考虑各第一业务组的cpu占用率和内存占用率,确定该至少两个第一业务组之间的业务优先级顺序。
[0095]
仍以group3、group4为例,group3的cpu占用率为27.5%、内存占用率为12.5%;group4的cpu占用率为30%、内存占用率为11.25%,以上所有占用率中最小占用率为11.25%,该最小占用率对应group为group4,因此,可确定group4的业务优先级高于group3的业务优先级。基于此,更新前述步骤202已确定的业务优先级排序group1

group3

group4

group2为group1

group4

group3

group2。
[0096]
至此,完成图3所示流程。
[0097]
通过图3所示流程可以看出,本技术实施例中,结合各业务组的业务访问量以及资源占用率,来确定各业务组的业务优先级排序,基于该业务优先级排序进行资源调度,可使集群资源利用更加合理。
[0098]
下面对步骤103中将目标业务组中各pod调度至工作节点的过程进行描述。参见图
4,为本技术实施例示出的一种步骤103的实现流程。
[0099]
如图4所示,该流程可包括以下步骤:
[0100]
步骤401,确定目标业务组中各pod之间的调用关系。
[0101]
这里,需要说明的是,如果在本次调度之前,目标业务组曾正常运行过,则集群会记录该目标业务组中各pod的调用关系。参见图5,为本技术实施例示出的一种业务组内各pod的调用关系示例。
[0102]
如图5所示,该图以group4为例,示出group4内pod41~pod46的调用关系。其中,上层pod的运行依赖于下层pod的运行。比如,图5中,pod44的运行依赖于pod45和pod46的运行;再比如,pod42的运行依赖于pod44的运行,以此类推。
[0103]
步骤402,针对目标业务组中每一个pod,确定该pod在调用关系中所处调用层级。
[0104]
仍以图5所示group4的调用关系为例,从业务访问入口开始遍历该调用关系,可得到表3所示pod与调用层级的对应关系示例。
[0105][0106]
表3
[0107]
步骤403,按照调用层级从深到浅的顺序,依次将各pod调度至工作节点。
[0108]
仍以图5所示group4为例,该group4包括4个调用层级,如表3所示。其中,最深调用层级为第四层,最浅调用层级为第一层,则按照调用层级从深到浅依次调度:位于第四层的pod45、pod46

位于第三层的pod44

位于第二层的pod42、pod43

位于第一层的pod41,从而保证被依赖的pod优先调度(优先启动)。
[0109]
至此,完成图4所示流程。
[0110]
通过图4所示流程可以看出,本技术实施例中,按照业务组中各pod的调用关系(依赖关系),优先调度被依赖pod,可有效避免因随机调度导致上层pod多次重启影响业务启动效率,换言之,本技术实施例按照依赖关系从下到上(从深到浅)调度业务组的各pod,可有效提升业务启动效率。
[0111]
作为一个实施例,在执行步骤103之后,还可执行图6所示pod调度流程。
[0112]
如图6所示,该流程可包括以下步骤:
[0113]
步骤601,如果n个业务组中存在未调度的第二业务组,且m个目标业务组中存在预设时间段内访问量小于预设访问量阈值的空闲目标业务组,且第二业务组的资源需求量不大于空闲目标业务组的资源需求量与集群剩余资源量的和,则删除集群中空闲目标业务组对应各pod。
[0114]
这里,需要说明的是,第二业务组可为n个业务组中任一未调度的业务组。较优地,该第二业务组可为未调度业务组中业务优先级最高的业务组。可以理解的是,之所以称为第二业务组,只是为便于区分而进行的命名,并非用于限定。
[0115]
此外,本技术实施例将预设时间段内访问量小于预设访问量阈值的目标业务组称为空闲目标业务组。可以理解的是,之所以称为空闲目标业务组,只是为便于区分而进行的命名,并非用于限定。
[0116]
该空闲目标业务组为m个目标业务组中访问量极小(小于预设访问量阈值)的目标业务组。如果该空闲目标业务组持续占用集群资源,会导致集群资源浪费。
[0117]
为此,本技术实施例考虑释放空闲目标业务组所占用资源,提供给新的业务组使用。具体地,集群判断未调度的第二业务组的资源需求量是否大于空闲目标业务组的资源需求量与当前集群剩余资源量的和,如果不大于,说明空闲目标业务组对应资源释放后集群的资源量可以满足第二业务组的资源需求,因此,本步骤删除集群中空闲目标业务组对应各pod,即,释放空闲目标业务组所占用资源,然后转步骤602。
[0118]
步骤602,将第二业务组包括的各pod调度至集群包括的工作节点。
[0119]
至此,完成图6所示流程。
[0120]
通过图6所示流程可以看出,本技术实施例通过将较空闲业务组所占用资源分配给未调度的新的业务组,使得集群资源利用率更高。
[0121]
作为一个实施例,在执行步骤103之后,集群可监测是否存在新增工作节点,比如,集群扩容导致工作节点增加。当监测到新增工作节点时,确定已调度的m个目标业务组中是否存在空闲pod,其中,该空闲pod为预设时间段内访问量小于预设访问量阈值的pod。
[0122]
如果存在空闲pod,则将空闲pod迁移至新增工作节点,以尽量均衡集群中各工作节点的负担,同时,由于仅针对空闲pod进行迁移,因此,可有效降低对已运行业务的影响。
[0123]
以上对本技术实施例提供的方法进行了描述,下面对本技术实施例提供的pod调度装置进行描述:
[0124]
参见图7,为本技术实施例提供的pod调度装置的结构示意图,该装置应用于kurbernetes集群,该装置包括:确定单元701、选择单元702以及调度单元703,其中:
[0125]
确定单元701,用于确定所述集群中待调度的n个业务组的业务优先级排序,所述业务组包括用于实现该业务组对应业务的至少一个pod;
[0126]
选择单元702,用于按照业务优先级从高到低的顺序,从所述n个业务组中,选择m个目标业务组,所述m个目标业务组的资源需求总量不大于所述集群的可用资源量;
[0127]
调度单元703,用于针对每一个目标业务组,将该目标业务组中各pod调度至所述集群包括的工作节点。
[0128]
作为一个实施例,所述确定单元701确定所述集群中待调度的n个业务组的业务优先级排序,包括:
[0129]
针对所述n个业务组中的每一个业务组,统计该业务组在预设统计时间段内的访问量;
[0130]
根据各业务组的访问量,确定所述n个业务组的业务优先级排序,其中,访问量越高对应业务优先级越高。
[0131]
作为一个实施例,所述装置还包括:
[0132]
统计单元,用于在所述确定单元701根据各业务组的访问量,确定所述n个业务组的业务优先级排序之后,如果所述n个业务组中存在业务组间访问量差值小于预设差值阈值的至少两个第一业务组,分别统计各第一业务组的资源占用率;
[0133]
更新单元,用于根据所述各第一业务组的资源占用率,更新所述n个业务组对应业务优先级排序中所述至少两个第一业务组之间的业务优先级顺序,其中,资源占用率越小对应业务优先级越高。
[0134]
作为一个实施例,所述调度单元703将该目标业务组中各pod调度至所述集群包括的工作节点,包括:
[0135]
确定该目标业务组中各pod之间的调用关系;
[0136]
针对该目标业务组中每一个pod,确定该pod在所述调用关系中所处调用层级;
[0137]
按照调用层级从深到浅的顺序,依次将各pod调度至所述集群包括的工作节点。
[0138]
作为一个实施例,所述装置还包括:
[0139]
删除单元,用于在所述调度单元703针对每一个目标业务组,将该目标业务组中各pod调度至所述集群包括的工作节点之后,如果所述n个业务组中存在未调度的第二业务组,且所述m个目标业务组中存在预设时间段内访问量小于预设访问量阈值的空闲目标业务组,且所述第二业务组的资源需求量不大于所述空闲目标业务组的资源需求量与所述集群剩余资源量的和,删除所述集群中所述空闲目标业务组对应各pod;
[0140]
所述调度单元703,还用于将所述第二业务组包括的各pod调度至所述集群包括的工作节点。
[0141]
作为一个实施例,所述装置还包括:
[0142]
迁移单元,用于在所述调度单元703针对每一个目标业务组,将该目标业务组中各pod调度至所述集群包括的工作节点之后,如果检测到新增工作节点,且所述m个目标业务组中存在预设时间段内访问量小于预设访问量阈值的空闲pod,将所述空闲pod迁移至所述新增工作节点。
[0143]
至此,完成图7所示装置的描述。本技术实施例中,按照用户业务对pod进行划分,将属于同一业务的pod划入同一业务组,然后,按照不同业务组的业务优先级确定各业务组调度顺序,且在集群可用资源满足业务组资源需求的情况下进行调度,从而保证被调度业务组对应业务的正常运行,即,保证业务可用性。
[0144]
以上所述仅为本技术实施例的较佳实施例而已,并不用以限制本技术,凡在本技术实施例的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本技术保护的范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1