@@ -19,7 +19,7 @@ Kubernetes?**
19
19
** Kensei** : Hi, thanks for the opportunity! I’m Kensei Nakada
20
20
([ @sanposhiho ] ( https://github.com/sanposhiho/ ) ), a software engineer at
21
21
[ Tetrate.io] ( https://tetrate.io/ ) . I have been contributing to Kubernetes in my free time for more
22
- than 3 years, and now I’m an approver of SIG- Scheduling in Kubernetes. Also, I’m a founder/owner of
22
+ than 3 years, and now I’m an approver of SIG Scheduling in Kubernetes. Also, I’m a founder/owner of
23
23
two SIG subprojects,
24
24
[ kube-scheduler-simulator] ( https://github.com/kubernetes-sigs/kube-scheduler-simulator ) and
25
25
[ kube-scheduler-wasm-extension] ( https://github.com/kubernetes-sigs/kube-scheduler-wasm-extension ) .
@@ -32,14 +32,14 @@ brief overview of SIG Scheduling and explain its role within the Kubernetes ecos
32
32
** KN** : As the name implies, our responsibility is to enhance scheduling within
33
33
Kubernetes. Specifically, we develop the components that determine which Node is the best place for
34
34
each Pod. In Kubernetes, our main focus is on maintaining the
35
- [ kube-scheduler] ( https://kubernetes.io /docs/concepts/scheduling-eviction/kube-scheduler/) , along
35
+ [ kube-scheduler] ( /docs/concepts/scheduling-eviction/kube-scheduler/ ) , along
36
36
with other scheduling-related components as part of our SIG subprojects.
37
37
38
38
** AP: I see, got it! That makes me curious--what recent innovations or developments has SIG
39
39
Scheduling introduced to Kubernetes scheduling?**
40
40
41
- ** KN** : From a feature perspective, there have been [ several
42
- enhancements] ( https://kubernetes.io /blog/2023/04/17/fine-grained-pod-topology-spread-features-beta/)
41
+ ** KN** : From a feature perspective, there have been
42
+ [ several enhancements] ( /blog/2023/04/17/fine-grained-pod-topology-spread-features-beta/ )
43
43
to ` PodTopologySpread ` recently. ` PodTopologySpread ` is a relatively new feature in the scheduler,
44
44
and we are still in the process of gathering feedback and making improvements.
45
45
@@ -53,59 +53,58 @@ reducing the likelihood of wasting scheduling cycles.
53
53
** A: That sounds interesting! Are there any other interesting topics or projects you are currently
54
54
working on within SIG Scheduling?**
55
55
56
- ** KN** : I’m leading the development of ` QueueingHint ` which I just shared. Given that it’s a big new
56
+ ** KN** : I’m leading the development of ` QueueingHint ` which I just shared. Given that it’s a big new
57
57
challenge for us, we’ve been facing many unexpected challenges, especially around the scalability,
58
58
and we’re trying to solve each of them to eventually enable it by default.
59
59
60
60
And also, I believe
61
- [ kube-scheduler-wasm-extention ] ( https://github.com/kubernetes-sigs/kube-scheduler-wasm-extension )
62
- (SIG sub project ) that I started last year would be interesting to many people. Kubernetes has
61
+ [ kube-scheduler-wasm-extension ] ( https://github.com/kubernetes-sigs/kube-scheduler-wasm-extension )
62
+ (a SIG subproject ) that I started last year would be interesting to many people. Kubernetes has
63
63
various extensions from many components. Traditionally, extensions are provided via webhooks
64
64
([ extender] ( https://github.com/kubernetes/design-proposals-archive/blob/main/scheduling/scheduler_extender.md )
65
- in the scheduler) or Go SDK ([ Scheduling
66
- Framework] ( https://kubernetes.io/docs/concepts/scheduling-eviction/scheduling-framework/ ) in the
67
- scheduler). However, these come with drawbacks - performance issues with webhooks and the need to
65
+ in the scheduler) or Go SDK ([ Scheduling Framework] ( /docs/concepts/scheduling-eviction/scheduling-framework/ )
66
+ in the scheduler). However, these come with drawbacks - performance issues with webhooks and the need to
68
67
rebuild and replace schedulers with Go SDK, posing difficulties for those seeking to extend the
69
- scheduler but lacking familiarity with it. The project is trying to introduce a new solution to
68
+ scheduler but lacking familiarity with it. The project is trying to introduce a new solution to
70
69
this general challenge - a [ WebAssembly] ( https://webassembly.org/ ) based extension. Wasm allows
71
70
users to build plugins easily, without worrying about recompiling or replacing their scheduler, and
72
71
sidestepping performance concerns.
73
72
74
- Through this project, sig-scheduling has been learning valuable insights about WebAssembly's
73
+ Through this project, SIG Scheduling has been learning valuable insights about WebAssembly's
75
74
interaction with large Kubernetes objects. And I believe the experience that we’re gaining should be
76
- useful broadly within the community, beyond sig-scheduling .
75
+ useful broadly within the community, beyond SIG Scheduling .
77
76
78
- ** A: Definitely! Now, there are currently 8 subprojects inside SIG Scheduling. Would you like to
77
+ ** A: Definitely! Now, there are 8 subprojects inside SIG Scheduling. Would you like to
79
78
talk about them? Are there some interesting contributions by those teams you want to highlight?**
80
79
81
- ** KN** : Let me pick up three sub projects; Kueue, KWOK and descheduler.
80
+ ** KN** : Let me pick up three subprojects: Kueue, KWOK and descheduler.
82
81
83
- [ Kueue] ( https://github.com/kubernetes-sigs/kueue ) :
82
+ [ Kueue] ( https://github.com/kubernetes-sigs/kueue )
84
83
: Recently, many people have been trying to manage batch workloads with Kubernetes, and in 2022,
85
- Kubernetes community founded
86
- [ WG-Batch] ( https://github.com/kubernetes/community/blob/master/wg-batch/README.md ) for better
87
- support for such batch workloads in Kubernetes. [ Kueue] ( https://github.com/kubernetes-sigs/kueue )
88
- is a project that takes a crucial role for it. It’s a job queueing controller, deciding when a job
89
- should wait, when a job should be admitted to start, and when a job should be preempted. Kueue aims
90
- to be installed on a vanilla Kubernetes cluster while cooperating with existing matured controllers
91
- (scheduler, cluster-autoscaler, kube-controller-manager, etc).
92
-
93
- [ KWOK] ( https://github.com/kubernetes-sigs/kwok ) :
84
+ Kubernetes community founded
85
+ [ WG-Batch] ( https://github.com/kubernetes/community/blob/master/wg-batch/README.md ) for better
86
+ support for such batch workloads in Kubernetes. [ Kueue] ( https://github.com/kubernetes-sigs/kueue )
87
+ is a project that takes a crucial role for it. It’s a job queueing controller, deciding when a job
88
+ should wait, when a job should be admitted to start, and when a job should be preempted. Kueue aims
89
+ to be installed on a vanilla Kubernetes cluster while cooperating with existing matured controllers
90
+ (scheduler, cluster-autoscaler, kube-controller-manager, etc).
91
+
92
+ [ KWOK] ( https://github.com/kubernetes-sigs/kwok )
94
93
: KWOK is a component in which you can create a cluster of thousands of Nodes in seconds. It’s
95
94
mostly useful for simulation/testing as a lightweight cluster, and actually another SIG sub
96
95
project [ kube-scheduler-simulator] ( https://github.com/kubernetes-sigs/kube-scheduler-simulator )
97
96
uses KWOK background.
98
97
99
- [ descheduler] ( https://github.com/kubernetes-sigs/descheduler ) :
100
- : Descheduler is a component recreating pods that are running on undesired Nodes. In Kubernetes,
101
- scheduling constraints (` PodAffinity ` , ` NodeAffinity ` , ` PodTopologySpread ` , etc) are honored only at
102
- Pod schedule, but it’s not guaranteed that the contrtaints are kept being satisfied afterwards.
103
- Descheduler evicts Pods violating their scheduling constraints (or other undesired conditions) so
104
- that they’re recreated and rescheduled.
98
+ [ descheduler] ( https://github.com/kubernetes-sigs/descheduler )
99
+ : Descheduler is a component recreating pods that are running on undesired Nodes. In Kubernetes,
100
+ scheduling constraints (` PodAffinity ` , ` NodeAffinity ` , ` PodTopologySpread ` , etc) are honored only at
101
+ Pod schedule, but it’s not guaranteed that the contrtaints are kept being satisfied afterwards.
102
+ Descheduler evicts Pods violating their scheduling constraints (or other undesired conditions) so
103
+ that they’re recreated and rescheduled.
105
104
106
- [ Descheduling Framework] ( https://github.com/kubernetes-sigs/descheduler/blob/master/keps/753-descheduling-framework/README.md ) .
107
- : One very interesting on-going project, similar to [ Scheduling
108
- Framework] ( https://kubernetes.io /docs/concepts/scheduling-eviction/scheduling-framework/) in the
105
+ [ Descheduling Framework] ( https://github.com/kubernetes-sigs/descheduler/blob/master/keps/753-descheduling-framework/README.md )
106
+ : One very interesting on-going project, similar to
107
+ [ Scheduling Framework] ( /docs/concepts/scheduling-eviction/scheduling-framework/ ) in the
109
108
scheduler, aiming to make descheduling logic extensible and allow maintainers to focus on building
110
109
a core engine of descheduler.
111
110
@@ -125,27 +124,26 @@ improving our components over the years.
125
124
** AP: Kubernetes is a community-driven project. Any recommendations for new contributors or
126
125
beginners looking to get involved and contribute to SIG scheduling? Where should they start?**
127
126
128
- ** KN** : Let me start with a general recommendation for contributing to any SIG: a common approach is
129
- to look for
127
+ ** KN** : Let me start with a general recommendation for contributing to any SIG: a common approach is to look for
130
128
[ good-first-issue] ( https://github.com/kubernetes/kubernetes/issues?q=is%3Aopen+is%3Aissue+label%3A%22good+first+issue%22 ) .
131
129
However, you'll soon realize that many people worldwide are trying to contribute to the Kubernetes
132
130
repository.
133
131
134
132
I suggest starting by examining the implementation of a component that interests you. If you have
135
133
any questions about it, ask in the corresponding Slack channel (e.g., #sig-scheduling for the
136
- scheduler, #sig-node for kubelet, etc). Once you have a rough understanding of the implementation,
134
+ scheduler, #sig-node for kubelet, etc). Once you have a rough understanding of the implementation,
137
135
look at issues within the SIG (e.g.,
138
136
[ sig-scheduling] ( https://github.com/kubernetes/kubernetes/issues?q=is%3Aopen+is%3Aissue+label%3Asig%2Fscheduling ) ),
139
- where you'll find more unassigned issues compared to good-first-issue ones. You may also want to
137
+ where you'll find more unassigned issues compared to good-first-issue ones. You may also want to
140
138
filter issues with the
141
139
[ kind/cleanup] ( https://github.com/kubernetes/kubernetes/issues?q=is%3Aopen+is%3Aissue++label%3Akind%2Fcleanup+ )
142
140
label, which often indicates lower-priority tasks and can be starting points.
143
141
144
- Specifically for SIG Scheduling, you should first understand the [ Scheduling
145
- Framework] ( https://kubernetes.io /docs/concepts/scheduling-eviction/scheduling-framework/) , which is
146
- the fundamental architecture of kube-scheduler. Most of the implementation is found in
147
- [ pkg/scheduler] ( https://github.com/kubernetes/kubernetes/tree/master/pkg/scheduler ) . I suggest
148
- starting with
142
+ Specifically for SIG Scheduling, you should first understand the
143
+ [ Scheduling Framework] ( /docs/concepts/scheduling-eviction/scheduling-framework/ ) , which is
144
+ the fundamental architecture of kube-scheduler. Most of the implementation is found in
145
+ [ pkg/scheduler] ( https://github.com/kubernetes/kubernetes/tree/master/pkg/scheduler ) .
146
+ I suggest starting with
149
147
[ ScheduleOne] ( https://github.com/kubernetes/kubernetes/blob/0590bb1ac495ae8af2a573f879408e48800da2c5/pkg/scheduler/schedule_one.go#L66 )
150
148
function and then exploring deeper from there.
151
149
@@ -154,15 +152,14 @@ sub-projects. These typically have fewer maintainers and offer more opportunitie
154
152
significant impact. Despite being called "sub" projects, many have a large number of users and a
155
153
considerable impact on the community.
156
154
157
- And last but not least, remember contributing to the community isn’t just about code. While I
155
+ And last but not least, remember contributing to the community isn’t just about code. While I
158
156
talked a lot about the implementation contribution, there are many ways to contribute, and each one
159
157
is valuable. One comment to an issue, one feedback to an existing feature, one review comment in PR,
160
158
one clarification on the documentation; every small contribution helps drive the Kubernetes
161
159
ecosystem forward.
162
160
163
161
** AP: Those are some pretty useful tips! And if I may ask, how do you assist new contributors in
164
- getting started, and what skills are contributors likely to learn by participating in SIG
165
- Scheduling?**
162
+ getting started, and what skills are contributors likely to learn by participating in SIG Scheduling?**
166
163
167
164
** KN** : Our maintainers are available to answer your questions in the #sig-scheduling Slack
168
165
channel. By participating, you'll gain a deeper understanding of Kubernetes scheduling and have the
@@ -178,9 +175,8 @@ pain points?**
178
175
** KN** : Scheduling in Kubernetes can be quite challenging because of the diverse needs of different
179
176
organizations with different business requirements. Supporting all possible use cases in
180
177
kube-scheduler is impossible. Therefore, extensibility is a key focus for us. A few years ago, we
181
- rearchitected kube-scheduler with [ Scheduling
182
- Framework] ( https://kubernetes.io/docs/concepts/scheduling-eviction/scheduling-framework/ ) , which
183
- offers flexible extensibility for users to implement various scheduling needs through plugins. This
178
+ rearchitected kube-scheduler with [ Scheduling Framework] ( /docs/concepts/scheduling-eviction/scheduling-framework/ ) ,
179
+ which offers flexible extensibility for users to implement various scheduling needs through plugins. This
184
180
allows maintainers to focus on the core scheduling features and the framework runtime.
185
181
186
182
Another major issue is maintaining sufficient scheduling throughput. Typically, a Kubernetes cluster
@@ -190,15 +186,15 @@ and, consequently, the cluster's scalability. Although we have an internal perfo
190
186
unfortunately, we sometimes overlook performance degradation in less common scenarios. It’s
191
187
difficult as even small changes, which look irrelevant to performance, can lead to degradation.
192
188
193
- ** AP: What are some upcoming goals or initiatives for SIG Scheduling? How do you envision the SIG evolving in the future?**
189
+ ** AP: What are some upcoming goals or initiatives for SIG Scheduling? How do you envision the SIG evolving in the future?**
194
190
195
191
** KN** : Our primary goal is always to build and maintain _ extensible_ and _ stable_ scheduling
196
192
runtime, and I bet this goal will remain unchanged forever.
197
193
198
194
As already mentioned, extensibility is key to solving the challenge of the diverse needs of
199
195
scheduling. Rather than trying to support every different use case directly in kube-scheduler, we
200
196
will continue to focus on enhancing extensibility so that it can accommodate various use
201
- cases. [ kube-scheduler-wasm-extention ] ( https://github.com/kubernetes-sigs/kube-scheduler-wasm-extension )
197
+ cases. [ kube-scheduler-wasm-extension ] ( https://github.com/kubernetes-sigs/kube-scheduler-wasm-extension )
202
198
that I mentioned is also part of this initiative.
203
199
204
200
Regarding stability, introducing new optimizations like QueueHint is one of our
@@ -217,7 +213,7 @@ about SIG Scheduling?**
217
213
** KN** : Scheduling is one of the most complicated areas in Kubernetes, and you may find it difficult
218
214
at first. But, as I shared earlier, you can find many opportunities for contributions, and many
219
215
maintainers are willing to help you understand things. We know your unique perspective and skills
220
- are what makes our open source so powerful :)
216
+ are what makes our open source so powerful 😊
221
217
222
218
Feel free to reach out to us in Slack
223
219
([ #sig-scheduling] ( https://kubernetes.slack.com/archives/C09TP78DV ) ) or
0 commit comments