Successfully reported this slideshow.

KubeVirt 201 How to Using the GPU

0

Share

Upcoming SlideShare
KubeVirt 101
KubeVirt 101
Loading in …3
×
1 of 30
1 of 30

More Related Content

More from VirtualTech Japan Inc.

Related Books

Free with a 30 day trial from Scribd

See all

Related Audiobooks

Free with a 30 day trial from Scribd

See all

KubeVirt 201 How to Using the GPU

  1. 1. KubeVirt 20 1 ∼KubeVirtにおけるGPUの活用∼ 日本仮想化技術株式会社 遠山洋平 1
  2. 2. 前提知識 • K u b e V i r t を利用するには、少なくとも K u b e r n e t e s の( C L I など の)操作に慣れている必要があります • P o d は K u b e r n e t e s アプリケーションの基本的な実行単位であ り、作成する K u b e r n e t e s オブジェクトモデルの中で最小の単位 であるという原則の理解が必要です 2
  3. 3. K u b e V i r t について • K u b e V i r t 1 0 1 として公開しています。そちらをご覧ください • h t t p s : / / w w w . s l i d e s h a r e . n e t / V i r t u a l T e c h - J P / k u b e v i r t - 1 0 1 • 弊社ブログでも色々公開しています • h t t p s : / / t e c h . v i r t u a l t e c h . j p / a r c h i v e / c a t e g o r y / K u b e V i r t 3
  4. 4. K u b e V i r t の概要 4
  5. 5. K u b e V i r t プロジェクトの始まり • K u b e r n e t e s を仮想マシンとコンテナのオーケストレータにする のを目的 • 2 0 1 6 年に R e d H a t がプロジェクトをスタート • 2 0 1 7 年 1 月にオープンソース化 • 2 0 1 9 年に C N C F S a n d b o x として受け入れられた • A p a c h e 2 . 0 ライセンスで開発 5
  6. 6. K u b e V i r t の利点 • コンテナ化が難しいワークロード移行パスを提供 • 技術的な理由(古い O S / カーネルが必要 / アプリの改造不可) • ビジネス上の理由(市場投入までの時間、変換のコスト) • その他の K u b e V i r t のメリット • (筆者的には) V M で分離度を高めることでアプリケーションの セキュリティを向上させるメリットもあると考える 6
  7. 7. 今回のテーマ • N V I D I A G P U T e s l a を K u b e V i r t で使ってみます • 以下が必要です • N V I D I A T e s l a G P U • K u b e r n e t e s • K u b e V i r t • N V I D I A k u b e v i r t - g p u - d e v i c e - p l u g i n 7
  8. 8. 動作確認した構成 • C e n t O S 7 . 9 . 2 0 0 9 ( 3 . 1 0 . 0 - 1 1 6 0 . 2 5 . 1 . e l 7 . x 8 6 _ 6 4 ) • N V I D I A T e s l a P 1 0 0 および T e s l a T 4 • パススルーモード • K u b e r n e t e s 1 . 2 1 . 1 • D o c k e r 2 0 . 1 0 . 6 - 3 • K u b e V i r t 0 . 4 0 . 0 8
  9. 9. G P U を使う場合の 事前準備 9
  10. 10. 事前に行うこと • サーバーの B I O S で V T - x , V T - d などを有効化 • N V I D I A k u b e v i r t - g p u - d e v i c e - p l u g i n の Q u i c k s t a r t に書かれ ている設定を行う 1 . G R U B _ C M D L I N E _ L I N U X への追記 • i n t e l _ i o m m u = o n m o d p r o b e . b l a c k l i s t = n o u v e a u 2 . V F I O - P C I モジュール読み込みと対象デバイスの指定 1 0
  11. 11. ハマったこと • 「 v f i o - p c i 」モジュールがうまく動かない O S • サーバーの B I O S が古くて新しい G P U カードの認識が怪しい • 標準カーネルだとうまく認識されなくてサードパーティの 5 . 4 系 カーネルで動作した O S • 意外と古い C e n t O S 7 . 9 ベースとかの方がまともに動く 1 1
  12. 12. K u b e V i r t で G P U を使う ステップ 1 2
  13. 13. 導入までの流れ 1 . K u b e r n e t e s クラスターを構築 • ランタイムをインストール • k u b e a d m i n i t • C N I を導入( e x . C a l i c o , M u l t u s C N I e t c . . . ) 2 . K u b e V i r t をインストール 3 . N V I D I A k u b e v i r t - g p u - d e v i c e - p l u g i n を導入 4 . G P U を K u b e r n e t e s カスタムリソースで登録 1 3
  14. 14. K u b e V i r t のインストール • 0 . 4 0 . 0 を導入する例 1 . $ k u b e c t l a p p l y - f h t t p s : / / g i t h u b . c o m / k u b e v i r t / k u b e v i r t / r e l e a s e s / d o w n l o a d / v 0 . 4 0 . 0 / k u b e v i r t - o p e r a t o r . y a m l 2 . $ k u b e c t l a p p l y - f h t t p s : / / g i t h u b . c o m / k u b e v i r t / k u b e v i r t / r e l e a s e s / d o w n l o a d / v 0 . 4 0 . 0 / k u b e v i r t - c r . y a m l 3 . $ c u r l - L - o v i r t c t l h t t p s : / / g i t h u b . c o m / k u b e v i r t / k u b e v i r t / r e l e a s e s / d o w n l o a d / v 0 . 4 0 . 0 / v i r t c t l - v 0 . 4 0 . 0 - l i n u x - a m d 6 4 4 . $ c h m o d + x v i r t c t l 5 . $ s u d o c p v i r t c t l / u s r / l o c a l / b i n 1 4
  15. 15. N V I D I A k u b e v i r t - g p u - d e v i c e - p l u g i n を導入 • ソースを取得 • $ g i t c l o n e h t t p s : / / g i t h u b . c o m / N V I D I A / k u b e v i r t - g p u - d e v i c e - p l u g i n . g i t • マニフェストファイルを使って展開 • $ c d k u b e v i r t - g p u - d e v i c e - p l u g i n / m a n i f e s t s / • $ k u b e c t l c r e a t e - f n v i d i a - k u b e v i r t - g p u - d e v i c e - p l u g i n . y a m l 1 5
  16. 16. G P U を K u b e r n e t e s カスタムリソースで登録 • こんなファイルを使って K u b e V i r t に G P U 情報を登録 • k u b e c t l a p p l y - f k u b e v i r t c r . y a m l 1 6
  17. 17. G P U が K u b e r n e t e s に認識されたことを確認 • k u b e c t l d e s c r i b e n o d e を実行 • G P U が認識されていることを確認 • 出力されない場合 • N V I D I A k u b e v i r t - g p u - d e v i c e - p l u g i n デプロイ直後はプロセスが実 行されるまで認識されないので、ちょっと待つ • B I O S 、カーネル、 I O M M U 周りの設定を今一度確認 • ところで設定変更後に g r u b 2 - m k c o n f i g を実行した? 1 7
  18. 18. K u b e V i r t で G P U の利用 1 8
  19. 19. G P U 割り当てた V M の作成 • Y A M L を書いて k u b e c t l c r e a t e する • サンプル Y A M L を使ってみよう 1 . w g e t h t t p s : / / g i t h u b . c o m / N V I D I A / k u b e v i r t - g p u - d e v i c e - p l u g i n / b l o b / m a s t e r / e x a m p l e s / v m i - g p u . y a m l 2 . c a t v m i - g p u . y a m l 3 . k u b e c t l c r e a t e - f v m i - g p u . y a m l • 次スライドでちょっと説明 1 9
  20. 20. サンプルファイルのココを変更 • 割り当てたい G P U を指定 • O S イメージを指定 2 0
  21. 21. C D I イメージを使った V M 作成も可能 • 「 K u b e V i r t 1 0 1 」で説明した C o n t a i n e r i z e d D a t a I m p o r t e r ( C D I ) で作成したイメージボリュームを使用 • ボリュームを用いて、 G P U を割り当てた V M を作成可能 • パススルー . . . 実装 G P U の数だけ • v G P U . . . N V I D I A G R I D の構成による 2 1
  22. 22. 複数の G P U を V M に割り当てる • V M I を作成するための Y A M L にデバイスを列挙 • デバイスに識別する「 n a m e 」を複数指定 • V M に複数 G P U が割当て 2 2
  23. 23. U b u n t u 2 0 . 0 4 での利用例 • V M 内で次のソフトウェアをインストールすれば G P U を使って色々 できます • C U D A • c u D N N • T e n s o r f l o w 2 3 詳細は「Tensorflow GPUサポート」で検索
  24. 24. W i n d o w s での利用例 • V M 内で次のソフトウェアをインストールすれば G P U を使って色々 できます • C U D A • c u D N N • V i s u a l S t u d i o 2 0 1 9 • P y t h o n 3 • T e n s o r f l o w 2 4
  25. 25. 今後 • D o c k e r がそろそろアレなので、 C R I - O とか c o n t a i n e r d との組み 合わせも取り組む予定 • U b u n t u ベースも試す予定 • v G P U もいつかやりたい • M u l t u s C N I との連携について取り上げる予定 2 5
  26. 26. 2 6
  27. 27. 参考スライド スライド作成にあたり、参考にした文献などのまとめ 2 7
  28. 28. 2 8 • GitHub https://github.com/kubevirt • KubeVirt Intro: Virtual Machine Management on Kubernete s • Stephen Gordon - @xsgordon Chandrakanth Jakkid i • Fast Packet Processing with KubeVir t • Petr Horáček @Red Hat / David Vossel @Red Ha t • Virtualized GPU workloads on KubeVir t • David Vossel @Red Ha t • Vishesh Tanksale @NVIDI A • Using KubeVirt in Telco s • Abhinivesh Jain
  29. 29. 2 9 • RUNNING VIRTUAL MACHINES ON KUBERNETE S • Roman Mohr & Fabian Deutsch @Red Ha t • THE FOUL SIDE OF OPEN SOURCE NETWORKIN G • Thomas D. Nadeau @Red Ha t • Convergence of VM and containers orchestration using KubeVir t • Chunfu Wen @Red Hat
  30. 30. 3 0

×