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
クラウドネイティブの基盤要素、コンテナの今と未来
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
うたもく
August 03, 2023
Technology
7.1k
21
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
クラウドネイティブの基盤要素、コンテナの今と未来
https://event.cloudnativedays.jp/cndf2023/talks/1910
うたもく
August 03, 2023
More Decks by うたもく
See All by うたもく
OSS の脆弱性対応の舞台裏
utam0k
2
1.5k
オープンソースソフトウェアへの解像度🔬
utam0k
18
5.5k
CNCF Project の作者が考えている OSS の運営
utam0k
7
1.2k
Podman with WebAssembly
utam0k
2
1.1k
Possibility of OCI Container Runtime with Rust
utam0k
3
1.7k
Container-related technologies supporting Gitpod
utam0k
1
1.3k
詳説 OCIコンテナランタイム youki@第15回 コンテナ技術の情報交換会
utam0k
5
2.3k
Rust 🤝 Container Runtime @ Rust.Tokyo 2021
utam0k
2
2k
「あれ、コンテナって何だっけ?」から生まれた Rust で書かれた コンテナランタイム youkiの話@ODC2021
utam0k
6
4.3k
Other Decks in Technology
See All in Technology
ここは地獄!つらい朝会を体験することで、チームとしてのより良い振る舞いに気づくワークショップ / The stand-up meeting from hell in the game industry
scrummasudar
0
440
Atlassian Cloudサポート業務でのAIエージェント活用事例
smt7174
0
120
AIエージェントに財布を渡す日 ― 承認付き"買い物エージェント"を作って実演
yama3133
0
110
Oracle Base Database Service 技術詳細
oracle4engineer
PRO
15
110k
LangfuseによるLLMOps基盤の構築と活用事例
zozotech
PRO
1
200
Pavlokで始める電撃駆動開発
sgrsn
0
120
論語・武士道・産業革命から見る かわるもの、かわらないもの
ichimichi
8
1.9k
歴史から理解するクラウドインフラのしくみ
kizawa2020
0
190
QAタスクをスキル化したいときに考えること
aomoriringo
0
130
データ組織の転換期 一足飛びしない段階的戦略
leveragestech
PRO
0
120
データエンジニアこそ組織のオントロジーに向き合うべき — 問いに答えるAIから、事業を動かすAIへ
gappy50
7
2.8k
脱Jenkins、インターン生が挑んだCIツールGitHubActions移行
mixi_engineers
PRO
1
280
Featured
See All Featured
職位にかかわらず全員がリーダーシップを発揮するチーム作り / Building a team where everyone can demonstrate leadership regardless of position
madoxten
64
56k
We Analyzed 250 Million AI Search Results: Here's What I Found
joshbly
1
1.7k
Amusing Abliteration
ianozsvald
1
240
Un-Boring Meetings
codingconduct
0
350
The Straight Up "How To Draw Better" Workshop
denniskardys
239
140k
Exploring anti-patterns in Rails
aemeredith
3
450
Skip the Path - Find Your Career Trail
mkilby
1
170
How to make the Groovebox
asonas
2
2.3k
Bash Introduction
62gerente
615
220k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
659
62k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
130k
Rails Girls Zürich Keynote
gr2m
96
14k
Transcript
クラウドネイティブの基盤要素 コンテナの今と未来 CloudNative Days Fukuoka 2023 Toru Komatsu(@utam0k)
2 Preferred Networks, Inc. 社内向けオンプレML基盤の開発‧運⽤ 趣味でのOSS活動 メンテナ opencontainers/runtime-spec containers/youki レビュワー
containerd/runwasi @utam0k KOMATSU Toru
3 Preferred Networks, Inc. 社内向けオンプレML基盤の開発‧運⽤ 趣味でのOSS活動 メンテナ opencontainers/runtime-spec containers/youki レビュワー
containerd/runwasi @utam0k KOMATSU Toru We are Hiring!!
コンテナの今 4 00
Kubelet Linux など Container Runtime High-Level Low-Level OCI Runtime Spec
Container Runtime I nterface Kubeletの実⾏の流れ 5
Kubelet Linux など Container Runtime Low-Level Container Runtime I nterface
6
Kubelet Linux など Container Runtime Low-Level Container Runtime I nterface
gRPC 7
Kubelet Linux など Container Runtime High-Level Low-Level OCI Runtime Spec
Container Runtime I nterface 8
Kubelet Linux など Container Runtime High-Level Low-Level OCI Runtime Spec
Container Runtime I nterface イメージとかコンテナ管理 9
Kubelet Linux など Container Runtime High-Level Low-Level OCI Runtime Spec
Container Runtime I nterface コンテナの作成 ワンショットバイナリ 10
コンテナの今 ? 11 00
Kubelet Linux など Container Runtime High-Level Low-Level OCI Runtime Spec
Container Runtime I nterface ここでは OCI Runtime Spec を満たすものをコンテナと呼ぶ 12
Kubelet Linux など Container Runtime High-Level Low-Level OCI Runtime Spec
Container Runtime I nterface JSON設定ファイルと サブコマンド 例) ./runc create $id でコンテナとは何か定めている 13
Kubelet Linux など Container Runtime High-Level Low-Level OCI Runtime Spec
Container Runtime I nterface 14
Kubelet Linux など Container Runtime High-Level Low-Level OCI Runtime Spec
Container Runtime I nterface Kubeletの実行の流れ 15
Kubelet Linux など Container Runtime High-Level Low-Level OCI Runtime Spec
Container Runtime I nterface Kubeletの実行の流れ 16
Container Runtime I nterface Low-Level OCI Runtime Spec ➔ マイクロサービス的
➔ プラグイン機構 17
A P I Image Services Snapshot Services Containers Service Tasks
Service ‧ ‧ ‧ Container Runtime I nterface Core Backend ContentStore plugin / local Snapshotter plugin / overlay / … Runtime v2 shim client containerd shim OCI Runtime Spec ttrpc 18
マイクロサービス的なアーキテクチャ A P I Image Services Snapshot Services Containers Service
Tasks Service ‧ ‧ ‧ Container Runtime I nterface Core ContentStore plugin / local Snapshotter plugin / overlay / … Runtime v2 shim client containerd shim OCI Runtime Spec ttrpc Backend 19
A P I Image Services Snapshot Services Containers Service Tasks
Service ‧ ‧ ‧ Container Runtime I nterface Core Backend ContentStore plugin / local Snapshotter plugin / overlay / … Runtime v2 shim client containerd shim OCI Runtime Spec ttrpc ワンショットバイナリ 20
21 Kubelet → Container Runtime → Container ➔ High /
Low-Level Container Runtime Specification ➔ Container Runtime Interface ➔ OCI Runtime Specification containerd ➔ マイクロサービス ➔ プラグイン機構 Recap
コンテナの未来 22 01
⚠ 個⼈の⾒解 ⚠ 23
WebAssembly 24 02
WebAssembly 25
WebAssembly 26 Portability Small Size Security
Kubelet Linux など Container Runtime High-Level Low-Level OCI Runtime Spec
Container Runtime I nterface 27
Kubelet Linux など Container Runtime High-Level Low-Level OCI Runtime Spec
Container Runtime I nterface 28
Kubelet Linux など Container Runtime High-Level Low-Level OCI Runtime Spec
Container Runtime I nterface このあたりでWebAssemblyの対応が必要 よんだ? 29
30 containerd/runwasi containerd-shimによる拡張 現実世界で既に実験段階 Docker Desktop Azure Kubernetes Service runwasi
A P I Image Services Snapshot Services Containers Service Tasks
Service ‧ ‧ ‧ Container Runtime I nterface Core Backend ContentStore plugin / local Snapshotter plugin / overlay / … Runtime v2 shim client containerd shim OCI Runtime Spec ttrpc この部分の拡張 31
Kubelet Linux など Container Runtime High-Level Low-Level Container Runtime I
nterface WebAssembly 実行の流れ 32
33 ktock/container2wasm 既存のコンテナ資源の活⽤ container2wasm
Lazy Pulling 34 03
35 $ nerdctl --snapshotter=stargz run python:3.7-esgz python3 -c 'exit()' index-sha256:6a42...4948:
done |++++++++++++++++++++++++++++++| manifest-sha256:1c57...20c5: done |++++++++++++++++++++++++++++++| config-sha256:f590...1df5: done |++++++++++++++++++++++++++++++| elapsed: 11.0 s total: 4.8 Ki (1.5 KiB/s) $ nerdctl run python:3.7-org python3 -c 'exit()' index-sha256:6008....1237: done |++++++++++++++++++++++++++++++| manifest-sha256:48ea...30ce7: done |++++++++++++++++++++++++++++++| config-sha256:94c9....9290: done |++++++++++++++++++++++++++++++| layer-sha256:f860....fbf6: done |++++++++++++++++++++++++++++++| layer-sha256:d779....3cc5: done |++++++++++++++++++++++++++++++| … layer-sha256:adbd....f52c: done |++++++++++++++++++++++++++++++| layer-sha256:c495....736a: done |++++++++++++++++++++++++++++++| elapsed: 41.3s total: 321.3 (16.7 MiB/s) Lazy Pulling
36 $ nerdctl --snapshotter=stargz run python:3.7-esgz python3 -c 'exit()' index-sha256:6a42...4948:
done |++++++++++++++++++++++++++++++| manifest-sha256:1c57...20c5: done |++++++++++++++++++++++++++++++| config-sha256:f590...1df5: done |++++++++++++++++++++++++++++++| elapsed: 11.0 s total: 4.8 Ki (1.5 KiB/s) $ nerdctl run python:3.7-org python3 -c 'exit()' index-sha256:6008....1237: done |++++++++++++++++++++++++++++++| manifest-sha256:48ea...30ce7: done |++++++++++++++++++++++++++++++| config-sha256:94c9....9290: done |++++++++++++++++++++++++++++++| layer-sha256:f860....fbf6: done |++++++++++++++++++++++++++++++| layer-sha256:d779....3cc5: done |++++++++++++++++++++++++++++++| … layer-sha256:adbd....f52c: done |++++++++++++++++++++++++++++++| layer-sha256:c495....736a: done |++++++++++++++++++++++++++++++| elapsed: 41.3s total: 321.3 Mi (16.7 MiB/s) layersがない 起動までがはやい!
37 cache stargz-snapshotter Container Registry FUSE Driver Overlayfs User Kernel
open(“file”)
A P I Image Services Snapshot Services Containers Service Tasks
Service ‧ ‧ ‧ Container Runtime I nterface Core Backend ContentStore plugin / local Snapshotter plugin / overlay / … Runtime v2 shim client containerd shim OCI Runtime Spec ttrpc この部分の拡張 38
A P I Image Services Snapshot Services Containers Service Tasks
Service ‧ ‧ ‧ Container Runtime I nterface Core Backend ContentStore plugin / local Snapshotter plugin / overlay / … Runtime v2 shim client containerd shim OCI Runtime Spec ttrpc stargz snapshotter grpc 39
40 cache stargz-snapshotter Container Registry FUSE Driver Overlayfs open(“file”) ①
② ④ ③ ⑤ ⑥ ⑦ User Kernel
41 cache stargz-snapshotter Container Registry FUSE Driver Overlayfs open(“file”) ①
② ④ ③ ⑤ ⑥ ⑦ User Kernel
42 cache stargz-snapshotter Container FUSE Driver Overlayfs open(“file”) ① ②
④ ③ ⑤ ⑥ ⑦ User Kernel Registry
43 cache stargz-snapshotter Container Registry FUSE Driver Overlayfs open(“file”) ①
② ④ ③ ⑤ ⑥ ⑦ User Kernel
44 cache stargz-snapshotter Container FUSE Driver Overlayfs open(“file”) ① ②
③ ⑤ ⑥ ⑦ User Kernel ④ Registry
45 $ nerdctl --snapshotter=stargz run python:3.7-esgz python3 -c 'exit()' index-sha256:6a42...4948:
done |++++++++++++++++++++++++++++++| manifest-sha256:1c57...20c5: done |++++++++++++++++++++++++++++++| config-sha256:f590...1df5: done |++++++++++++++++++++++++++++++| elapsed: 11.0 s total: 4.8 Ki (1.5 KiB/s) $ nerdctl run python:3.7-org python3 -c 'exit()' index-sha256:6008....1237: done |++++++++++++++++++++++++++++++| manifest-sha256:48ea...30ce7: done |++++++++++++++++++++++++++++++| config-sha256:94c9....9290: done |++++++++++++++++++++++++++++++| layer-sha256:f860....fbf6: done |++++++++++++++++++++++++++++++| layer-sha256:d779....3cc5: done |++++++++++++++++++++++++++++++| … layer-sha256:adbd....f52c: done |++++++++++++++++++++++++++++++| layer-sha256:c495....736a: done |++++++++++++++++++++++++++++++| elapsed: 41.3s total: 321.3 (16.7 MiB/s) Lazy Pulling
OCI Runtime Spec v1.1.0 46 04
Kubelet Linux など Container Runtime High-Level Low-Level OCI Runtime Spec
Container Runtime I nterface これ! 47
先⽉に3年ぶりのリリース! v1.0.2 からは21個の新しい機能 cgroup v2 / idmapped mount / seccomp
notify … OCI Runtime Specification v1.1.0 48
sched_setattr(2) をコンテナに適⽤される コンテナに対してnice値とか設定可能に コンテナってプロセスなんだ...というのを強く意識させられる 実装 runc#3895 , youki#1706 , crun✅
Scheduler entity #1188 49
ioprio_set (2) をコンテナに適⽤される バッチ処理とかI/Oが重たいけど重要度は⾼くない処理で書き 込みで他のコンテナへの迷惑を少なくする 実装 runc#3783 , youki ✅,
crun ✅ I/O Priority #1191 50
51 WebAssembly ➔ 新しい形 ➔ containerd-shim-wasm[edge|time]-v1 Lazy Pulling ➔ コンテナ起動の⾼速化
➔ Snapshotter Plugin OCI Runtime Specification v1.1.0 ➔ sched_setattr(2) : nice値を変更可能に ➔ ioprio_set(2)r(2) : I/Oの優先度を変更可能に Recap
謝辞 52 05
stargz snapshotterの実装について 丁寧に解説して頂きました ありがとうございました 53 TOKUNAGA Kohei -san @ktock
/ @TokunagaKohei
Thanks you! 54