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
Recap: eBPF セッションつまみ食い / eBPF sessions @ KubeCo...
Search
Takashi Kusumi
May 29, 2023
1
3.6k
Recap: eBPF セッションつまみ食い / eBPF sessions @ KubeCon EU 2023
Kubernetes Meetup Tokyo #58 KubeCon EU 2023 Recap の発表資料です。
https://k8sjp.connpass.com/event/282273/
Takashi Kusumi
May 29, 2023
Tweet
Share
More Decks by Takashi Kusumi
See All by Takashi Kusumi
Unit Testing for Prometheus Rules
tksm
6
2.8k
Z Lab の教育への取組 / Cloud Native Education Efforts at Z Lab
tksm
7
1.4k
Recap: Securing Kubernetes with Admission Controllers
tksm
2
1.5k
Istio Mutual TLS
tksm
0
680
Debugging Applications in Kubernetes
tksm
16
4k
Kubernetes with Prometheus
tksm
5
2.4k
Kubernetes v1.7 の主な変更点 / Kubernetes v1.7 features
tksm
0
1.5k
kubectl apply の仕組み / How kubectl apply works
tksm
1
9.7k
Prometheus による Kubernetes モニタリングの基礎 / Kubernetes monitoring with Prometheus
tksm
3
3k
Featured
See All Featured
XXLCSS - How to scale CSS and keep your sanity
sugarenia
246
1.3M
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
44
2.2k
Rails Girls Zürich Keynote
gr2m
94
13k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
27
4.3k
Six Lessons from altMBA
skipperchong
27
3.5k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
169
50k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
232
17k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
4
370
Adopting Sorbet at Scale
ufuk
73
9.1k
Site-Speed That Sticks
csswizardry
0
28
jQuery: Nuts, Bolts and Bling
dougneiner
61
7.5k
Fireside Chat
paigeccino
34
3k
Transcript
Kubernetes Meetup Tokyo Takashi Kusumi <
[email protected]
> KubeCon EU 2023 Recap
ηογϣϯͭ·Έ৯͍ 写真: 筆者撮影 @ Tulip Experience Amsterdam
$ whoami ▶ 久住 貴史 / KUSUMI Takashi ▶ ゼットラボ株式会社
+ k8s 上のストレージ(CSI)や GPU を担当 ▶ ログツール「stern」メンテナ ▶ 興味 👀 + オブザーバビリティ、デバッグ 2 eBPF の領域
eBPF とは ▶ extended Berkeley Packet Filter (2014〜) ▶ Linux
カーネル内で実⾏される仮想マシンの技術 + 検証機 (veri fi er) があり安全性が検証される ▶ tcpdump 等で使われていたパケットフィルタリングを拡張したもの + classic BPF (cBPF) とよばれる + 現在は cBPF も内部的に eBPF に変換されて実⾏される ▶ eBPF はパケットに限らずカーネルの様々な部分にアタッチできる + たとえば tracepoint は 2000 以上ある (Linux 5.15.0) 3 画像出典: https://github.com/ebpf-io/ebpf.io-website/blob/master/src/images/logo-black.svg 名前は「eBee」
クラウドネイティブでの活⽤例 eBPF ベースのコンテナネットワーク(CNI) iptables の代わりに eBPF を使い⾼速・⾼機能を実現 サイドカー不要のサービスメッシュを提供 4 画像出典
cilium ロゴ: https://cilium.io/brand/ pixie ロゴ: https://github.com/pixie-io/pixie/blob/main/.readme_assets/pixie-horizontal-color.png 他の活⽤例は https://ebpf.io/applications/ をご覧ください Kubernetes 上のアプリケーションの可視化ツール コードの変更やエージェントが不要で トラフィックの可視化や継続的なプロファイリングを実現
ηογϣϯͭ·Έ৯͍
Past, Present, and Future of eBPF in Cloud Native Observability
Past, Present, and Future of eBPF in Cloud Native Observability
7 ▶ 内容 + クラウドネイティブのオブザーバビリティ における eBPF の過去・現在・未来 + 適⽤例 Pixie, Parca の紹介 ▶ スピーカー + Natalie Serrino, New Relic + Frederic Branczyk, Polar Signals ▶ オリジナル資料 + 発表動画 / スライド / Sched 出典: https://www.youtube.com/watch?v=pb_eAVAWq2o
eBPF はキャズムを超えた 8 出典: https://static.sched.com/hosted_ fi les/kccnceu2023/f5/Past%2C%20Present%2C%20and%20Future%20of%20eBPF%20in%20Cloud%20Native%20Observability.pptx.pdf ▶ 技術的な⽬新しさの段階から 具体的な課題解決の技術と
なってきた ▶ 発表者の個⼈的な意⾒として はキャズムを超えた + 発表者はそれぞれ Pixie, Parca の開発者
eBPF の歴史 9 出典: https://static.sched.com/hosted_ fi les/kccnceu2023/f5/Past%2C%20Present%2C%20and%20Future%20of%20eBPF%20in%20Cloud%20Native%20Observability.pptx.pdf ▶ 〜2014 +
Classic BPF の時代 + tcpdump, Wireshark ▶ 2014 + BPF が eBPF に + 汎⽤的で⾮常にパワフルに + ツールが充実してくる + libbpf, bpftrace, bcc ▶ 現在 + 様々なプロジェクトで利⽤ Linux Kernel 3.15 で eBPF が実装 ネットワーク (CNI) オブザーバビリティ セキュリティ オブザーバビリティ BPF Compiler Collection
eBPF による Pixie のリクエストトレース 10 アプリケーション側の変更なしで様々なトレースができる
minikube で Pixie を試す ▶ px deploy で k8s にデプロイできる
+ この場合 Web UI はクラウド版 ▶ minikube で簡単に試せる + 📝 docker ドライバは⾮対応 + kvm2 (linux) / hyperkit (mac) を利⽤ ▶ デモアプリを簡単にデプロイできる 👍 + px demo deploy px-sock-shop + デモで有名な Sock Shop も⽤意 11
ユーザ空間のトレース uprobe/uretprobe ▶ eBPF ではユーザ空間プロセスもトレースできる + uprobe / uretprobe という仕組み
▶ TLS も 暗号ライブラリのコールをフックすればトレース可 💀 + 📝 OpenSSL / Golang TLS (crypto/tls) など ▶ 多くのパッケージのバイナリはデバッグ情報を持たない ▶ debuginfod という仕組みで HTTP 経由でデバッグ情報を取得 + gdb, delve, bpftrace などのクライアントが対応 12
eBPF オブザバビリティの未来 ▶ パフォーマンスの改善 ▶ アクセシビリティ + どこをどうやって計測するか? ▶ 分析
+ 今は低レイヤの知識が必要 13 ⌛タイムトラベルデバッガ https://engineering.fb.com/2021/04/27/developer-tools/reverse-debugging/
eBPF 201
eBPF 201 15 ▶ 内容 + eBPF 開発のベストプラクティス + 「eBPFとは?」
の次のトピック + 📝 201 は⼤学の授業番号に由来 + ⼊⾨編を 101 という + 201 は 2 年⽬に学ぶこと ▶ スピーカー + Sanjeev Rampal, Red Hat + Donald Hunter, Red Hat ▶ オリジナル資料 + 発表動画 / スライド / Sched 出典: https://www.youtube.com/watch?v=9vUJhbqf4eo
カーネル API の安定性 16 出典: https://static.sched.com/hosted_ fi les/kccnceu2023/58/ebpf201-kubecon2023.pdf ▶ カーネルの
UAPI は⾮常に安定している + UAPI = User-space API + 基本 API が削除されることはない ▶ eBPF で利⽤する kfunc やトレースポイント は UAPI に含まれない + 安定したインタフェースではない点に注意
eBPF 開発のベストプラクティス 1/2 ▶ 対象とする Linux カーネルの最⼩バージョンを決める + その最⼩バージョンのヘッダを使って開発 +
バージョンによって使える eBPF の機能が違う ▶ プログラミングスタックを決める + C: libxdp, libbpf (ネイティブライブラリ) + Go: cilium/ebpf, libbpfgo + Rust: Aya, libbpf-rs 17 開発機 対象システム Kernel 5.6 Kernel 5.2 headers Kernel 5.2 Kernel 5.16 app1.c app1.bpf.c Debian RHEL9 図の原案 https://static.sched.com/hosted_ fi les/kccnceu2023/58/ebpf201-kubecon2023.pdf
eBPF 開発のベストプラクティス 2/2 ▶ ポータブルなカーネル定義を使う + 最⼩バージョンの vmlinux.h から必要なものだけを残して定義 +
▶ カーネルのバージョンや各機能の有効性をチェック ▶ eBPF プログラムの管理インフラを使う + Red Hat の開発している bpfd の紹介 + 複数の eBPF プログラムの扱いや権限の問題を解決 18 出典 https://static.sched.com/hosted_ fi les/kccnceu2023/58/ebpf201-kubecon2023.pdf
Life Without Sidecars - Is eBPF's Promise Too Good to
Be True?
Life Without Sidecars - Is eBPF's Promise Too Good to
Be True? 20 ▶ 内容 + eBPF はサイドカーを置き換えるか? + スピーカーは Linkerd の開発者 + サービスメッシュは今でもサイド カー形式が最適という結論 + サイドカーの利点がまとまっている ▶ スピーカー + Zahari Dichev, Buoyant ▶ オリジナル資料 + 発表動画 / スライド / Sched 出典: https://www.youtube.com/watch?v=onQuRBy5rgo
eBPF の制限 ▶ ブロックできない ▶ ループの制限 ▶ 命令数の制限 ▶ 状態管理が限られる
21 eBPF だけではサービスメッシュは実装できない 😢 📝 サイドカーレスの Cilium サービスメッシュも Envoy を利⽤ 画像出典: https://github.com/isovalent/ebeedex/blob/main/images/new-bee.png
ノード上の共有プロクシーモデル 22 出典 https://static.sched.com/hosted_ fi les/kccnceu2023/f7/zahari-dichev-ebpf-talk.pdf ▶ ノード上のプロクシーを共有 + Cilium
サービスメッシュはこれ ▶ Pod →プロクシーは eBPF でカー ネル内で処理できる + ユーザ空間のコピーが⾛らない ▶ ⽋点: 分離されていない + 公平性やリソース枯渇時の問題 + セキュリティ上の課題 + 問題が起きたときの影響
サイドカーモデルの利点 ▶ プロクシのリソースも Pod に合わせてスケールされる ▶ プロクシの問題の影響が限定的 ▶ メンテナンスが容易 ▶
分離されているためセキュリティの境界が明確 ▶ シンプル 23
その他の eBPF セッション
Tales from an eBPF Program’s Murder Mystery 25 ▶ 内容
+ eBPF 周りで起きたトラブルのデバッグ + eBPF を使うCilium と Datadog Agent の TC のレースが原因 + デバッグ時に⾒るべきポイントがわかる ▶ スピーカー + Hemanth Malla, Datadog + Guillaume Fournier, Datadog ▶ オリジナル資料 + 発表動画 / スライド / Sched 出典: https://www.youtube.com/watch?v=YK7GyEJdJGo
Veri fi able GitHub Actions with eBPF 26 ▶ 内容
+ eBPF を使ったセキュリティツール Tracee で GitHub Action の悪意ある PR の実⾏を防⽌・検出 ▶ スピーカー + Jose Donizetti, Aqua ▶ オリジナル資料 + 発表動画 / スライド / Sched 出典: https://www.youtube.com/watch?v=6vNt9JMU9p4 出典 https://github.com/aquasecurity/tracee/blob/main/docs/images/tracee.png
The Next Log4jshell?! Preparing for CVEs with eBPF! 27 ▶
内容 + eBPF を使ったセキュリティツール Tetragon の紹介 + Cilium プロジェクトの⼀部 ▶ スピーカー + Natalia Reka Ivanko, Isovalent + John Fastabend, Isovalent ▶ オリジナル資料 + 発表動画 / スライド 出典: https://www.youtube.com/watch?v=u8HKg5pENj4 出典 https://github.com/cilium/tetragon/blob/main/docs/content/en/docs/logo.png
·ͱΊ 写真: 筆者撮影 @ ザーンセ・スカンス⾵⾞村 eBPF ロゴ: https://ebpf.foundation/brand-guidelines/
まとめ ▶ buzzword から具体的な課題解決の技術へ ▶ eBPF の適⽤範囲が固まってきた + ネットワーク +
オブザーバビリティ + セキュリティ ▶ eBPF の課題・制限等の知⾒が共有されてきた + 互換性の問題 + eBPF プログラム間の⼲渉 + eBPF のサイドカーレス vs. 従来のサイドカー 29 出典: https://github.com/isovalent/ebeedex/blob/main/images/webinar-bee.png
ご清聴ありがとうございました 写真: 筆者撮影 @ アムステルダム市内