Skip to content
This repository was archived by the owner on Dec 13, 2023. It is now read-only.

Commit b7beb91

Browse files
committed
添加scheduler讲师招募
1 parent ce31a41 commit b7beb91

File tree

1 file changed

+208
-0
lines changed

1 file changed

+208
-0
lines changed
Lines changed: 208 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,208 @@
1+
# scheduler源码分享讲师招募
2+
3+
Kubernetes 源码研习社二期活动——调度器源码剖析,为了更好的让大家理解调度器源码,特讲师招募。
4+
5+
讲解的内容见下面的Task划分,每个小结我们准备招募一个讲师,在规定时间内讲解所列内容,当然时间可灵活调整。
6+
7+
内容划分是参考张东旭大佬《kubernestes 源码剖析》,但是尽信书则无书,我们只是按书的内容划分Task而已,我们希望听到更经典、更精彩、更具扩展性和实用性的讲解。
8+
9+
因为我们是大工作划成小工作,为的就是不占用大家太多时间来准备。所以讲解的时候务必注意和前面同学的衔接。每个人要做到既能承前顺利进入内容,又能抛砖引玉,引出后面同学的精彩分享,毕竟大家是一个整体,就要统一、和谐。
10+
11+
大家会统一用腾讯会议分享,至于分享的内容您用PPT还是思维导图,还是实际操作来呈现,我们不设限制,我们要的只是简单、精彩、好理解。
12+
13+
想分享的同学,找社长[厉辉](https://github.com/Miss-you)报备一下,然后统一安排大家时间。
14+
15+
## 一、Task划分
16+
1. 开场综述 (10m)
17+
- scheduler在整个k8s架构图的位置、作用、 Pod流程综述
18+
- Pod在scheduler中的调度过程,最好来张简单的图【书8.2和8.7.1章】
19+
20+
2. 启动过程前半部分代码导读(15m)
21+
- scheduler参数介绍【书8.1】
22+
- 命令行参数解析源码分享 【书8.3.2】
23+
- 实例化scheduler过程 源码分享 【书8.3.3】
24+
- 随带 把调度算法的注册和实例化部分重点介绍下,包括如何从配置文件指定调度算法【书8.3.1 + 自由发挥】
25+
26+
3. 启动过程后半部分代码导读 (20m)
27+
- 事件管理器EventBroadcaster的介绍和在scheduler中的作用和注册过程分【书8.3.4】
28+
- HTTP和HTTPS部分代码,重点可以强调下怎么给scheduler加API接口【书8.3.5】
29+
- 运行调度器Infomer同步资源,中间强调调度器如何保持资源状态一致性的【书8.3.6】
30+
- 代码分享直到sched.Run(),重点sched.Run()的检查项【书8.38】
31+
32+
4. 预选和优选调度算法和代码介绍(20m)
33+
- 过一下所有的预选和优选调度算法,简要讲解影响,特别是组合值的影响【书8.6】
34+
- 预选和优选调度代码分享 【书8.7.2章】
35+
36+
5. 优先级和抢占机制 (20m)
37+
- 优先级和抢占机制介绍【书8.4章】
38+
- 抢占代码分享【书8.7.3章】
39+
- 亲和性调度 介绍 设置 演示 代码剖析 【书8.5章】
40+
41+
6. 选举算法剖析 (20m)
42+
- 选举算法介绍、作用、为什么需要,可强调如何在保证调度器高可用的 【书8.3.7章】
43+
- 选举算法的具体代码剖析和实现 【书8.8章】
44+
45+
7. 小结
46+
- 小结今天的内容
47+
- 感谢大家的分享
48+
- 预告下期分享
49+
50+
## 二、 开发练习题
51+
##### 1. 给调度器添加一个接口,可在10m内获取已经调度pod的node计分,只展示Top10;(尽可能的展示出,输入pod在之前调度的实际计分情况)
52+
53+
输入:已调度的pod name
54+
55+
输出:
56+
57+
```
58+
[
59+
{
60+
"Host":"10.0.2.130",
61+
"Score":100023
62+
},
63+
{
64+
"Host":"10.0.2.142",
65+
"Score":100023
66+
},
67+
{
68+
"Host":"10.0.2.164",
69+
"Score":100022
70+
},
71+
{
72+
"Host":"10.0.2.57",
73+
"Score":100022
74+
}
75+
]
76+
```
77+
78+
提示:可利用调度器的快照
79+
80+
##### 2. 给调度器添加一个接口,只展示优选算法的计分情况,每个算法只展示5个node;(;(尽可能的展示出输入pod,在之前调度的实际计分情况))
81+
82+
输入:已调度的pod name
83+
84+
输出:
85+
86+
```
87+
[
88+
{
89+
"Strategy":"LeastRequestedPriority",
90+
"Weight":1,
91+
"HostPriority":[
92+
{
93+
"Host":"10.0.2.142",
94+
"Score":3
95+
},
96+
{
97+
"Host":"10.0.2.57",
98+
"Score":3
99+
},
100+
{
101+
"Host":"10.0.2.130",
102+
"Score":2
103+
},
104+
{
105+
"Host":"10.0.2.164",
106+
"Score":2
107+
}
108+
]
109+
},
110+
{
111+
"Strategy":"NodeAffinityPriority",
112+
"Weight":1,
113+
"HostPriority":[
114+
{
115+
"Host":"10.0.2.130",
116+
"Score":0
117+
},
118+
{
119+
"Host":"10.0.2.142",
120+
"Score":0
121+
},
122+
{
123+
"Host":"10.0.2.164",
124+
"Score":0
125+
},
126+
{
127+
"Host":"10.0.2.57",
128+
"Score":0
129+
}
130+
]
131+
},
132+
{
133+
"Strategy":"NodePreferAvoidPodsPriority",
134+
"Weight":10000,
135+
"HostPriority":[
136+
{
137+
"Host":"10.0.2.130",
138+
"Score":10
139+
},
140+
{
141+
"Host":"10.0.2.142",
142+
"Score":10
143+
},
144+
{
145+
"Host":"10.0.2.164",
146+
"Score":10
147+
},
148+
{
149+
"Host":"10.0.2.57",
150+
"Score":10
151+
}
152+
]
153+
},
154+
{
155+
"Strategy":"SelectorSpreadPriority",
156+
"Weight":1,
157+
"HostPriority":[
158+
{
159+
"Host":"10.0.2.130",
160+
"Score":10
161+
},
162+
{
163+
"Host":"10.0.2.142",
164+
"Score":10
165+
},
166+
{
167+
"Host":"10.0.2.164",
168+
"Score":10
169+
},
170+
{
171+
"Host":"10.0.2.57",
172+
"Score":10
173+
}
174+
]
175+
},
176+
{
177+
"Strategy":"TaintTolerationPriority",
178+
"Weight":1,
179+
"HostPriority":[
180+
{
181+
"Host":"10.0.2.130",
182+
"Score":10
183+
},
184+
{
185+
"Host":"10.0.2.142",
186+
"Score":10
187+
},
188+
{
189+
"Host":"10.0.2.164",
190+
"Score":10
191+
},
192+
{
193+
"Host":"10.0.2.57",
194+
"Score":10
195+
}
196+
]
197+
}
198+
]
199+
```
200+
201+
提示:可利用调度器的快照
202+
203+
##### 3. 给个未调度的pod的yaml,展示开发题1和开发题2的效果,但是不能把pod真实调度了,或影响调度器的实际缓存信息;
204+
205+
##### 4. 适当修改调度器源码,将开发题1和开发题2的效果,作为pod调度时的一个event存入ETCD等,并设置开关和有效存储时长;
206+
207+
##### 5. 将开发题1、2和3作为PR,提交给社区;
208+

0 commit comments

Comments
 (0)