Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
10分で理解したかったlibkrun / I wanted to understand lib...
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
Kohei Ota
March 20, 2021
Technology
3k
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.7k
The Cloud Native Chronicles: 10 Years of Community Growth Inside and Outside Japan
inductor
0
210
Cracking the KubeCon CfP
inductor
2
960
KubeCon Recap -Platform migration at Scale-
inductor
1
1.1k
コンテナビルド最新事情 2022年度版 / Container Build 2022
inductor
3
620
データベースとストレージのレプリケーション入門 / Intro-of-database-and-storage-replication
inductor
28
6.7k
KubeConのケーススタディから振り返る、Platform for Platforms のあり方と その実践 / Lessons from KubeCon case studies: Platform for Platforms and its practice
inductor
3
1.1k
オンラインの技術カンファレンスを安定稼働させるための取り組み / SRE activity for online conference platform
inductor
1
1.4k
Kubernetesネットワーキング初級者脱出ガイド / Kubernetes networking beginner's guide
inductor
23
8.1k
Other Decks in Technology
See All in Technology
IoTとは〜? 数字で見るSORACOM UG【SORACOM UG Explorer 2026】
soracom
PRO
0
170
Copilot Coworkで「みのるん式」やってみた
minorun365
PRO
2
1.4k
攻撃 3 時間 vs 復旧 10 時間。アクセスキー流出の非対称性を体感するために CTF を作った話
kazzpapa3
1
140
Claude Codeから見る、エンジニアの世界の変容とその先
oikon48
8
5.3k
Autonomous AI Lakehouse - Live AI Hubから始めるセキュアなAIデータ活用 -
oracle4engineer
PRO
3
190
AI時代のエンジニアの情報発信〜個人の発信を組織の力に変える〜
ryo_kawamata
1
7.2k
生き様としてのSRE
hokkai7go
1
160
あなたのDartコードは丸見えかもしれない ~reFlutterで暴くFlutterアプリの中身と多層防御~
zozotech
PRO
0
770
SLOを阻む不安
sraku2159
0
220
AI Agent 時代のデータ基盤: ClickHouse で実現する 超高速分析とコスト削減の両立
jozono
0
110
視野はAIに、視座は人に / ai-for-breadth-humans-for-perspective
nkzn
6
2.8k
Don't write the architecture only in the prompt.
neohsu
0
310
Featured
See All Featured
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
35
2.9k
Mozcon NYC 2025: Stop Losing SEO Traffic
samtorres
1
600
Imperfection Machines: The Place of Print at Facebook
scottboms
270
14k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
52
6.2k
Reflections from 52 weeks, 52 projects
jeffersonlam
356
22k
The #1 spot is gone: here's how to win anyway
tamaranovitovic
4
1.2k
Faster Mobile Websites
deanohume
310
32k
A Guide to Academic Writing Using Generative AI - A Workshop
ks91
PRO
1
550
What the history of the web can teach us about the future of AI
inesmontani
PRO
2
780
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
9
1.6k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
21
1.7k
How to Talk to Developers About Accessibility
jct
2
610
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のエンジニア)のスライドにも詳しく書かれている • 誰か知見を教えて下さい!!!!!!!!!!!!!!!!!!!!!
ありがとうございました