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.7k
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
670
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
The Cost Of JavaScript in 2023
addyosmani
45
6.6k
How to Think Like a Performance Engineer
csswizardry
19
1.1k
Docker and Python
trallard
40
3.1k
Speed Design
sergeychernyshev
24
570
Optimising Largest Contentful Paint
csswizardry
33
2.9k
Producing Creativity
orderedlist
PRO
341
39k
Building Applications with DynamoDB
mza
90
6.1k
Product Roadmaps are Hard
iamctodd
PRO
48
10k
Building Flexible Design Systems
yeseniaperezcruz
327
38k
The Straight Up "How To Draw Better" Workshop
denniskardys
232
140k
How GitHub (no longer) Works
holman
311
140k
Gamification - CAS2011
davidbonilla
80
5k
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
ご清聴ありがとうございました 写真: 筆者撮影 @ アムステルダム市内