一种资源调度方法、装置、设备及存储介质与流程

文档序号:31532197发布日期:2022-09-16 20:43阅读:57来源:国知局
一种资源调度方法、装置、设备及存储介质与流程

1.本技术实施例涉及云计算技术领域,涉及但不限于一种资源调度方法、装置、设备及存储介质。


背景技术:

2.在kubernetes集群中,一个服务或应用通常会与同一系统内,乃至外部的服务进行交互和通信。企业系统中的一个应用往往需要几十个、甚至数百个单独服务的协同工作,导致微服务架构的应用拓扑结构变得更加复杂,服务之间的交互稳定性降低,一个服务的故障可能会影响调用链上其它服务,形成雪崩效应。对于某些相互依赖的服务,假如这些服务分布在集群中的不同节点,当集群中某个节点故障或节点间网络通信出现故障时,依赖该节点上某些服务的其他服务、应用会收到不同程度的影响,甚至无法正常工作。此时,运维人员只能等待kubernetes进行服务迁移或手动将该服务迁移至其他可用节点,服务的可用性将会受到影响。
3.原生的kubernetes调度器的调度策略虽然可以用来应对节点资源分配不均的问题,比如balancedresourceallocation。但是kubernetes的原生调度器对实际的资源使用情况无法进行感知,都是基于静态的配置进行分配。由于资源分配是静态的,不能代表资源真实使用情况,节点的中央处理器和内存利用率则会经常处于不均衡的状态。


技术实现要素:

