Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Kueue入門/Kueue Introduction
Search
bells17
April 27, 2022
Programming
1
1.8k
Kueue入門/Kueue Introduction
#k8sjp 第50回のLT資料です
https://k8sjp.connpass.com/event/244591/
bells17
April 27, 2022
Tweet
Share
More Decks by bells17
See All by bells17
モダンインフラの基礎を学ぼう!実践コンテナ入門
bells17
2
210
Kubernetes Code Contribution入門
bells17
5
980
Dev ContainersとTestcontainers
bells17
3
430
アーキテクチャから学ぶKubernetesの全体像
bells17
19
13k
Controllerを作ってみよう ~ Kubernetes Controllerハンズオン ~
bells17
7
1k
Kubernetesに対する理解を高めてKubernetesの「わからない」を減らそう
bells17
19
4.6k
KubernetesとCoreDNSについて理解する
bells17
3
2.4k
KEP-3063: Dynamic resource allocation
bells17
0
360
kube-proxy入門
bells17
9
2.2k
Other Decks in Programming
See All in Programming
CSC509 Lecture 09
javiergs
PRO
0
120
CPython 인터프리터 구조 파헤치기 - PyCon Korea 24
kennethanceyer
0
250
デプロイを任されたので、教わった通りにデプロイしたら障害になった件 ~俺のやらかしを越えてゆけ~
techouse
52
33k
Hotwire or React? ~Reactの録画機能をHotwireに置き換えて得られた知見~ / hotwire_or_react
harunatsujita
9
4.5k
生成 AI を活用した toitta 切片分類機能の裏側 / Inside toitta's AI-Based Factoid Clustering
pokutuna
0
660
カラム追加で増えるActiveRecordのメモリサイズ イメージできますか?
asayamakk
4
1.7k
PLoP 2024: The evolution of the microservice architecture pattern language
cer
PRO
0
1.8k
Streams APIとTCPフロー制御 / Web Streams API and TCP flow control
tasshi
2
320
とにかくAWS GameDay!AWSは世界の共通言語! / Anyway, AWS GameDay! AWS is the world's lingua franca!
seike460
PRO
1
660
Snowflake x dbtで作るセキュアでアジャイルなデータ基盤
tsoshiro
2
460
Honoの来た道とこれから
yusukebe
19
3.1k
Quine, Polyglot, 良いコード
qnighy
3
450
Featured
See All Featured
The Art of Programming - Codeland 2020
erikaheidi
51
13k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
504
140k
Testing 201, or: Great Expectations
jmmastey
38
7.1k
The Invisible Side of Design
smashingmag
297
50k
Making Projects Easy
brettharned
115
5.9k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
167
49k
The Cult of Friendly URLs
andyhume
78
6k
Designing on Purpose - Digital PM Summit 2013
jponch
115
6.9k
How to train your dragon (web standard)
notwaldorf
88
5.7k
BBQ
matthewcrist
85
9.3k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
664
120k
Fireside Chat
paigeccino
32
3k
Transcript
Kueue⼊⾨ Kubernetes Meetup Tokyo #50(2022/04/27) @bells17
▶ @bells17 ▶ Software Engineer ▶ 普段やってること: + Kubernetes 関連コンポーネントの開発
+ Kubernetes as a Service開発 ▶ Kubernetes SIG-Docs Japanese localization reviewer ▶ Kubernetes Internal Organizer ▶ #kubenews ▶ @bells17_
#kubenews ほぼ毎週⾦曜22:00~YouTubeで配信中 Kubernetes/Cloud Native関連のニュースを中⼼に技術雑談してます
このセッションでわかること ▶ Kueueというアプリケーションがどんなものかを簡単に紹介できればと思ってます
Kueueとは?
Kueue ▶ Kubernetesネイティブなバッチ(ジョブ)スケジューラー ▶ Jobリソースを(ある意味)拡張することでJobリソースのキューイングの 仕組みを提供してくれるアプリケーションになっている ▶ キュー管理者は予めResourceFlavor/ClusterQueue/Queueリソースを設定 しておくことで、バッチユーザーが設定したキューを利⽤することができる
Kueue Overview https://bit.ly/kueue-controller-design
Kueue ▶ 以下のようなポイントはKubernetes⾃⾝の仕組みを使いつつ実現している + Jobリソースのマネジメントはkube-controller-managerを利⽤ + Podのスケジューリングはkube-schedulerを利⽤ ▶ Volcano(kube-batch)のJob API、ジョブライフサイクル管理、スケジューラー
といったコアKubernetesにすでに存在する多くの機能を 再実装している点を問題に感じたのがKueueを作成した背景の1つのよう ▶ ドキュメントなどから主なユースケースとしてMLワークロードのような ⼤規模バッチを多数同時並列で実⾏したいようなユースケースにおいて バッチの実⾏順序のコントロールやキューイングなどを⾏うため利⽤する想定? + ここらへん詳しい⼈教えてください (Design Docs読んでもなんとなくしか想像できなかった)
Kueue ▶ Kubernetesコミュニティの #wg-batch により開発されているよう ▶ 2022/4/12にv0.1.0がリリースされたばかり ▶ リポジトリ: https://github.com/kubernetes-sigs/kueue
+ 今回調べたのはv0.1.0のバージョン + https://github.com/kubernetes-sigs/kueue/tree/v0.1.0 ▶ Design Docs(controller): https://bit.ly/kueue-controller-design ▶ Design Docs(API): https://bit.ly/kueue-apis ▶ Old Proposal: https://bit.ly/k8s-job-management
ちょっとだけKueue Architecture
デモ
k8sクラスターを構築~Kueueをインストール LJOEDSFBUFDMVTUFSOBNFLVFVFFYBNQMF LVCFDUMBQQMZGIUUQTHJUIVCDPNDFSUNBOBHFSDFSUNBOBHFSSFMFBTFT EPXOMPBEWDFSUNBOBHFSZBNM LVCFDUMXBJUGPSDPOEJUJPOBWBJMBCMFUJNFPVUTODFSUNBOBHFS EFQMPZNFOUTDFSUNBOBHFSXFCIPPL LVCFDUMBQQMZLHJUIVCDPNLVCFSOFUFTTJHTLVFVFDPOpHEFGBVMU W
状態チェック LVCFDUMHFUOPEF /".&45"56430-&4"(&7&34*0/ LVFVFFYBNQMFDPOUSPMQMBOF3FBEZDPOUSPMQMBOF NBTUFSNTW LVCFDUMOLVFVFTZTUFNHFUEFQMPZ /".&3&"%:6150%"5&"7"*-"#-&"(& EFQMPZNFOUBQQTLVFVFDPOUSPMMFSNBOBHFSNT LVCFDUMHFUDSEcHSFQLVFVFYLTJP DMVTUFSRVFVFTLVFVFYLTJP5;
RVFVFTLVFVFYLTJP5; SFTPVSDFqBWPSTLVFVFYLTJP5; XPSLMPBETLVFVFYLTJP5;
Kueueに必要なカスタムリソースを設定 DBU&04TFUUJOHZBNM BQJ7FSTJPOLVFVFYLTJPWBMQIB LJOE3FTPVSDF'MBWPS NFUBEBUB OBNFEFGBVMU BQJ7FSTJPOLVFVFYLTJPWBMQIB LJOE2VFVF NFUBEBUB
OBNFTQBDFEFGBVMU OBNFNBJO TQFD DMVTUFS2VFVFDMVTUFSUPUBM &04 DBU&04TFUUJOHZBNM BQJ7FSTJPOLVFVFYLTJPWBMQIB LJOE$MVTUFS2VFVF NFUBEBUB OBNFDMVTUFSUPUBM TQFD OBNFTQBDF4FMFDUPS\^NBUDIBMM SFTPVSDFT OBNFDQV qBWPST OBNFEFGBVMU RVPUB NJO &04 LVFCDUMBQQMZa GTFUUJOHTZBNM
Jobを作成 DBU&04KPCZBNM BQJ7FSTJPOCBUDIW LJOE+PC NFUBEBUB HFOFSBUF/BNFTBNQMFKPC BOOPUBUJPOT LVFVFYLTJPRVFVFOBNFNBJORVFVF໊Λࢦఆ TQFD
QBSBMMFMJTN DPNQMFUJPOT TVTQFOEUSVFUSVFʹ͢Δ͜ͱͰ,VFVFͷॲཧରʹ UFNQMBUF TQFD DPOUBJOFST OBNFEVNNZKPC JNBHFHDSJPLTTUBHJOHQFSGUFTUTTMFFQMBUFTU BSHT<T> SFTPVSDFT SFRVFTUT DQVl SFTUBSU1PMJDZ/FWFS &04 LVCFDUMDSFBUFGKPCZBNM
Jobを確認する LVCFDUMHFUKPCPZBNM BQJ7FSTJPOW JUFNT BQJ7FSTJPOCBUDIW LJOE+PC NFUBEBUB BOOPUBUJPOT LVFVFYLTJPRVFVFOBNFNBJO HFOFSBUF/BNFTBNQMFKPC
MBCFMT DPOUSPMMFSVJEGDFDBBGBFGD KPCOBNFTBNQMFKPCMK OBNFTBNQMFKPCMK OBNFTQBDFEFGBVMU ʜ TQFDTVTQFOEUSVF͕ফ͑ͯΔ CBDLP⒎-JNJU DPNQMFUJPOT QBSBMMFMJTN TFMFDUPS NBUDI-BCFMT DPOUSPMMFSVJEGDFDBBGBFGD ʜ
Podが起動する LVCFDUMHFUQPE /".&3&"%:45"5643&45"354"(& TBNQMFKPCMKKGL$PNQMFUFENT TBNQMFKPCMKNGLS$PNQMFUFENT TBNQMFKPCMKWONQ$PNQMFUFENT
デモまとめ ▶ Kueueをインストールする ▶ ResourceFlavor/ClusterQueue/QueueリソースをセットアップするとKueueを利 ⽤する準備が完了 ▶ Jobリソースを以下のように設定して作成するとKueueがJobの スケジューリングを管理 ▶
“kueue.x-k8s.io/queue-name”アノテーションで利⽤するQueueを指定 ▶ .spec.suspend: true に設定してJobを作成 ▶ 後はKueueがClusterQueueなどの設定に応じてJobをスケジューリング (Jobの.spec.suspendをfalseに変更する) ▶ 以下のような仕組みはKubernetesの機能をそのまま利⽤ ▶ Job→Podリソースの作成 ▶ NodeへのPodのスケジューリング
まとめ
まとめ ▶ Kueueの全体像をデモを交えながら簡単に説明しました ▶ 本当はKueueの実際の実装に即したアーキテクチャなどやClusterQueueの各種機能の紹介 も⾏いたかったのですが、時間の関係で別で⾏えればと思います ▶ MLワークロード扱かったりVolcanoを触ったりしたことないので、ここらへん詳しい⽅ Kueueの印象とか使い勝⼿良さそうかとか教えてください! ▶
調査メモ: https://zenn.dev/bells17/scraps/16625963e51d23 ▶ 検証リポジトリ: https://github.com/bells17/tmp/tree/main/kueue-example
Thanks / Question? ▶ @bells17 ▶ Slide: https://speakerdeck.com/bells17 ▶ @bells17_