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

10分で理解したかったlibkrun / I wanted to understand libkrun but

Kohei Ota
March 20, 2021

10分で理解したかったlibkrun / I wanted to understand libkrun but

Kohei Ota

March 20, 2021
Tweet

More Decks by Kohei Ota

Other Decks in Technology

Transcript

  1. 自己紹介 名前: 太田 航平 (@inductor) 所属: HPE (Hewlett Packard Enterprise)

    役職: ソリューションアーキテクト (Cloud Native and DevOps) Container Runtime MeetupやCloud Native Daysの運営、謎のアンバサダー業 好きなこと: 無限にスケールする(無限にスケールするとは言ってない)インフラ
  2. libkrun とは • Red Hatのエンジニアが去年作り始めたVMM(Virtual Machine Monitor) • VMM? →

    コンテナ目線で考えるUnikernelとmicroVM(前回の資料) • 最低限のデバイスエミュレーションとC APIを備えたRust製のMicroVM ◦ virtio-console, virtio-fs, virtio-vsockなどを実装 ◦ Firecrackerなどからコードを拝借してるらしい • macOSでも動くっぽい(動作未確認) • C APIを提供しているのでライブラリとしても使える ◦ crunで実験的にサポートを開始 • ネットワークコンポーネントにvirtio-netは使わず、vsockベースのTSI(Transparent Socket Impersonation)という”革新的な方法”で自前実装 ◦ 依存関係ライブラリとして libkrunfwがある
  3. libkrun とは • Red Hatのエンジニアが去年作り始めたVMM(Virtual Machine Monitor) • VMM? →

    コンテナ目線で考えるUnikernelとmicroVM(前回の資料) • 最低限のデバイスエミュレーションとC APIを備えたRust製のMicroVM ◦ virtio-console, virtio-fs, virtio-vsockなどを実装 ◦ Firecrackerなどからコードを拝借してるらしい • macOSでも動くっぽい(動作未確認) • C APIを提供しているのでライブラリとしても使える ◦ crunで実験的にサポートを開始 • ネットワークコンポーネントにvirtio-netは使わず、vsockベースのTSI(Transparent Socket Impersonation)という”革新的な方法”で自前実装 ◦ 依存関係ライブラリとして libkrunfwがある 現時点での疑問 ・なぜ既存のコード使ってまで新しく 作ったの?新規性は?
  4. libkrun とは • Red Hatのエンジニアが去年作り始めたVMM(Virtual Machine Monitor) • VMM? →

    コンテナ目線で考えるUnikernelとmicroVM(前回の資料) • 最低限のデバイスエミュレーションとC APIを備えたRust製のMicroVM ◦ virtio-console, virtio-fs, virtio-vsockなどを実装 ◦ Firecrackerなどからコードを拝借してるらしい • macOSでも動くっぽい(動作未確認) • C APIを提供しているのでライブラリとしても使える ◦ crunで実験的にサポートを開始 • ネットワークコンポーネントにvirtio-netは使わず、vsockベースのTSI(Transparent Socket Impersonation)という”革新的な方法”で自前実装 ◦ 依存関係ライブラリとして libkrunfwがある 現時点での疑問 ・なぜ既存のコード使ってまで新しく 作ったの?新規性は?
  5. さわってみてわかること • コンテナのプロセス分離をVMでやるためのツール ◦ example手順ではPodmanの導入が必須 ◦ 現状crunとのインテグレーションをサポートしてるっぽい • Upstreamをpullしてきてもexampleが動かなくてつらい ◦

    Fedoraで配布されてるバイナリを dnfから引っ張ってきたらうまくいく? → やっぱなんかだめっぽい (原因がわからんので Issue立てた) ランタイムの分離レベルが VMなので、いわゆる サンドボックス型のランタイムに分類できる ・gVisor ・Kata container(QEMU) ・Firecracker(*ここでの分類は厳密にはちょっと違うが ..) など