4.有鉴于此,本技术实施例提供一种资源调度方法、装置、设备及存储介质。
5.本技术实施例的技术方案是这样实现的:
6.第一方面,本技术实施例提供一种资源调度方法,应用于kubernetes集群,所述方法包括:
7.确定所述kubernetes集群中变化的调度策略;基于所述变化的调度策略,更新所述kubernetes集群中每一节点缓存中的调度策略集合;获取所述kubernetes集群中新建pod的部署策略;基于所述部署策略,在更新的调度策略集合中确定目标调度策略;基于所述目标调度策略,在所述kubernetes集群的节点集合中确定目标节点;将所述新建pod部署至所述目标节点。
8.第二方面,本技术实施例提供一种资源调度装置,所述装置包括:
9.第一确定模块,用于确定所述kubernetes集群中变化的调度策略;更新模块,用于基于所述变化的调度策略,更新所述kubernetes集群中每一节点缓存中的调度策略集合;获取模块,用于获取所述kubernetes集群中新建pod的部署策略;第二确定模块,用于基于所述部署策略,在更新的调度策略集合中确定目标调度策略;第三确定模块,用于基于所述目标调度策略,在所述kubernetes集群的节点集合中确定目标节点;部署模块,用于将所述新建pod部署至所述目标节点。
10.第三方面,本技术实施例提供一种电子设备,包括存储器和处理器,所述存储器存
储有可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述方法。
11.第四方面,本技术实施例提供一种存储介质,存储有可执行指令,用于引起处理器执行时,实现上述方法。
12.本技术实施例中,首先确定所述kubernetes集群中变化的调度策略;基于所述变化的调度策略,更新所述kubernetes集群中每一节点缓存中的调度策略集合;然后获取所述kubernetes集群中新建pod的部署策略;基于所述部署策略,在更新的调度策略集合中确定目标调度策略;最后基于所述目标调度策略,在所述kubernetes集群的节点集合中确定目标节点;将所述新建pod部署至所述目标节点。这样,可以实现更好的调度弹性,根据不同服务(pod)的调用、资源使用特性动态地配置调度策略,以针对不同的服务类型采用更合适的调度策略;实现对调度策略进行热修改,在集群运行中根据实际需求调整调度策略。
附图说明
13.图1为本技术实施例提供的一种资源调度方法的实现流程示意图;
14.图2a为本技术实施例提供的一种调度策略的结构示意图;
15.图2b为本技术实施例提供的一种策略缓存的流程示意图;
16.图2c为本技术实施例提供的一种节点注释的示意图;
17.图3为本技术实施例提供的部署pod之后的节点资源对比图;
18.图4a为本技术实施例提供的一种pod部署示意图;
19.图4b为本技术实施例提供的一种pod部署示意图;
20.图5为本技术实施例提供的一种pod调度工作流程示意图;
21.图6a为本技术实施例提供的一种部署pod的流程示意图;
22.图6b为本技术实施例提供的一种部署pod的流程示意图;
23.图7为本技术实施例提供的一种节点优选的流程示意图;
24.图8为本技术实施例提供的一种资源调度装置的组成结构示意图;
25.图9为本技术实施例提供的电子设备的一种硬件实体示意图。
具体实施方式
26.为使本技术实施例的目的、技术方案和优点更加清楚,下面将结合本技术实施例中的附图,对申请实施例的具体技术方案做进一步详细描述。以下实施例用于说明本技术,但不用来限制本技术的范围。
27.在以下的描述中,涉及到“一些实施例”,其描述了所有可能实施例的子集,但是可以理解,“一些实施例”可以是所有可能实施例的相同子集或不同子集,并且可以在不冲突的情况下相互结合。
28.在以下的描述中,所涉及的术语“第一\第二\第三”仅仅是是区别类似的对象,不代表针对对象的特定排序,可以理解地,“第一\第二\第三”在允许的情况下可以互换特定的顺序或先后次序,以使这里描述的本技术实施例能够以除了在这里图示或描述的以外的顺序实施。
29.除非另有定义,本文所使用的所有的技术和科学术语与属于本技术的技术领域的技术人员通常理解的含义相同。本文中所使用的术语只是为了描述本技术实施例的目的,
不是旨在限制本技术。
30.对本技术实施例进行进一步详细说明之前,对本技术实施例中涉及的名词和术语进行说明,本技术实施例中涉及的名词和术语适用于如下的解释。
31.kubernetes,简称k8s,是用8代替名字中间的8个字符“ubernete”而成的缩写。是一个开源的,用于管理云平台中多个主机上的容器化的应用,提供了应用部署,规划,更新,维护的一种机制。
32.pod是k8s中的基本构建模块,代表着kubernetes的部署单元及原子运行单元,即一个应用程序的单一运行实例,通常由共享资源且关系紧密的一个或多个应用容器组成。
33.etcd,是kubernetes提供默认的存储系统,保存所有集群数据,使用时需要为etcd数据提供备份计划。
34.节点(node),是kubernetes中最小的计算硬件单元,是集群中单个机器的表示。
35.本技术实施例提供一种资源调度方法,应用于kubernetes集群,如图1所示,该方法包括:
36.步骤s110、确定所述kubernetes集群中变化的调度策略;
37.这里,调度策略即资源分配策略,可以是kubernetes的资源调度器在进行资源调度时通过调度策略将待调度的pod部署至合适的节点上。在实施过程中,可以根据实际情况设置多个预选方案,在需要部署pod的情况下,根据实际情况选择合适的预选方案。调度策略的结构可以定义为如图2a所示的策略结构。变化的调度策略,即用户根据实际需求对存储的调度策略进行新增、修改或删除后的调度策略。
38.在实施过程中,可以在kubernetes集群中新增统一调度策略模块,即策略配置图(configmap),对所有pod调度策略进行统一记录。用户可针对不同类型的服务灵活新增或修改相应的调度策略配置;确定该configmap发生改动,即可以确定kubernetes集群中变化的调度策略。
39.这里,变化的调度策略可以是新增的调度策略,也可以是基于原调度策略修改的调度策略,还可以是减少的调度策略。在实施过程中,可以通过设置监控程序监控调度策略configmap,以确定变化的调度策略;还可以设置在调度策略configmap中设置自动上报程序,在确定调度策略变化的情况下,上报变化的调度策略。
40.图2b为本技术实施例提供的一种策略缓存的流程示意图,如图2b所示,该流程示意图包括以下步骤:
41.步骤s21、监控策略是否更新;
42.这里,在kubernetes集群中新增统一策略配置图,用户可针对不同类型的服务灵活新增、修改相应的调度策略配置。在实施过程中,可以在集群中的每个节点新增守护程序监控策略配置图中的监控策略是否变化。
43.步骤s22、刷新内存缓存;
44.当确定该策略配置图发生变化时,将变化更新至每个节点内存中的调度策略缓存中。在实施过程中,可以通过新增节点内存中的调度策略缓存,实现存储最新的汇总调度策略。
45.执行以上步骤s21和s22,可以实现调度策略的热修改,即在集群运行中根据实际需求调整调度策略。
46.步骤s120、基于所述变化的调度策略,更新所述kubernetes集群中每一节点缓存中的调度策略集合;
47.在实施过程中,每一节点的缓存中可以存储最新的调度策略集合。这里,调度策略集合可以包括至少一种调度策略。如图2b所示,执行步骤s22,可以实现更新kubernetes集群中每一节点缓存中的调度策略集合。
48.在一些实施例中,每一节点的缓存中还可以存储节点的打分规则,用户可以根据实际需求新增、修改或删除该打分规则。这里,每一节点的分数可以是基于对硬件可用情况、节点服务性能以及节点调度性能实时监控确定的,还可以是根据历史及实时服务调用统计,针对每个部署服务确定的。
49.步骤s130、获取所述kubernetes集群中新建pod的部署策略;
50.在实施过程中,该部署策略可以是基于pod支撑的应用确定的,也可以是基于pod实现的功能确定的。举例来说,可以基于该应用的调用情况确定部署策略,也可以基于该pod对节点资源的需求确定部署策略。
51.步骤s140、基于所述部署策略,在更新的调度策略集合中确定目标调度策略;
52.在创建新的服务或pod的情况下,应用程序编程接口服务器(api server)可以根据pod的部署策略,在节点缓存中的调度策略集合中选择目标调度策略。举例来说,在部署策略为基于应用的调用情况的部署策略的情况下,可以选择基于调用关系的部署策略;在部署策略为基于pod对节点资源的需求的部署策略的情况下,可以选择基于节点效能的部署策略。
53.步骤s150、基于所述目标调度策略,在所述kubernetes集群的节点集合中确定目标节点;
54.在实施过程中,目标调度策略中至少包括对节点的打分规则,对完成打分的节点进行排序,可以在kubernetes集群的节点集合中确定目标节点。
55.步骤s160、将所述新建pod部署至所述目标节点。
56.本技术实施例中,首先确定所述kubernetes集群中变化的调度策略;基于所述变化的调度策略,更新所述kubernetes集群中每一节点缓存中的调度策略集合;然后获取所述kubernetes集群中新建pod的部署策略;基于所述部署策略,在更新的调度策略集合中确定目标调度策略;最后基于所述目标调度策略,在所述kubernetes集群的节点集合中确定目标节点;将所述新建pod部署至所述目标节点。这样,可以实现更好的调度弹性,根据不同服务的调用、资源使用特性动态地配置调度策略,以针对不同的服务类型采用更合适的调度策略;实现对调度策略进行热修改,在集群运行中根据实际需求调整调度策略。
57.在一些实施例中,更新的调度策略包括以下至少之一:基于节点效能的第一调度策略、基于调用关系的第二调度策略、基于所述节点效能和所述调用关系的第三调度策略;
58.上述步骤s140“基于所述部署策略,在更新的调度策略集合中确定目标调度策略”可以通过以下步骤实现:
59.步骤141、确定所述部署策略为基于所述节点效能的部署策略;
60.这里,节点效能可以综合考量节点的硬件可用情况(cpu、内存、磁盘等)、节点服务性能(服务吞吐量、服务响应时延等)以及节点调度性能(从pod创建到其被bind到host的耗时)。为了获得节点效能指标,在pod调度流程及运行周期中,可以引入服务调用及监控统计
组件。
61.步骤142、将所述第一调度策略确定为所述目标调度策略;
62.这里,用户可以基于实际调度需求将存储于节点缓存中的第一调度策略设置为基于节点效能的调度策略,在确定待部署pod的部署策略为基于节点效能的部署策略的情况下,将第一调度策略确定为目标调度策略,以满足pod的部署策略对节点效能的需求。
63.步骤143、确定所述部署策略为基于所述调用关系的部署策略;
64.这里,调用关系包括在pod支撑的服务运行的情况下,各节点之间的调用流量和调用频率等。在实施过程中,可以利用服务调用统计组件获取服务历史及实时的调用关系。
65.步骤144、将所述第二调度策略确定为所述目标调度策略;
66.这里,用户可以基于实际调度需求将存储于节点缓存中的第二调度策略设置为基于调用关系的调度策略,在确定待部署pod的部署策略为基于调用关系的部署策略的情况下,将第二调度策略确定为目标调度策略,以满足pod的部署策略对调用关系的需求。
67.步骤145、确定所述部署策略为基于所述节点效能和所述调用关系的部署策略;
68.步骤146、将所述第三调度策略确定为所述目标调度策略。
69.这里,用户可以基于实际调度需求将存储于节点缓存中的第三调度策略设置为基于节点效能和调用关系的调度策略,在确定待部署pod的部署策略为综合考虑节点效能和调用关系的部署策略的情况下,将第三调度策略确定为目标调度策略,以同时满足pod的部署策略对节点效能和调用关系的需求。
70.本技术实施例中,更新的调度策略包括以下至少之一:基于节点效能的第一调度策略、基于调用关系的第二调度策略、基于所述节点效能和所述调用关系的第三调度策略;确定所述部署策略为基于所述节点效能的部署策略;将所述第一调度策略确定为所述目标调度策略;确定所述部署策略为基于所述调用关系的部署策略;将所述第二调度策略确定为所述目标调度策略;确定所述部署策略为基于所述节点效能和所述调用关系的部署策略;将所述第三调度策略确定为所述目标调度策略。这样,可以基于pod的部署策略选择合适的调度策略,以满足pod的部署需求。
71.在一些实施例中,上述步骤s150“基于所述目标调度策略,在所述kubernetes集群的节点集合中确定目标节点”可以通过以下步骤实现:
72.步骤151、基于所述kubernetes集群中每一节点的资源信息确定候选节点集合;
73.在实施过程中,可以首先为待部署的pod过滤集群中不适合运行的节点,即,可以基于kubernetes集群中每一节点的资源信息,确定存在运行问题,或者已经没有可以利用资源的节点,将以上节点滤除,以确定候选节点集合。
74.步骤152、基于所述第一调度策略,获取所述候选节点集合中每一节点的硬件可用信息、服务性能信息和调度性能信息;
75.这里,第一调度策略即基于节点效能的调度策略。需要获取候选节点集合中每一节点的硬件可用信息、服务性能信息和调度性能信息,以对每一节点进行打分。其中,硬件可用信息至少包括cpu、内存和磁盘等硬件的利用率;服务性能信息至少包括服务吞吐量和服务响应时延等信息;调度性能信息至少包括每一节点绑定的pod数量和每一pod从创建到其被绑定到节点的耗时。
76.在实施过程中,在pod调度流程及运行周期中,可以通过新增服务调用及监控统计
组件,实现对接服务流量采集数据及资源监控组件,其中,监控统计组件用于实时监控每一节点的硬件可用信息、服务性能信息和调度性能信息,监控统计组件还可以将系统中采集的监控数据,包括硬件使用情况、节点上pod的调度性能,定期同步到节点注释(annotation)中。在调度时可以更好地感知集群的实际运行情况,从而最终达到pod调度后集群资源得到有效利用的效果。
77.图2c为本技术实施例提供的一种节点注释的示意图,如图2c所示,该示意图包括:节点注释23,用于存储可用cpu信息(avaiable_cpu)、可用内存信息(avaiable_memory)、服务吞吐量(service.throught)、服务响应时延(service.latency)和绑定时间(scheduler.bindtime)。
78.步骤153、基于所述候选节点集合中每一节点的硬件可用信息、服务性能信息和调度性能信息,对所述每一节点打分,得到节点打分排序;
79.步骤154、基于所述节点打分排序,在所述候选节点集合中确定目标节点。
80.在实施过程中,对候选节点集合中每一节点进行打分排序,选择分数最高的节点为目标节点。
81.图3为本技术实施例提供的部署pod之后的节点资源对比图,如图3所示,左边部分为现有技术完成pod部署后的节点资源,右边部分基于第一调度策略,获取候选节点集合中每一节点的硬件可用信息、服务性能信息和调度性能信息,并、基于候选节点集合中每一节点的硬件可用信息、服务性能信息和调度性能信息,对所述每一节点打分,完成pod部署后的节点资源。
82.图3左边部分:新pod被调度至node2,但该节点的资源实际利用率缺较低,空闲资源没有得到有效利用。
83.图3右边部分:node1在同样的资源分配情况下,可分配资源得到重新计算,从而新的业务pod可以被调度至该节点,提升了节点的资源利用率。
84.本技术实施例中,首先基于kubernetes集群中每一节点的资源信息确定候选节点集合;然后,在确定调度策略为第一调度策略的情况下,获取所述候选节点集合中每一节点的硬件可用信息、服务性能信息和调度性能信息;基于所述候选节点集合中每一节点的硬件可用信息、服务性能信息和调度性能信息,对所述每一节点打分,得到节点打分排序;最后基于所述节点打分排序,在所述候选节点集合中确定目标节点。这样,通过对系统资源和服务的实时监控,实现动态的集群运行状态感知,可以有效将效能最高的节点确定为目标节点。
85.在一些实施例中,上述步骤s150“基于所述目标调度策略,在所述kubernetes集群的节点集合中确定目标节点”还包括以下步骤:
86.步骤155、基于所述第二调度策略,获取所述候选节点集合中每一节点关联所述新建pod的调用分数;
87.在实施过程中,确定目标调度策略为第二调度策略的情况下,即确定基于调用关系的调度策略为目标调度策略。
88.步骤156、基于所述候选节点集合中每一节点关联所述新建pod的调用分数,对所述每一节点打分,得到所述节点打分排序。
89.在实施过程中,在pod调度流程及运行周期中,可以通过新增服务调用及监控统计
组件,实现对接服务流量采集数据及资源监控组件,其中,服务调用统计组件获取服务历史及实时的调用关系,统计服务调用信息、每个节点的历史资源使用情况以及每个节点的pod调度详情,并对所有节点进行打分。
90.关联所述新建pod的调用分数可以是基于预测每一节点部署新建pod后,运行该pod支撑应用需要消耗的调度流量确定的。可以基于历史及实时服务调用信息统计,针对每个部署服务,计算每个节点对应的调用关系分数;并将计算所得分数定期维护至etcd表中。
91.图4a为本技术实施例提供的一种pod部署示意图,如图4a所示,调用关系频繁的服务被调度至不同节点,当node2发生故障时,pod1与pod2提供的服务都会受到影响。
92.图4b为本技术实施例提供的一种pod部署示意图,如图4b所示,在新建pod时,基于节点的调用分数,将调用关系频繁的服务被调度至同一节点,当node2发生故障时,node1上的3个服务均无影响。
93.比对图4a和图4b,可以看出图4b基于调用分数部署的pod,在节点发生故障的情况下,对服务的影响小于图4a部署的pod。
94.本技术实施例中,确定目标调度策略为第二调度策略的情况下,获取所述候选节点集合中每一节点关联所述新建pod的调用分数;基于所述候选节点集合中每一节点关联所述新建pod的调用分数,对所述每一节点打分,得到所述节点打分排序。这样,通过对服务调用情况的实时监控,实现动态的集群运行状态感知,可以有效将关联新建pod的调用分数最高的节点确定为目标节点。使得相关性较高的服务在集群kubernetes中的分布较为紧密,当系统中某节点发生故障/掉线时,对其他节点上的应用服务影响得到降低;同理,当系统正常运行时,节点间的网络流量/负载得到降低。
95.在一些实施例中,上述步骤s150“基于所述目标调度策略,在所述kubernetes集群的节点集合中确定目标节点”还包括以下步骤:
96.步骤157、基于所述第三调度策略,获取所述候选节点集合中每一节点的硬件可用信息、服务性能信息、调度性能信息、关联所述新建pod的调用分数;
97.在实施过程中,通过读取节点annotation中的资源使用情况,获取候选节点集合中每一节点的硬件可用信息、服务性能信息、调度性能信息;读取etcd中“服务-节点调用分数”,获取关联所述新建pod的调用分数。
98.步骤158、基于所述候选节点集合中每一节点的硬件可用信息、服务性能信息、调度性能信息、关联所述新建pod的调用分数,对所述每一节点打分,得到所述节点打分排序。
99.在实施过程中,可以基于节点上现存服务与待部署服务间的调用分数,在节点资源使用率低于阈值时,优先将服务调度至“服务-节点调用关系分数”较高的节点上。其中,“服务-节点调用关系分数”,由服务调用及监控统计组件计算写入,用于打分模块计算各节点调度排序分数。
100.举例来说,在节点打分排序阶段,可以使用以下公式(1),计算每一节点的总分数:
101.总分数=a*norm(资源分数)+b*norm(调用分数)(1);
102.其中,调度策略中配置的a和b代表了用户在资源与调用关系间的倾向,norm()表示的对分数归一化操作,可以使用以下公式(2)进行归一化计算:
103.104.其中,max为所有节点分数的最大值,min为最小值,x为当前节点的资源分数或调用分数。
105.本技术实施例中,确定目标调度策略为第三调度策略的情况下,获取所述候选节点集合中每一节点的硬件可用信息、服务性能信息、调度性能信息、关联所述新建pod的调用分数;基于所述候选节点集合中每一节点的硬件可用信息、服务性能信息、调度性能信息、关联所述新建pod的调用分数,对所述每一节点打分,得到所述节点打分排序。这样,可以综合节点效能和调用关系计算出得分最高的节点。
106.在一些实施例中,上述步骤152中“获取所述候选节点集合中每一节点的硬件可用信息、服务性能信息和调度性能信息”可以通过以下步骤实现:
107.步骤1521、基于所述节点的内存使用率、cpu使用率和磁盘使用率确定所述硬件可用信息;
108.在实施过程中,可以基于以下公式(3),得到节点的硬件可用信息分数:
[0109][0110]
其中,s
hardware
表示该节点的硬件可用信息分数,usage
cpu
表示该节点的cpu利用率,usage
memory
表示该节点的内存利用率。
[0111]
步骤1522、基于所述节点的服务吞吐量和服务响应时延确定所述服务性能信息;
[0112]
在实施过程中,可以基于以下公式(4),得到节点的服务性能信息分数:
[0113][0114]
其中,s
service
表示该节点的服务性能信息分数,elaspedn表示该节点上部署的第n个pod的服务响应时延,throughputn表示该节点上部署的第n个pod的服务吞吐量。
[0115]
步骤1523、基于所述节点的pod部署时长和被绑定的pod数量确定所述调度性能信息。
[0116]
在实施过程中,可以基于以下公式(5),得到节点的调度性能信息分数:
[0117][0118]
其中,s
schedule
表示该节点的调度性能信息分数,bindtimen表示该节点上部署的第n个pod的绑定时间,n
pod
表示该节点绑定的pod的数量。
[0119]
可以基于以下公式(6),得到节点的资源分数:
[0120][0121]
其中,score表示该节点的资源分数,α表示硬件可用信息分数的系数,β表示服务性能信息分数的系数,θ表示调度性能信息分数的系数。
[0122]
在实施过程中,该资源分数越高说明节点的效能越高,越适合部署pod。
[0123]
本技术实施例中,可以基于所述节点的内存使用率、cpu使用率和磁盘使用率,有
context)。
[0141]
调度过程51包括预过滤(pre-filter)、过滤(filter)、打分前(prescore)、打分(score)、标准打分(normalize score)、预定(reserve)和批准(permit)。调度过程51是调度的核心流程,执行以上步骤进行调度决策,挑选出唯一的节点。
[0142]
绑定过程52包括等待许可(waitonpermit)、预绑定(pre-bind)、绑定(bind)和后置绑定(post-bind)。执行以上步骤,可以将pod绑定至挑选出的唯一的节点。
[0143]
图5所示的pod调度策略为kubernetes自身的调度策略,即完全静态的调度策略,无法根据服务实际需求进行定制;在服务迁移过程中,服务将暂时不可用;迁移过程中存在服务无法拉起的风险。
[0144]
在现有技术中还存在以下两种pod调度方案:
[0145]
方案一、设置耦合度较高的服务pod的nodename,指定这些服务pod只能被调度到某个指定节点。例如:若服务pod1和pod2依赖程度较高,则设置调度方案为:nodename:nodex,即规定pod1和pod2只能被调度到nodex节点。
[0146]
方案二、设置亲和性调度,通过给服务指定一组节点或pod筛选条件,使得相关联服务被调度至同一节点。
[0147]
以上两种pod调度方案存在以下问题:
[0148]
方案一存在问题:不能有效利用kubernetes的调度策略,每个pod只能调度至指定节点。如果pod因为资源不足被驱逐,则不能调度到其他节点,导致服务不可用。
[0149]
方案二存在问题:只能由运维或开发人员手动更新部署服务的亲和配置,且该配置是静态的,无法根据集群实际的运行情况自动调整。
[0150]
图6a为本技术实施例提供的一种部署pod的流程示意图,如图6a所示,该流程示意图包括以下步骤:
[0151]
步骤s601、在需要创建pod的情况下,api服务获取预设策略;
[0152]
步骤s602、基于pod注释和预设策略调度pod,实现创建pod。
[0153]
这里,pod注释中至少包括pod的标识和部署策略,可以基于pod的部署策略和预设策略调度,实现创建pod。
[0154]
图6b为本技术实施例提供的一种部署pod的流程示意图,如图6b所示,该流程示意图包括以下步骤:
[0155]
步骤s610、分析控制器读取服务调用数据和监测数据;
[0156]
步骤s611、分析控制器分析监测数据得到资源分数,将监测数据和资源分数写入节点注释;分析控制器同时分析服务调用数据得到调用分数,将调用分数写入etcd;
[0157]
在实施过程中,分析控制器分析监测数据,并通过节点annotator组件将监测数据和资源分数写入至节点的annotation中;分析控制器同时分析服务调用数据,通过服务调用统计组件计算得出“服务-节点调用分数”,并写入etcd。
[0158]
步骤s612、获取pod注释;
[0159]
步骤s613、在需要创建pod的情况下,api服务从节点的策略缓存中获取最新策略;
[0160]
这里,kubernetes中的调度策略守护进程,会将调度策略configmap中的变更,实时更新至节点的调度策略缓存中。
[0161]
在实施过程中,当有创建pod的请求的情况下,api server会从调度策略缓存中读
取最新的调度策略,结合pod注释选取合适的调度策略。
[0162]
步骤s614、基于节点注释、etcd中的调用分数、pod注释和最新策略调度pod,实现创建pod。
[0163]
图6b所示的部署pod流程相较于图6a所示的部署pod流程,增加了节点注释和缓存最新策略。这样,使用图6b所示的部署pod流程具有以下有益技术效果:
[0164]
1、更好的调度弹性,可针对不同的服务类型采用更合适的调度策略;可对调度策略进行热修改,在集群运行中根据实际需求调整调度策略;
[0165]
2、通过对系统资源和服务的实时监控,实现动态的集群运行状态感知。
[0166]
图7为本技术实施例提供的一种节点优选的流程示意图,如图7所示,该流程示意图包括以下步骤:
[0167]
步骤s701、读取节点注释和调用分数;
[0168]
这里节点注释至少包括:节点实际可用资源详情,节点服务性能统计和节点调度性能统计。调用分数为分析控制器分析服务调用数据得到每一节点的调用分数。
[0169]
步骤s702、根据当前策略设定,计算节点分数并排序;
[0170]
策略至少包括:各节点指标的倾向权重。若选中的调度策略是基于服务的调用关系,则在调度的节点打分(优选)阶段,将结合节点的资源使用率情况与etcd中调用关系计算出的分数,得到最终打分。
[0171]
步骤s703、基于节点最终优选排序完成pod部署。
[0172]
在实施过程中,pod将在分数最高的节点上完成部署。
[0173]
执行以上步骤,可以完成节点的排序,选择目标节点,完成pod部署。
[0174]
基于前述的实施例,本技术实施例提供一种资源调度装置,该装置包括所包括的各模块,各模块包括各子模块,各子模块包括各单元,可以通过电子设备中的处理器来实现;当然也可通过具体的逻辑电路实现;在实施的过程中,处理器可以为中央处理器(cpu)、微处理器(mpu)、数字信号处理器(dsp)或现场可编程门阵列(fpga)等。
[0175]
图8为本技术实施例提供的资源调度装置的组成结构示意图,如图8所示,所述装置800包括:
[0176]
第一确定模块810,用于确定所述kubernetes集群中变化的调度策略;
[0177]
更新模块820,用于基于所述变化的调度策略,更新所述kubernetes集群中每一节点缓存中的调度策略集合;
[0178]
获取模块830,用于获取所述kubernetes集群中新建pod的部署策略;
[0179]
第二确定模块840,用于基于所述部署策略,在更新的调度策略集合中确定目标调度策略;
[0180]
第三确定模块850,用于基于所述目标调度策略,在所述kubernetes集群的节点集合中确定目标节点;
[0181]
部署模块860,用于将所述新建pod部署至所述目标节点。
[0182]
在一些实施例中,所述更新的调度策略包括以下至少之一:基于节点效能的第一调度策略、基于调用关系的第二调度策略、基于所述节点效能和所述调用关系的第三调度策略;所述第二确定模块840包括第一确定子模块、第二确定子模块、第三确定子模块、第四确定子模块、第五确定子模块和第六确定子模块,其中,所述第一确定子模块,用于确定所
述部署策略为基于所述节点效能的部署策略;所述第二确定子模块,用于将所述第一调度策略确定为所述目标调度策略;所述第三确定子模块,用于确定所述部署策略为基于所述调用关系的部署策略;所述第四确定子模块,用于将所述第二调度策略确定为所述目标调度策略;所述第五确定子模块,用于确定所述部署策略为基于所述节点效能和所述调用关系的部署策略;所述第六确定子模块,用于将所述第三调度策略确定为所述目标调度策略。
[0183]
在一些实施例中,所述第三确定模块830包括第七确定子模块、第一获取子模块、第一打分子模块和第八确定子模块,其中,所述第七确定子模块,用于于所述kubernetes集群中每一节点的资源信息确定候选节点集合;所述第一获取子模块,用于基于所述第一调度策略,获取所述候选节点集合中每一节点的硬件可用信息、服务性能信息和调度性能信息;所述第一打分子模块,用于基于所述候选节点集合中每一节点的硬件可用信息、服务性能信息和调度性能信息,对所述每一节点打分,得到节点打分排序;所述第八确定子模块,用于基于所述节点打分排序,在所述候选节点集合中确定目标节点。
[0184]
在一些实施例中,所述第三确定模块830还包括第二获取子模块和第二打分子模块,其中,所述第二获取子模块,用于基于所述第二调度策略,获取所述候选节点集合中每一节点关联所述新建pod的调用分数;所述第二打分子模块,用于基于所述候选节点集合中每一节点关联所述新建pod的调用分数,对所述每一节点打分,得到所述节点打分排序。
[0185]
在一些实施例中,所述第三确定模块830还包括第三获取子模块和第三打分子模块,其中,所述第三获取子模块,用于基于所述第三调度策略,获取所述候选节点集合中每一节点的硬件可用信息、服务性能信息、调度性能信息、关联所述新建pod的调用分数;所述第三打分子模块,用于基于所述候选节点集合中每一节点的硬件可用信息、服务性能信息、调度性能信息、关联所述新建pod的调用分数,对所述每一节点打分,得到所述节点打分排序。
[0186]
在一些实施例中,所述第一获取子模块包括第一确定单元、第二确定单元和第三确定单元,其中,所述第一确定单元,用于基于所述节点的内存使用率、cpu使用率和磁盘使用率确定所述硬件可用信息;所述第二确定单元,用于基于所述节点的服务吞吐量和服务响应时延确定所述服务性能信息;所述第三确定单元,用于基于所述节点的pod部署时长和被绑定的pod数量确定所述调度性能信息。
[0187]
在一些实施例中,所述第二获取子模块包括第四确定单元、第五确定单元和第六确定单元,其中,所述第四确定单元,用于确定与所述新建pod存在关联关系的至少一个服务和每一服务对应的调用流量;所述第五确定单元,用于确定所述每一服务部署的节点;所述第六确定单元,用于基于所述每一服务部署的节点和所述每一服务对应的调用流量,确定所述候选节点集合中每一节点关联所述新建pod的调用分数。
[0188]
在一些实施例中,所述第一确定模块810,还用于监控所述kubernetes集群的调度策略,以确定所述kubernetes集群中变化的调度策略。
[0189]
以上装置实施例的描述,与上述方法实施例的描述是类似的,具有同方法实施例相似的有益效果。对于本技术装置实施例中未披露的技术细节,请参照本技术方法实施例的描述而理解。
[0190]
需要说明的是,本技术实施例中,如果以软件功能模块的形式实现上述方法,并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理
解,本技术实施例的技术方案本质上或者说对相关技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得电子设备(可以是手机、平板电脑、笔记本电脑、台式计算机等)执行本技术各个实施例所述方法的全部或部分。而前述的存储介质包括:u盘、移动硬盘、只读存储器(read only memory,rom)、磁碟或者光盘等各种可以存储程序代码的介质。这样,本技术实施例不限制于任何特定的硬件和软件结合。
[0191]
对应地,本技术实施例提供一种存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述实施例中提供的资源调度方法中的步骤。
[0192]
对应地,本技术实施例提供一种电子设备,图9为本技术实施例提供的电子设备的一种硬件实体示意图,如图9所示,该设备900的硬件实体包括:包括存储器901和处理器902,所述存储器901存储有可在处理器902上运行的计算机程序,所述处理器902执行所述程序时实现上述实施例中提供的资源调度方法中的步骤。
[0193]
存储器901配置为存储由处理器902可执行的指令和应用,还可以缓存待处理器902以及电子设备900中各模块待处理或已经处理的数据(例如,图像数据、音频数据、语音通信数据和视频通信数据),可以通过闪存(flash)或随机访问存储器(random access memory,ram)实现。
[0194]
这里需要指出的是:以上存储介质和设备实施例的描述,与上述方法实施例的描述是类似的,具有同方法实施例相似的有益效果。对于本技术存储介质和设备实施例中未披露的技术细节,请参照本技术方法实施例的描述而理解。
[0195]
应理解,说明书通篇中提到的“一个实施例”或“一实施例”意味着与实施例有关的特定特征、结构或特性包括在本技术的至少一个实施例中。因此,在整个说明书各处出现的“在一个实施例中”或“在一实施例中”未必一定指相同的实施例。此外,这些特定的特征、结构或特性可以任意适合的方式结合在一个或多个实施例中。应理解,在本技术的各种实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本技术实施例的实施过程构成任何限定。上述本技术实施例序号仅仅为了描述,不代表实施例的优劣。
[0196]
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
[0197]
在本技术所提供的几个实施例中,应该理解到,所揭露的设备和方法,可以通过其它的方式实现。以上所描述的设备实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,如:多个单元或组件可以结合,或可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的各组成部分相互之间的耦合、或直接耦合、或通信连接可以是通过一些接口,设备或单元的间接耦合或通信连接,可以是电性的、机械的或其它形式的。
[0198]
上述作为分离部件说明的单元可以是、或也可以不是物理上分开的,作为单元显示的部件可以是、或也可以不是物理单元;既可以位于一个地方,也可以分布到多个网络单
元上;可以根据实际的需要选择其中的部分或全部单元来实现本实施例方案的目的。
[0199]
另外,在本技术各实施例中的各功能单元可以全部集成在一个处理单元中,也可以是各单元分别单独作为一个单元,也可以两个或两个以上单元集成在一个单元中;上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
[0200]
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:移动存储设备、只读存储器(read only memory,rom)、磁碟或者光盘等各种可以存储程序代码的介质。
[0201]
或者,本技术上述集成的单元如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本技术实施例的技术方案本质上或者说对相关技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得电子设备(可以是手机、平板电脑、笔记本电脑、台式计算机等)执行本技术各个实施例所述方法的全部或部分。而前述的存储介质包括:移动存储设备、rom、磁碟或者光盘等各种可以存储程序代码的介质。
[0202]
本技术所提供的几个方法实施例中所揭露的方法,在不冲突的情况下可以任意组合,得到新的方法实施例。
[0203]
本技术所提供的几个产品实施例中所揭露的特征,在不冲突的情况下可以任意组合,得到新的产品实施例。
[0204]
本技术所提供的几个方法或设备实施例中所揭露的特征,在不冲突的情况下可以任意组合,得到新的方法实施例或设备实施例。
[0205]
以上所述,仅为本技术的实施方式,但本技术的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本技术揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本技术的保护范围之内。因此,本技术的保护范围应以所述权利要求的保护范围为准。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1