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

一种分布式的Kubernetes调度方法、系统、设备及介质与流程

2022-11-14 12:11:32 来源:中国专利 TAG:

一种分布式的kubernetes调度方法、系统、设备及介质
技术领域
1.本发明属于kubernetes调度技术领域,具体涉及一种分布式的kubernetes调度方法、系统、设备及介质。


背景技术:

2.pod是kubernetes集群中的最小调度单元,表示一组容器的集合。调度器作为核心组件,承担了pod的调度任务,当一个pod创建请求被发起后,调度器经过调度决策,将会决定将pod调度到哪一个工作节点。
3.如图1,目前kubernetes调度器的工作模式为中心化的调度模式,调度器作为单点工作,实现主备高可用;中心的调度器发现待调度任务后,会进行预选,即过滤出符合条件的调度器,然后进行优选对调度器进行打分,选择其中最合适的节点进行调度。
4.在现有技术中,存在单点故障问题,仅能进行主备高可用保障,且备用节点数量有限,相对边缘场景或极端场景的抗损毁要求来说,一旦调度器均发生宕机,则集群调度不可用。
5.此外,还存在性能瓶颈,单个调度器工作存在性能问题,在大规模部署的情况下,所有的调度逻辑集中在一个主控节点,存在调度瓶颈。
6.现有技术中存在同步延时和性能空耗,中心节点的节点数据与被调度器的真实状态存在延时,且大量的节点状态同步造成集群中的性能空耗。
7.此外,调度器结构臃肿,代码高度耦合,调度器因为是单点的原因,所有的调度逻辑都必须加入到这个中心化的调度器中,例如gpu调度、cpu绑定调度、负载独占等调度策略。


技术实现要素:

