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

KubeCon + CloudNativeCon Europe 2022 Recap

KubeCon + CloudNativeCon Europe 2022 Recap

Kubernetes Meetup Tokyo #51 - https://k8sjp.connpass.com/event/246719/

Kazuki Suda

May 26, 2022
Tweet

More Decks by Kazuki Suda

Other Decks in Technology

Transcript

  1. @superbrothers SUDA Kazuki / @superbrothers ▶ Preferred Networks, Inc. /

    エンジニア ▶ Scalar, Inc. / 技術アドバイザ ▶ Kubernetes Meetup Tokyo 共同主催者 ▶ Cloud Native Ambassador (CNCF) ▶ 技術評論社「Kubernetes実践⼊⾨」、「みんなのDocker/Kubernetes」共著書 ▶ オライリー「⼊⾨ Prometheus」、「Kubernetes で実践するクラウドネイティブ DevOps」監訳書 2
  2. @superbrothers 今回振り返るセッション ▶ Unlimited Data Science Libraries, One Container Image,

    No Installation! ▶ Improving GPU Utilization using Kubernetes ▶ Building a Nodeless Kubernetes Platform + GKE Autopilot を開発した際の選択肢について知れて楽しい + Borg のなかで動かす選択肢もあったけど、 
 結果 Kubernetes + VM ノードというシンプルな選択になった理由について ▶ How to Migrate 700 Kubernetes Clusters to Cluster API with Zero Downtime + Mercedes-Bentz が既存のクラスタを Cluster API 管理に移⾏した話 + PFN も Cluster API を使ってクラスタを管理しているので楽しいセッションだった 3 今回振り返らないけど楽しかったセッション たぶん @_inductor_ が話してくれるはず
  3. @superbrothers Unlimited Data Science Libraries, 
 One Container Image, No

    Installation! Marcel Hild, Red Hat & Kenneth Hoste, Ghent University
  4. @superbrothers Unlimited Data Science Libraries,One Container Image, No Installation! 


    Marcel Hild, Red Hat & Kenneth Hoste, Ghent University ▶ AI/ML, HPC インフラでコンテナを使う挑戦 ▶ HPC (High-Performance Computing a.k.a. supercomputing) インフラならではの課題が多くある ▶ その1つが複数ツール X 複数バージョンが使える環境を求められること + 組み合わせ毎にコンテナイメージを作ろう... → イメージ数が⼤爆発 + 全部⼊りイメージを作ろう → イメージサイズが⼤爆発 ▶ 解決策 → Environment modules(Lmod + EasyBuild) + module load example/1.2.3 のような感じでバージョンを切り替えられる + 事前にツール郡をビルドして ROX なボリュームに配置しておき、コンテナ実⾏時にマウント + ベースイメージは最低限必要なツールだけを含むようにできる 5
  5. Unlimited Data Science Libraries,One Container Image, No Installation! 
 Marcel

    Hild, Red Hat & Kenneth Hoste, Ghent University 6 ‰†‘“ƒ†Ž &RQWDLQHU,PDJH –Žš ‚…‚” ‚•‘•Šƒ •‰†“Šƒ“‚“Š†” ‰†Ģƒ‚”†ģ„•‚Š†“ŠŽ‚ˆ†Š„–…†”ę Ɣ š•‰‚•‚”‘†„Š‡Š„—†“”Š Ɣ Ž†–”†‡–Šƒ“‚“Š†”‚…‚‘‘Š„‚•Š” Ɣ –‘š•†“˜Š•‰‘“†Ĵ…†‡Š†…†™•†”Š” ‰†Ĵ…†Ž‚…•†ƒŒ†™‚Ž‘† ÂÄ よくある感じ
  6. ”†“”˜‚•Ž“†Ę˜‰‚••…Ğ  —œ †”“ ˜Ŕėŗ ‚”†ŠŽ‚ˆ†  —Ŕ †”“ ˜ŔėŘ

    ‚”†ŠŽ‚ˆ† ėėė  —œ †”“ ˜Ŕėŗ ‚”†ŠŽ‚ˆ† š“„‰ š“„‰œėś ‚”†ŠŽ‚ˆ† ėėė  —œ †”“ ˜Ŕėŗ ‚”†ŠŽ‚ˆ† š“„‰œėś ėėė ‚”†ŠŽ‚ˆ† •†ƒŒ ƒ‚”† š“„‰œėŚ †”“ ˜Ŕėŕ †”“ ˜ŔėŔ Š‘ʐ…‚ ŖėœėŒ Ž‘†ˆŖėŕėŔ –•Š‘†—†“”Š”ƅƈ–•Š‘†ŠŽ‚ˆ†” –•Š‘†•”ƅƈ–•Š‘†ŠŽ‚ˆ†” —†“˜†Šˆ‰•ŠŽ‚ˆ†”ėėė ˜ŠŽ‚ˆ†”ėėė ‰†‘“ƒ†Ž ÂÅ Unlimited Data Science Libraries,One Container Image, No Installation! 
 Marcel Hild, Red Hat & Kenneth Hoste, Ghent University 7 イメージ数が大爆発!🤯 イメージサイズが大爆発!🤯
  7. ”†“”˜‚•Ž“†Ę˜‰‚••…Ğ  —œ †”“ ˜Ŕėŗ ‚”†ŠŽ‚ˆ†  —Ŕ †”“ ˜ŔėŘ

    ‚”†ŠŽ‚ˆ† ėėė  —œ †”“ ˜Ŕėŗ ‚”†ŠŽ‚ˆ† š“„‰ š“„‰œėś ‚”†ŠŽ‚ˆ† ėėė  —œ †”“ ˜Ŕėŗ ‚”†ŠŽ‚ˆ† š“„‰œėś ėėė ‚”†ŠŽ‚ˆ† •†ƒŒ ƒ‚”† š“„‰œėŚ †”“ ˜Ŕėŕ †”“ ˜ŔėŔ Š‘ʐ…‚ ŖėœėŒ Ž‘†ˆŖėŕėŔ –•Š‘†—†“”Š”ƅƈ–•Š‘†ŠŽ‚ˆ†” –•Š‘†•”ƅƈ–•Š‘†ŠŽ‚ˆ†” —†“˜†Šˆ‰•ŠŽ‚ˆ†”ėėė ˜ŠŽ‚ˆ†”ėėė ‰†‘“ƒ†Ž ‚‚ˆ†Ž†• Šˆ‰•Ž‚“†Ĝ ÂÆ Unlimited Data Science Libraries,One Container Image, No Installation! 
 Marcel Hild, Red Hat & Kenneth Hoste, Ghent University 8
  8. ༬ᐣଚ஘୴஗୥ଞஔப୤ૼ౲૴଴ଉ૴ᚌ༄  Ɣ ଘଛૻ૿ᇑᱚଛ8FCଐଁଗᡀපଛ(16 ./$PSFૼ౲૸଻ +VQZUFS DPEFTFSWFS Ɣ QSFCVJMUଚBMMJOPOF ᄎᬧଚ஗୒஄஗஘ഃ᳙ം଺

    ଚDPOUBJOFSJNBHFଗᰓං Ɣ ,VCFSOFUFTୂଫଘୃଙᝅହଚ૿ଖଲ0, Ɣ ༰ᬫᐵଚ࿃Ẉଛଟ૲ମ଺෿ૻଚ૴ ,QWHUDFWLYH (QYLURQPHQW Ɣ 䝬䝙䝣䜵䝇䝖䜢┤᥋᭩䛡䜛ே⏝ ż ෆ〇䛾$UJR:RUNIORZグ㏙'6/ S\WKRQ ᭷䜚 NXEHFWO Ɣ ᇑೲଗୡப୷ୂᣇᷡଇଖૉଢ଼஗୧୭ଗ࿃᫜ଇଏ૴ଢଘ෿ଁ Ɣ ,VCFSOFUFTଞᝅ᮱ଟ࿳ଇᄎᬧଐૼ஌୹ஃ୕୧୶ୂጦૻଚ૿ଖ૴૴ Ɣ ࿧᚟$-*ଗJNBHFCVJMEߓNBOJGFTUBQQMZମଗ࿃᫜෫ᥱ ൅ካྪᤞଲ࿤ᄕ Ɇ ƆĬŌƧăĒȽƉƧŚȽȦƆȽŘƆĹʼnţăȽȦȦĭƆƧȽǡȽȦţȽƿţƉŌĒƉȽǝȽȦȦȽŘƆĹĒDŽĒąȽƟƉèĹŚȏƆDž Ɣ QVTIଚଇଗᇑೲଗᣇᷡ௲ଞୡப୷ૼଢ଼஗୧୭ଗഓᙩ෫ᥱଚსଗ࿃᫜෫ HJUHIPTUᲧቨ Ɣ EFGBVMUଟBMMJOPOF୒ஏப୦ ᦰ൅ଗ%PDLFSὍMFጦ૿ଃଘଲ෫ᥱ EXLOGDQGUXQ &/,WRRO ⼀⽅で、PFN のコンテナイメージは... 全部入り
 戦略!!
  9. ༬ᐣଚ஘୴஗୥ଞஔப୤ૼ౲૴଴ଉ૴ᚌ༄  Ɣ ଘଛૻ૿ᇑᱚଛ8FCଐଁଗᡀපଛ(16 ./$PSFૼ౲૸଻ +VQZUFS DPEFTFSWFS Ɣ QSFCVJMUଚBMMJOPOF ᄎᬧଚ஗୒஄஗஘ഃ᳙ം଺

    ଚDPOUBJOFSJNBHFଗᰓං Ɣ ,VCFSOFUFTୂଫଘୃଙᝅହଚ૿ଖଲ0, Ɣ ༰ᬫᐵଚ࿃Ẉଛଟ૲ମ଺෿ૻଚ૴ ,QWHUDFWLYH (QYLURQPHQW Ɣ 䝬䝙䝣䜵䝇䝖䜢┤᥋᭩䛡䜛ே⏝ ż ෆ〇䛾$UJR:RUNIORZグ㏙'6/ S\WKRQ ᭷䜚 NXEHFWO Ɣ ᇑೲଗୡப୷ୂᣇᷡଇଖૉଢ଼஗୧୭ଗ࿃᫜ଇଏ૴ଢଘ෿ଁ Ɣ ,VCFSOFUFTଞᝅ᮱ଟ࿳ଇᄎᬧଐૼ஌୹ஃ୕୧୶ୂጦૻଚ૿ଖ૴૴ Ɣ ࿧᚟$-*ଗJNBHFCVJMEߓNBOJGFTUBQQMZମଗ࿃᫜෫ᥱ ൅ካྪᤞଲ࿤ᄕ Ɇ ƆĬŌƧăĒȽƉƧŚȽȦƆȽŘƆĹʼnţăȽȦȦĭƆƧȽǡȽȦţȽƿţƉŌĒƉȽǝȽȦȦȽŘƆĹĒDŽĒąȽƟƉèĹŚȏƆDž Ɣ QVTIଚଇଗᇑೲଗᣇᷡ௲ଞୡப୷ૼଢ଼஗୧୭ଗഓᙩ෫ᥱଚსଗ࿃᫜෫ HJUHIPTUᲧቨ Ɣ EFGBVMUଟBMMJOPOF୒ஏப୦ ᦰ൅ଗ%PDLFSὍMFጦ૿ଃଘଲ෫ᥱ EXLOGDQGUXQ &/,WRRO ⼀⽅で、PFN のコンテナイメージは... 全部入り
 戦略!! $ wc -l Dockerfile 810 Dockerfile 以前はツール x バージョンの組み合わせで多くのイメージを管理していたが、今は基本的に全部入りがひとつ 現状問題はなさそうな雰囲気だけど、大きめなバージョンアップでいつ上げるのかが議論になりがち? 基本みんな同じ巨大なイメージを使うので、ローカルのキャッシュが効いていればすぐ実行はされる
  10. ‰†”–•Š ‚”š‚„„†””•„†•“‚”‡•˜‚“†”•‚„Œ–”Šˆ†—Š“Ž†•Ž…–†” 䚉 “‚…Š•Š‚˜‚š•†•–”†“”‡ ”š”•†Ž”Ž‚‚ˆ†•‰†Š“†—Š“Ž†• 䚉 ‰†Ĵ‚ˆ”•Š„Ž…–†‡Š†””‘†„Š‡š˜‰‚••„‰‚ˆ†Š”‰††—Š“Ž†• 䚉 PRGXOH„ŽŽ‚…•„‰†„Œ‡“‚—‚Š‚ƒ†Ž…–†”Ęĸ–Ĺ‚…Ž…–†”Ęě 䚉

    ˜Ž‚ŠŠŽ‘†Ž†•‚•Š”ę ‰••‘ęĪĪŽ…–†”ė”–“„†‡“ˆ†ė†•Ī…„”Ī…–†”Ĵ‚‘†“ė‘…‡ Ɣ —–•Š‡“ŠˆŠ‚ŠŽ‘†Ž†•‚•ŠŠ„ Ɣ …–†‡Š†”˜“Š••†Š„ Ɣ „•Š—†š…†—†‘†…掂Š•‚Š†… Ɣ †””‘‘–‚“Ęƒ–•…†‡‚–•Š Ĵƒ‚”†…” Ɣ ‰••‘ęĪĪŽ…–†”ė”–“„†‡“ˆ†ė†• Ɣ …†“ŠŽ‘†Ž†•‚•ŠŠ–‚ Ɣ …–†‡Š†”˜“Š••†Š–‚“„ Ɣ „•Š—†š…†—†‘†…掂Š•‚Š†… Ɣ †—†‘†…‡“‰Š†“‚“„‰Š„‚Ž…–†” Ɣ ”•‘‘–‚“ĸƈŚŗž‡”š”•†Ž”Ĺ Ɣ ‰••‘”ęĪĪŽ…ė“†‚…•‰†…„”ėŠ ÂÈ Unlimited Data Science Libraries,One Container Image, No Installation! 
 Marcel Hild, Red Hat & Kenneth Hoste, Ghent University 11 Lmod が新しい実装とのこと。
 モジュール設定を Lua で書ける。
  11. —Š“Ž†•Ž…–†”ꆙ‚Ž‘† 7KHVROXWLRQ H[DPSOHYHUVLRQ EDVKH[DPSOHFRPPDQGQRWIRXQG PRGXOHXVHDSSVPRGXOHV PRGXOHDYDLOH[DPSOH °DSSVPRGXOHV° H[DPSOH PRGXOHORDGH[DPSOH H[DPSOHYHUVLRQ

     •†•”‡DSSVPRGXOHVH[DPSOHOXD ORFDOURRW DSSVVRIWZDUHH[DPSOH SUHSHQGBSDWK ²3$7+SDWK-RLQ URRWELQ SUHSHQGBSDWK /'B/,%5$5<B3$7+SDWK-RLQ URRWOLE SUHSHQGBSDWK /,%5$5<B3$7+SDWK-RLQ URRWOLE SUHSHQGBSDWK 3<7+213$7+SDWK-RLQ URRWOLES\WKRQVLWHSDFNDJHV VHWHQY ²(;$03/(B5227³URRW VHWHQY ²(;$03/(B9(56,21³ VHWHQY ²(;$03/(B(1$%/(B'(%8*B287387³ ÂÉ Unlimited Data Science Libraries,One Container Image, No Installation! 
 Marcel Hild, Red Hat & Kenneth Hoste, Ghent University 12 anyenv や asdf みたいな感じ
  12. ‰†”–•Š †•ġ”–”††—Š“Ž†•Ž…–†”Ĝ ľ–Ž†Ž–•†…‚•”‘‚˜•ŠŽ† š•“„‰œėś †”“‡˜ŔėŘ †”“‡˜Ŕėŗ  ‘†ˆ ėėė ‚”†ŠŽ‚ˆ†

    •†ƒŒƒ‚”† ‚”†ŠŽ‚ˆ† •†ƒŒƒ‚”† š‚ŽŠ„‚…Šˆ 8VHU$ ”†“ ”†“” ėėė ėėė ľę†‚…Ĵš‚šĘ‚—–Ž†•‰‚•„‚ƒ†Ž–•†…”ŠŽ–•‚†–”šŠ•Ž‚š„•‚Š†“”   Šˆ‰‚…†“ ÂÊ Unlimited Data Science Libraries,One Container Image, No Installation! 
 Marcel Hild, Red Hat & Kenneth Hoste, Ghent University 13 ツールがインストールされた
 読み取り専用のボリュームを実行時にマウント! 必要最低限のツールだけをイメージに含める! イメージサイズ--、イメージ数-- インタラクティブな環境ではいいけど、 バッチジョブでの再現性が気になるかもしれない 🤔 みなさんがどうされているか教えてください!!
  13. @superbrothers Improving GPU Utilization using Kubernetes Maulin Patel & Pradeep

    Venkatachalam, Google ▶ GPU はめっちゃ⾼いリソースなので、⾼い使⽤率を⽬指したい ▶ GPU の使⽤率をどう⾼めるか、K8s で GPU は CPU と異なり単位未満の要求が認められていない ▶ 解決策として、ひとつの GPU を複数のコンテナで共有する + いくつかの⽅法があるが、このセッションでは Timesharing と Multi Instance GPUs にフォーカス ▶ Timesharing + 複数のコンテナを1つの GPU 上で動作させる。各コンテナはタイムスライスを取得する。 ▶ Multi Instance GPUs (MIGs) + A100 のような特定の NVIDIA GPU がサポートする機能 + 1つの GPU を複数のインスタンスに物理的に分離する ▶ GKE ではすでにどちらも使⽤できる 15
  14. Improving GPU Utilization using Kubernetes Maulin Patel & Pradeep Venkatachalam,

    Google 16 GPU は CPU と異なり単位未満要求を許可していない。 つまり、GPU を 0.5 とかできない。
  15. Improving GPU Utilization using Kubernetes Maulin Patel & Pradeep Venkatachalam,

    Google 17 複数のコンテナを1つの GPU 上で動作させる。
 各コンテナはタイムスライスを取得する。 もし1つのコンテナしか GPU を使っていなければ GPU 全体を使えるし、
 あとから増えたら公平に時間分割される。 GKE がGPU 設定はいいかんじにやってくれるそう!
  16. Improving GPU Utilization using Kubernetes Maulin Patel & Pradeep Venkatachalam,

    Google 18 node-pool 毎に設定できるみたい ちなみにこの設定、GCP のドキュメントを検索してもヒットしない気がするんだけど、まだ隠されてる? 探し方が悪い可能性もある。
  17. Improving GPU Utilization using Kubernetes Maulin Patel & Pradeep Venkatachalam,

    Google 19 ユーザからの使い方としては、Pod に
 指定のラベルセレクタと toleration をつけるくらい 1ノードに 10 の nvidia.com/gpu リソースがある! ノードによって nvidia.com/gpu 1つの意味が
 変わってくるのが、若干の混乱を呼びそう? しかし、これ以外良い方法がないように思う。
  18. Improving GPU Utilization using Kubernetes Maulin Patel & Pradeep Venkatachalam,

    Google 20 すべてのプロセスは分割されたアドレス空間を取得するが、 メモリ制限がないので、OOMs が発生する。 ワークロード側が GPU メモリの使用量に
 気を使わないと、他のプロセスを巻き込む。 OOM を避けるためのいくつかの選択肢! PyTorch は 1.8.0 からできるみたい
  19. Improving GPU Utilization using Kubernetes Maulin Patel & Pradeep Venkatachalam,

    Google 21 Timesharing と異なり、MIG は物理的に分離される!
  20. Improving GPU Utilization using Kubernetes Maulin Patel & Pradeep Venkatachalam,

    Google 22 A100 の場合は、最大で7インスタンスまでで、
 それをどう割るかを事前に設定しておく感じ。
  21. Improving GPU Utilization using Kubernetes Maulin Patel & Pradeep Venkatachalam,

    Google 23 デプロイの仕方は Timesharing と同様 nvidia.com/gpu 1つの大きさも同じくノードによって異なっちゃう このマニフェストをみると toleration が設定されていないが、 GCP のドキュメントをみてもどうやら MIG の場合は
 自動でノードに taint が付かない? なぜだろう。
  22. Improving GPU Utilization using Kubernetes Maulin Patel & Pradeep Venkatachalam,

    Google 24 A100 で MIG を使いつつ、Timesharing も有効にできるっぽい。 (やるかどうかはべつにして) Timesharing の場合、空いている場合には
 使い切ってくれるのでお得感ある。 ただ、メモリ制限を事前に設定しとかないといけないので、
 有効活用できるかはわからない MIG は Timesharing と違ってリソースが物理的に分離されるので、 ワークロードが気にすることが少ない(メモリ制限も勝手にされる) ちなみに、最後まで聞いてもこの Timesharing は GCP 独自っぽいんだけど、我々が使う方法はあるんだろうか。 知ってる人がいたらおしえて!
  23. ஘୫ப୧౲᚟ᙖ෿௣ଞଏ଱ଛෛ଺ᢖୃଗ૴଻ଃଘ Ɣ MPXు௤ଞQSJPSJUZଟൎ᚟௣ᶰଚଇ ż ଍ଞిି଺୴୸஡୶ᒖଞଢ଼ச୦ୱ୶ᒂẠ ௝྿ጹᶍଞൎ᚟஘୫ப୧ዳᶍៗଛෘᒘ౵ ଛସ଻෺௝1SJPSJUZ෺༘ଗଞ1SFNFNQUJPOୂ᫜૶ଃଘଗ'BJSOFTTୂ࿃ᙩ ż IJHIଟTPGURVPUBଛସ଻௣ᶰ᭍྿ጯ CZFWFSQFBDFLVCFUISPUUMFS

    Ɣ (16୼ப୷ଛ$161PEୂᔫᱞ MPX MPXDQVଛ൅ૻ଼ଖ૴଻ᙬᚣ ż (16୼ப୷ଞ(16ૼഃ᳙ൎ᚟ଅ଼ଖ૴ଖଲ$16 .FNPSZૼ៣૴ଖ૴଻໱෶ૼ૲଻ ż $161PEૼ(161PEୂ஄஛ୱଢ଼ଅ଼଻ଘ຦଻ଞଗ$161PEଟMPXDQV MPX ଚ QSJPSJUZଛNVUBUJOHXFCIPPLଗᦰංᛶଛ༥቗ଇଖ૴଻ Ɣ *OUFSBDUJWF1PE᚟ଛ3FTPVSDF4IBSJOH/PEF UBJOUFE ୂ౩ଓଖᷡ௲᳧ᤅ ż ୧ୟ୦ஓபஙୂኟᏍଉ଻ଘ૴૶൩଺െ଺૊ ż ஔப୤ଟBOOPUBUJPOଗሗ྿ଉ଻૊NVUBUJOHXFCIPPLଗૉ Ŷ SFTPVSDFSFRVFTUଟ࿲ଅଚSFRVFTUTୂሕଔ#VSTUBCMF1PEଛდ൑༥቗ Ŷ (16ଟ$6%"@7*4*#-&@%&7*$&4BMMୂᓥം Ŷ UPMFUJPOOPEFTFMFDUPS᠙ୂᓥം  PFN での GPU 使⽤率を改善する取り組み ノードの全 GPU を Pod 間で共有する! どの GPU を使うかはユーザ任せ GPU メモリを確保しっぱなしのプロセスを 一定期間で殺す等の取り組みも
  24. 機械学習プラットフォームエンジニア ▶ ⾃由度・拡張性・使いやすさのトレードオフが取れた⼤規模機械学習 プラットフォームの機能設計と開発 + 例: 機械学習ワークフローツール、実験管理ツール、 
 GPUやMN-Core向け統合開発環境の構築 ▶

    ⼤規模機械学習プラットフォームの運⽤と運⽤改善(⾃動化等) + 例: ⾃動サーバプロビジョニング、パブリッククラウド連携による 運⽤効率化、インフラ健全性の⾃動診断と保守省⼒化 ▶ ⼤規模機械学習プラットフォーム上での計算資源 
 (GPU, MN-Coreを含む)配分の最適化 + 例: Kubernetes Schedulerの機能拡張、 
 リソース利⽤量制限拡張の開発 ▶ 最先端の分散計算基盤技術の Proof of Concept 構築及び 
 プラットフォームでの実⽤化 + 例: Kubernetes上での分散強化学習実⾏ツール We're hiring! https://www.preferred.jp/ja/careers/
  25. @superbrothers Appendix ▶ Unlimited Data Science Libraries, One Container Image,

    No Installation! - Marcel Hild, Red Hat & Kenneth Hoste, Ghent University + https://sched.co/ytlJ ▶ Improving GPU Utilization using Kubernetes - Maulin Patel & Pradeep Venkatachalam, Google + https://sched.co/ytlt ▶ PFN のオンプレML基盤の取り組み / オンプレML基盤 on Kubernetes 〜PFN、ヤフー〜 ▶ オンプレML基盤 on Kubernetes 〜PFN、ヤフー〜(2022/3/24) - YouTube 27