Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
10分で理解したかったlibkrun / I wanted to understand lib...
Search
Kohei Ota
March 20, 2021
Technology
2.9k
2
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
10分で理解したかったlibkrun / I wanted to understand libkrun but
Kohei Ota
March 20, 2021
More Decks by Kohei Ota
See All by Kohei Ota
CloudNative Meets WebAssembly: Exploring Wasm's Potential to Replace Containers
inductor
4
3.6k
The Cloud Native Chronicles: 10 Years of Community Growth Inside and Outside Japan
inductor
0
190
Cracking the KubeCon CfP
inductor
2
920
KubeCon Recap -Platform migration at Scale-
inductor
1
1.1k
コンテナビルド最新事情 2022年度版 / Container Build 2022
inductor
3
600
データベースとストレージのレプリケーション入門 / Intro-of-database-and-storage-replication
inductor
28
6.6k
KubeConのケーススタディから振り返る、Platform for Platforms のあり方と その実践 / Lessons from KubeCon case studies: Platform for Platforms and its practice
inductor
3
1k
オンラインの技術カンファレンスを安定稼働させるための取り組み / SRE activity for online conference platform
inductor
1
1.4k
Kubernetesネットワーキング初級者脱出ガイド / Kubernetes networking beginner's guide
inductor
22
7.7k
Other Decks in Technology
See All in Technology
CDKで書くECSのベストプラクティス、 改めて考え直す2026 #cdkconf2026
makies
3
940
OPENLOGI Company Profile for engineer
hr01
1
74k
AI時代のPlaywright活用(システムテストを自動化する ー 実行エンジンにPla ywrightを選んだ理由)
ynisqa1988
2
950
AI時代こそ、スケールしないことをしよう -「作る人」から「なぜ作るか」を考える人へ / Do Things That Don't Scale in the AI Era — From How to Why
kaminashi
1
100
Vポイント分析基盤におけるデータモデリング20年史
taromatsui_cccmkhd
4
720
クラウドを使う側から、作る側へ / 大吉祥寺.pm 2026前夜祭
fujiwara3
5
1.2k
変更し続けられるシステムをどう保つか — AI時代のSSoTという設計原則
kawauso
1
1.1k
AI Native なプロダクト組織の立ち上げ方 : 生産性 100 倍への挑戦
mikesorae
0
1.3k
なぜ、あなたのAPIは使われないのか? AX時代の設計原則、ガードレール、運用体制
yokawasa
1
210
ダッシュボード"開発"について 〜使われるダッシュボードのつくりかた〜
kimichan
0
200
生成AI×AWS CDK×AWS FISで"振り返れる"ミニGameDayをつくろう
yoshimi0227
2
530
壊して学ぶAWS CDK: そのcdk deployで消えるもの、残るもの
k_adachi_01
1
480
Featured
See All Featured
What’s in a name? Adding method to the madness
productmarketing
PRO
24
4.1k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
37
6.5k
Producing Creativity
orderedlist
PRO
348
40k
30 Presentation Tips
portentint
PRO
1
350
How to build a perfect <img>
jonoalderson
1
5.8k
Typedesign – Prime Four
hannesfritz
42
3.1k
Unlocking the hidden potential of vector embeddings in international SEO
frankvandijk
0
880
Odyssey Design
rkendrick25
PRO
2
730
The agentic SEO stack - context over prompts
schlessera
0
850
Have SEOs Ruined the Internet? - User Awareness of SEO in 2025
akashhashmi
0
400
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
17k
Ten Tips & Tricks for a 🌱 transition
stuffmc
0
150
Transcript
10分で完全理解する したかった libkrun Kernel/VM探検隊online part2 Presented by @_inductor_
自己紹介 名前: 太田 航平 (@inductor) 所属: HPE (Hewlett Packard Enterprise)
役職: ソリューションアーキテクト (Cloud Native and DevOps) Container Runtime MeetupやCloud Native Daysの運営、謎のアンバサダー業 好きなこと: 無限にスケールする(無限にスケールするとは言ってない)インフラ
Disclaimer 今日はコンテナがちょっと好きな素人がちょっと低めのレイヤに手を出したらやけどし て何もわからなかったという話をします 低レイヤに気軽に手を出してもらうためのきっかけにしてください!!! 低めのレイヤが好きな皆様にあたりましては、ツッコミとアドバイスをしていただきつ つ、発表者の理解度を上げていただけますようお願い申し上げます😭
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がある
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がある 現時点での疑問 ・なぜ既存のコード使ってまで新しく 作ったの?新規性は?
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がある 現時点での疑問 ・なぜ既存のコード使ってまで新しく 作ったの?新規性は?
とりあえずデモ
しようとおもったらエラーで 動きませんでした😇😇😇
さわってみてわかること • コンテナのプロセス分離をVMでやるためのツール ◦ example手順ではPodmanの導入が必須 ◦ 現状crunとのインテグレーションをサポートしてるっぽい • Upstreamをpullしてきてもexampleが動かなくてつらい ◦
Fedoraで配布されてるバイナリを dnfから引っ張ってきたらうまくいく? → やっぱなんかだめっぽい (原因がわからんので Issue立てた)
さわってみてわかること • コンテナのプロセス分離をVMでやるためのツール ◦ example手順ではPodmanの導入が必須 ◦ 現状crunとのインテグレーションをサポートしてるっぽい • Upstreamをpullしてきてもexampleが動かなくてつらい ◦
Fedoraで配布されてるバイナリを dnfから引っ張ってきたらうまくいく? → やっぱなんかだめっぽい (原因がわからんので Issue立てた) ランタイムの分離レベルが VMなので、いわゆる サンドボックス型のランタイムに分類できる ・gVisor ・Kata container(QEMU) ・Firecracker(*ここでの分類は厳密にはちょっと違うが ..) など
既存のVM型ランタイムとの違い
既存のVM型ランタイムとの違い LinuxのnamespaceはPodごとに分割 VMがnamespaceごとなのでコンテナ間では共有 のVMを使う →コンテナプロセスはKVM(ホスト上でのプロセス) の子プロセス的な扱い
既存のVM型ランタイムとの違い LinuxのnamespaceはPodごとに分割 VMがnamespaceごとなのでコンテナ間では共有 のVMを使う →コンテナプロセスはKVM(ホスト上でのプロセス) の子プロセス的な扱い Docker + Kataでやってみると・・・ Dockerの中でcontainerdが動いてその後ろで
KataのFirecrackerプロセス→kata-shimの順番で プロセスが生えている
既存のVM型ランタイムとの違い VMが分かれていても同じコンテキストで処理が行われる crun(コンテナランタイム)のプロセス=VMのプロセス →crun実行時にVMが立ち上がる
Namespace内における独立したVM間の連携
Namespace内における独立したVM間の連携 VMをPodごとに作らないので Namespace内のコンテナを動的に管理できる? 異なるVMで実行されている場合でも マウントポイントとNetwork namespace を介してコンテナ間で通信
Deeper dive...したい... • 既存の仮想化やラインタイム周りの知識、Rust力が欠如しすぎてて これ以上わからなかった(つらい) • 開発者(RHのエンジニア)のスライドにも詳しく書かれている • 誰か知見を教えて下さい!!!!!!!!!!!!!!!!!!!!!
ありがとうございました