Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Kueue入門/Kueue Introduction

bells17
April 27, 2022

Kueue入門/Kueue Introduction

#k8sjp 第50回のLT資料です
https://k8sjp.connpass.com/event/244591/

bells17

April 27, 2022
Tweet

More Decks by bells17

Other Decks in Programming

Transcript

  1. Kueue⼊⾨
    Kubernetes Meetup Tokyo #50(2022/04/27)
    @bells17

    View Slide

  2. ▶ @bells17
    ▶ Software Engineer
    ▶ 普段やってること:
    + Kubernetes 関連コンポーネントの開発
    + Kubernetes as a Service開発
    ▶ Kubernetes SIG-Docs Japanese localization reviewer
    ▶ Kubernetes Internal Organizer
    ▶ #kubenews
    ▶ @bells17_

    View Slide

  3. #kubenews ほぼ毎週⾦曜22:00~YouTubeで配信中
    Kubernetes/Cloud Native関連のニュースを中⼼に技術雑談してます

    View Slide

  4. このセッションでわかること
    ▶ Kueueというアプリケーションがどんなものかを簡単に紹介できればと思ってます

    View Slide

  5. Kueueとは?

    View Slide

  6. Kueue
    ▶ Kubernetesネイティブなバッチ(ジョブ)スケジューラー
    ▶ Jobリソースを(ある意味)拡張することでJobリソースのキューイングの
    仕組みを提供してくれるアプリケーションになっている
    ▶ キュー管理者は予めResourceFlavor/ClusterQueue/Queueリソースを設定
    しておくことで、バッチユーザーが設定したキューを利⽤することができる

    View Slide

  7. Kueue Overview
    https://bit.ly/kueue-controller-design

    View Slide

  8. Kueue
    ▶ 以下のようなポイントはKubernetes⾃⾝の仕組みを使いつつ実現している
    + Jobリソースのマネジメントはkube-controller-managerを利⽤
    + Podのスケジューリングはkube-schedulerを利⽤
    ▶ Volcano(kube-batch)のJob API、ジョブライフサイクル管理、スケジューラー
    といったコアKubernetesにすでに存在する多くの機能を
    再実装している点を問題に感じたのがKueueを作成した背景の1つのよう
    ▶ ドキュメントなどから主なユースケースとしてMLワークロードのような
    ⼤規模バッチを多数同時並列で実⾏したいようなユースケースにおいて
    バッチの実⾏順序のコントロールやキューイングなどを⾏うため利⽤する想定?
    + ここらへん詳しい⼈教えてください
    (Design Docs読んでもなんとなくしか想像できなかった)

    View Slide

  9. 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

    View Slide

  10. ちょっとだけKueue Architecture

    View Slide

  11. デモ

    View Slide

  12. k8sクラスターを構築~Kueueをインストール
    LJOEDSFBUFDMVTUFSOBNFLVFVFFYBNQMF
    LVCFDUMBQQMZGIUUQTHJUIVCDPNDFSUNBOBHFSDFSUNBOBHFSSFMFBTFT
    EPXOMPBEWDFSUNBOBHFSZBNM
    LVCFDUMXBJUGPSDPOEJUJPOBWBJMBCMFUJNFPVUTODFSUNBOBHFS
    EFQMPZNFOUTDFSUNBOBHFSXFCIPPL
    LVCFDUMBQQMZLHJUIVCDPNLVCFSOFUFTTJHTLVFVFDPOpHEFGBVMU W

    View Slide

  13. 状態チェック
    LVCFDUMHFUOPEF
    /".&45"56430-&4"(&7&34*0/
    LVFVFFYBNQMFDPOUSPMQMBOF3FBEZDPOUSPMQMBOF NBTUFSNTW
    LVCFDUMOLVFVFTZTUFNHFUEFQMPZ
    /".&3&"%:6150%"5&"7"*-"#-&"(&
    EFQMPZNFOUBQQTLVFVFDPOUSPMMFSNBOBHFSNT
    LVCFDUMHFUDSEcHSFQLVFVFYLTJP
    DMVTUFSRVFVFTLVFVFYLTJP5;
    RVFVFTLVFVFYLTJP5;
    SFTPVSDFqBWPSTLVFVFYLTJP5;
    XPSLMPBETLVFVFYLTJP5;

    View Slide

  14. 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

    View Slide

  15. 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

    View Slide

  16. 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
    ʜ

    View Slide

  17. Podが起動する
    LVCFDUMHFUQPE
    /".&3&"%:45"5643&45"354"(&
    TBNQMFKPCMKKGL$PNQMFUFENT
    TBNQMFKPCMKNGLS$PNQMFUFENT
    TBNQMFKPCMKWONQ$PNQMFUFENT

    View Slide

  18. デモまとめ
    ▶ 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のスケジューリング

    View Slide

  19. まとめ

    View Slide

  20. まとめ
    ▶ Kueueの全体像をデモを交えながら簡単に説明しました
    ▶ 本当はKueueの実際の実装に即したアーキテクチャなどやClusterQueueの各種機能の紹介
    も⾏いたかったのですが、時間の関係で別で⾏えればと思います
    ▶ MLワークロード扱かったりVolcanoを触ったりしたことないので、ここらへん詳しい⽅
    Kueueの印象とか使い勝⼿良さそうかとか教えてください!
    ▶ 調査メモ: https://zenn.dev/bells17/scraps/16625963e51d23
    ▶ 検証リポジトリ: https://github.com/bells17/tmp/tree/main/kueue-example

    View Slide

  21. Thanks / Question?
    ▶ @bells17
    ▶ Slide: https://speakerdeck.com/bells17
    ▶ @bells17_

    View Slide