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
690
Debugging Applications in Kubernetes
tksm
16
4k
Kubernetes with Prometheus
tksm
5
2.4k
Kubernetes v1.7 の主な変更点 / Kubernetes v1.7 features
tksm
0
1.6k
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
247
1.3M
Dealing with People You Can't Stand - Big Design 2015
cassininazir
365
25k
How To Stay Up To Date on Web Technology
chriscoyier
789
250k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
26
1.9k
Building Applications with DynamoDB
mza
91
6.1k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
47
5.1k
jQuery: Nuts, Bolts and Bling
dougneiner
61
7.5k
Why You Should Never Use an ORM
jnunemaker
PRO
54
9.1k
The Pragmatic Product Professional
lauravandoore
32
6.3k
Large-scale JavaScript Application Architecture
addyosmani
510
110k
Fashionably flexible responsive web design (full day workshop)
malarkey
405
66k
Build The Right Thing And Hit Your Dates
maggiecrowley
33
2.4k
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
ご清聴ありがとうございました 写真: 筆者撮影 @ アムステルダム市内