Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

KubeVirt 201 How to Using the GPU

KubeVirt でNVIDIA Teslaを使う方法

  • Be the first to comment

  • Be the first to like this

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

×