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
うたもく
August 03, 2023
Technology
7.2k
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.6k
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.4k
詳説 OCIコンテナランタイム youki@第15回 コンテナ技術の情報交換会
utam0k
5
2.4k
Rust 🤝 Container Runtime @ Rust.Tokyo 2021
utam0k
2
2k
「あれ、コンテナって何だっけ?」から生まれた Rust で書かれた コンテナランタイム youkiの話@ODC2021
utam0k
6
4.4k
Other Decks in Technology
See All in Technology
会計事務所と顧問先の契約関係をOIDC・OAuthで表現する
terara
0
580
markdown-poster Introduction
kazamori
0
460
PM領域でのAI Agentの活用
lycorptech_jp
PRO
0
210
Nav2、Nav3 ... はたまた自作?〜 作って理解する Nav3 の設計意図 〜 / Nav2, Nav3 ... or Build Your Own? — Understanding Nav3's design intent by building it from scratch
yanzm
0
140
AI時代におけるプロダクト横断勉強会の設計
zozotech
PRO
0
100
本番に近いテストをもっと手軽に - Postmanで広がるAPIテストの世界 / Expanding the World of API Testing with Postman
yokawasa
1
210
[RSJ26] Building a VLA Model Based on Self-Distilled Classification
keio_smilab
PRO
0
160
Introduction to Sansan Meishi Maker Development Engineer
sansan33
PRO
0
470
When Token Pruning is Worse than Random: Understanding Visual Token Information in VLLMs
sansantech
PRO
0
220
【5分でわかる】セーフィー エンジニア向け会社紹介
safie_recruit
0
55k
いま好きなこと 最初はそんなに好きじゃなかった #tamagawadev
nishiuma
1
160
Introduction to Sansan, inc / Sansan Global Development Center, Inc.
sansan33
PRO
0
3.2k
Featured
See All Featured
コードの90%をAIが書く世界で何が待っているのか / What awaits us in a world where 90% of the code is written by AI
rkaga
63
45k
Heart Work Chapter 1 - Part 1
lfama
PRO
8
36k
Why You Should Never Use an ORM
jnunemaker
PRO
61
10k
The Pragmatic Product Professional
lauravandoore
37
7.4k
A Soul's Torment
seathinner
7
3.5k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
27k
Highjacked: Video Game Concept Design
rkendrick25
PRO
1
450
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
56
3.5k
Java REST API Framework Comparison - PWX 2021
mraible
34
9.7k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
49
10k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
17k
The State of eCommerce SEO: How to Win in Today's Products SERPs - #SEOweek
aleyda
2
11k
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