8.为了克服上述技术缺陷,本发明提供了一种分布式的kubernetes调度方法,能够提高调度性能。
9.为了解决上述问题,本发明按以下技术方案予以实现的:
10.一种分布式的kubernetes调度方法,包括如下步骤:
11.监听新的pod事件;
12.根据新的pod事件,对工作节点进行打分;
13.根据工作节点的分数,进行选举投票;
14.根据投票票数,确认当选的调度器;
15.根据工作节点的分数,在当选的调度器中确定进行调度的工作节点。
16.进一步的,步骤根据新的pod事件,对工作节点进行打分,包括如下步骤:
17.根据新的pod事件,对工作节点进行预选;
18.对预选出的工作节点进行打分,并选出最高分;
19.将最高分作为工作节点所属调度器的分数;
20.对得分最高的工作节点,预留其调度份额。
21.进一步的,步骤根据工作节点的分数,进行选举投票,包括如下步骤:
22.根据调度器的分数,判断是否满足调度;
23.当调度器满足调度且未向其他调度器投票时,成为竞选者;
24.竞选者向其他调度器发起选举投票;
25.竞选者监听投票数量,判断是否有半数以上的调度器完成投票;
26.当半数以上的调度器完成投票时,竞选者判断自己是否持有最多的票数,当持有票数最多时,进入准备当选阶段;
27.竞选者向其他调度器发布当选确认请求;
28.当半数以上的调度器回复当选确认请求时,竞选者当选。
29.进一步的,步骤竞选者向其他调度器发起选举投票,包括如下步骤:
30.当接收到选举请求时,将分数与发起选举请求的调度器进行比较,当分数大于发起选举请求的调度器时,成为竞选者,投票给自己;
31.当分数小于请求方时,投票给请求方。
32.进一步的,步骤当半数以上的调度器完成投票时,竞选者判断自己是否持有最多的票数,当持有票数最多时,进入准备当选阶段,包括如下步骤:
33.将每个竞选者的分数进行比较;
34.将评分较低的竞选者获得的票数累加给评分高的竞选者;
35.评分高的竞选者获得票数累加后判断是否持有最多的票数,当持有最多票数时,进入准备当选阶段。
36.进一步的,步骤当半数以上的调度器完成投票时,竞选者判断自己是否持有最多的票数,当持有票数最多时,进入准备当选阶段,还包括如下步骤:
37.当有两个以上的竞选者票数相同时,先发起选举请求的调度器进入准备当选阶段。
38.进一步的,步骤根据工作节点的分数,在当选的调度器中确定进行调度的工作节点,包括如下步骤:
39.将得分最高的工作节点确定为进行调度的工作节点。
40.与现有技术相比,本发明具有以下有益效果:
41.本发明公开了一种分布式的kubernetes调度方法,通过监听新事件,对新事件进行打分,在调度器间进行选举,求出最适合调度的工作节点,以提高调度性能。
42.本发明还公开了一种分布式的kubernetes调度系统,以实现上述的调度方法,包括:控制层、调度层和资源层,
43.控制层用于对调度进行控制;
44.调度层用于接收控制层的命令后,进行调度;
45.资源层用于将工作节点进行分类,参与调度;
46.调度层包括:
47.监听模块,用于监听新的pod事件;
48.打分模块,用于根据新的pod事件,对工作节点进行打分;
49.选举投票模块,用于根据工作节点的分数,进行选举投票;
50.当选调度模块,用于根据投票票数,确认当选的调度器,并根据工作节点的分数,在当选的调度器中确定进行调度的工作节点。
51.本发明还公开了一种计算机设备,包括:
52.处理器;
53.用于存储所述处理器可执行指令的存储器;
54.其中,所述处理器被配置为执行所述指令,以实现上述的调度方法。
55.本发明还公开了一种计算机可读存储介质,其为计算机可读的存储介质,其上存储有计算机程序,所述计算机程序被执行时实现上述的调度方法。
附图说明
56.下面结合附图对本发明的具体实施方式作进一步详细的说明,其中:
57.图1为现有技术中kubernetes调度器运行示意图;
58.图2为实施例1所述的调度方法的流程图;
59.图3为实施例1所述的调度方法的示意图;
60.图4为实施例1所述的调度方法的步骤s4的流程图;
61.图5为实施例1所述的调度方法的步骤s4中子步骤的流程图;
62.图6为实施例2所述的调度系统的示意图;
63.图7为实施例3所述的计算机设备的结构示意图。
具体实施方式
64.以下结合附图对本发明的优选实施例进行说明,应当理解,此处所描述的优选实施例仅用于说明和解释本发明,并不用于限定本发明。
65.实施例1
66.如图2、3,本实施例公开了一种分布式的kubernetes调度方法,包括步骤:
67.s1、用户actor发起创建pod的请求到apiserver,调度器监听apiserver,监听到创建事件,apiserver为kubernetes集群对外提供的api服务组件,与etcd连接。
68.s2、调度器根据新的pod事件,对工作节点node进行打分,如果分数为0,则放弃调度;如果支持,则打出分数,分数为1~10;一组功能相近的工作节点划分为一个调度空间,调度空间中包括工作节点node、调度器以及元数据data。
69.s3、根据工作节点的分数,调度器进行选举投票。
70.s4、根据投票票数,确认当选的调度器。
71.s5、根据工作节点的分数,在当选的调度器中确定进行调度的工作节点。
72.具体的,步骤s2包括如下步骤:
73.根据新的pod事件,对工作节点进行预选;
74.对预选出的工作节点进行打分,并选出最高分;
75.将最高分作为工作节点所属调度器的分数;
76.对得分最高的工作节点,预留其调度份额。
77.具体的,步骤s3包括如下步骤:
78.根据调度器的分数,判断是否满足调度,具体为判断调度器的分数是否为0;
79.当调度器满足调度(即调度器分数不为0)且未向其他调度器投票时,成为竞选者;
80.竞选者向其他调度器发起选举投票。
81.在上述实施例中,如图4,步骤s4包括如下步骤:
82.竞选者监听投票数量,判断是否有半数以上的调度器完成投票;
83.当半数以上的调度器完成投票时,竞选者判断自己是否持有最多的票数,当持有票数最多时,进入准备当选阶段,否则继续监听投票数量;
84.竞选者向其他调度器发布当选确认请求;
85.当半数以上的调度器回复当选确认请求时,竞选者当选。
86.具体的,步骤当半数以上的调度器完成投票时,竞选者判断自己是否持有最多的票数,当持有票数最多时,进入准备当选阶段,包括如下步骤:
87.将每个竞选者的分数进行比较;
88.将评分较低的竞选者获得的票数累加给评分高的竞选者;
89.评分高的竞选者获得票数累加后判断是否持有最多的票数,当持有最多票数时,进入准备当选阶段。
90.具体的,步骤当半数以上的调度器完成投票时,竞选者判断自己是否持有最多的票数,当持有票数最多时,进入准备当选阶段,还包括如下步骤:
91.当有两个以上的竞选者票数相同时,先发起选举请求的调度器进入准备当选阶段。
92.在上述实施例中,如图5,步骤竞选者向其他调度器发起选举投票,包括如下步骤:
93.当接收到选举请求时,检查本调度器是否完成评分,若完成评分,则将分数与发起选举请求的调度器进行比较,否则等待评分完成;
94.将分数与发起选举请求的调度器进行比较,当分数大于发起选举请求的调度器时,成为竞选者,投票给自己;
95.当分数小于请求方时,投票给选举请求方。
96.在上述实施例中,步骤s5包括如下步骤:
97.将步骤s2中得分最高的工作节点确定为进行调度的工作节点。
98.当集群中产生新的pod事件后,本实施例通过监听新的pod事件,对新的pod事件进行打分,在调度器之间进行选举,求出最适合调度的工作节点,以提高调度性能。
99.有效解决极端场景下中心节点不可用带来的集群不可用问题,提高了集群的可靠性,并且避免了大量数据的同步及延时,支持差异化的调度器部署,避免了调度逻辑过于集中、臃肿以及调度策略冲突的问题,提高调度性能。
100.实施例2
101.如图6,本实施例公开了一种分布式的kubernetes调度系统,以实现实施例1所述的调度方法,具体实施细节请见实施例1,调度系统包括:控制层、调度层和资源层。
102.apiserver为kubernetes集群对外提供的api服务组件,为接收和管理pod的控制组件,作为控制层对调度进行控制,apiserver与etcd连接。
103.将一组功能相近的工作节点node划分为一个调度空间,调度器分为核心调度逻辑和调度插件plugin,根据工作节点的资源特性在不同的调度空间内安装不同的调度插件plugin1、plugin2或plugin3、plugin4,实现调度器差异化的结构,避免将集群中用到的所
有调度插件安装在一个调度器中,避免架构臃肿和逻辑冲突;例如只有安装了gpu卡的调度空间才需要安装gpu调度插件,调度器保存本地元数据,不需要同步所有数据到一个调度器中,作为调度层,当接收控制层的命令后,进行调度。
104.将工作节点按资源特性、容量规模等不同的标签归类分组,作为资源层参与调度。
105.调度层包括:
106.监听模块,用于监听新的pod事件;
107.打分模块,用于根据新的pod事件,对工作节点进行打分;
108.选举投票模块,用于根据工作节点的分数,进行选举投票;
109.当选调度模块,用于根据投票票数,确认当选的调度器,并根据工作节点的分数,在当选的调度器中确定进行调度的工作节点。
110.通过将调度器部署在分布式的调度空间中,将单个工作节点或一组工作节点作为一个调度空间;将现有技术中的两层调度转换为三层调度,在原有的中心调度器层和被调度的工作节点层基础上,新增调度空间层作为分布式调度层;将现有技术中的中心调度器模型拆分为分布在每一个调度空间的分布式调度系统。
111.每个调度器关注自己调度空间中的元数据,元数据包括工作节点的容量信息,调度标签等调度相关的配置数据。
112.当集群中产生新的pod调度事件后,每个调度器将监听到这个事件,并在调度空间内做出评估和打分;然后在多个分布式调度器之间做出选举动作,找出分数最高的调度器,通过三层调度求出最适合调度的工作节点。
113.将kubernetes集群划分为不同的调度空间,一个调度空间由一个工作节点或一组功能相近的工作节点组成;调度器根据这组功能相近的工作节点的特性、支持的调度算法,执行差异化的部署,不同的调度空间可以安装部署具有不同调度功能和调度策略的调度器;调度空间的元数据保存在每一个调度器的本地存储中,不需要将所有调度数据高频同步在一个调度器中。
114.实施例3
115.如图7,本实施例还公开了一种计算机设备,包括:处理器;用于存储所述处理器可执行指令的存储器;其中,处理器被配置为执行所述指令,以实现实施例1所述的调度方法。
116.实施例4
117.本实施例还公开了一种计算机可读存储介质,其为计算机可读的存储介质,其上存储有计算机程序,计算机程序被执行时实现实施例1所述的调度方法。
118.可选地,该计算机可读存储介质可以包括:只读存储器(rom,read only memory)、随机存取记忆体(ram,random access memory)、固态硬盘(ssd,solid state drives)或光盘等。其中,随机存取记忆体可以包括电阻式随机存取记忆体(reram,resistance randomaccess memory)和动态随机存取存储器(dram,dynamic random access memory)。
119.以上所述,仅是本发明的较佳实施例而已,并非对本发明作任何形式上的限制,故凡是未脱离本发明技术方案内容,依据本发明的技术实质对以上实施例所作的任何修改、等同变化与修饰,均仍属于本发明技术方案的范围内。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

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

相关文献