Slide 1

Slide 1 text

Kueueに新しいPriorityClassを足した話 Hiroyuki Moriya kubernetes meetup tokyo #61

Slide 2

Slide 2 text

Self introduction
 ▶ GitHub: @Gekko0114
 ▶ Software Engineer
 ▶ 趣味でk8s関連のOSS


Slide 3

Slide 3 text

今日話すこと
 ▶ kubernetes-sigs/Kueueに新しいPriorityClassを足しました
 ▶ KEP(提案書)作成〜実装まで、一気通貫でやらせてもらいました
 ▶ Kueueの概要、KEPの内容、感想を喋ります
 
 


Slide 4

Slide 4 text

Kueueとは
 ▶ Batchワークロードを柔軟に実行するためのOSS 
 ▶ Job, MPIJob, PyTorchJob, TensorflowJobなどのCRDを管理できる 
 ▶ cluster毎にbudgetを設定すると、実行されるPodのresource合計がbudgetに収まる(詳 細は省略)
 ▶ 待機しているJobたちは、Queueに積まれる。リソースが空いたら実行される 
 


Slide 5

Slide 5 text

Job作成から実行までの流れ
 ▶ Jobを作成すると、workloadというCRDが生成される。workloadがqueueに stackされる。clusterのresourceが空くと、実行される
 ▶ JobのPriority順に並ぶ
 
 


Slide 6

Slide 6 text

背景:Priorityに関する課題があった
 ▶ Queue内のworkloadの順番が、Pod Priorityで決まる
 ▶ Kueue controllerが参照するworkloadのpriorityと、pod priorityが同じなので、 pod preemptionに影響を与えずに、workload側のPriorityだけを独立して管理す るのが面倒だった
 
 
 
 


Slide 7

Slide 7 text

KEP:workloadPriority
 ▶ workloadPriorityClassを導入した
 ▶ Jobのlabelを介して、workloadPriorityClassを指定可能にした
 


Slide 8

Slide 8 text

workloadPriorityの使い方
 ▶ workloadPriorityClassをcreateする
 ▶ JobのlabelにworkloadPriorityClass の名前を指定
 
 


Slide 9

Slide 9 text

workloadPriorityの使い方
 ▶ workloadPriorityClass名が付与され たworkloadが作成される
 ▶ workloadのpriorityはmutableなの で、「中々実行されないので、priority を上げる」操作も可能!
 
 


Slide 10

Slide 10 text

感想1: コミュニケーションは大事!
 
 ▶ コードを書く前に、KEPのdocument上で仕様を詳しく詰めた
 ▶ そのおかげで、本実装はかなりスムーズだった
 


Slide 11

Slide 11 text

感想2: Simple is best
 ▶ 最初は「時間が経つとPriorityが増える仕組み」を作ろうとしていた
 ▶ 「個別のニーズに対応しきれないし、負債になる(意訳)」というFBをもらって、方針 転換した
 


Slide 12

Slide 12 text

まとめ
 ▶ pod priorityと独立したPriority classを作成しました
 ▶ Kueueを使ってみてください!