Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
eBPF Tools on Kubernetes part1
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
ry
August 04, 2024
Technology
410
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
eBPF Tools on Kubernetes part1
ry
August 04, 2024
More Decks by ry
See All by ry
Kubernetesにおける学習基盤とLLMOpsの概要
ry
1
500
Kubernetesにおける推論基盤
ry
3
1.4k
Vault Secrets Operator Tutorial
ry
0
650
KyvernoとRed Hat ACMを用いたマルチクラスターの一元的なポリシー制御
ry
0
1.4k
明日から始められるKyvernoを用いたポリシー制御
ry
4
1k
CNDT2022 k8snovice Community introduction
ry
0
200
Policy Engine on Kubernetes
ry
1
1.5k
ConfigMap and Secret
ry
0
470
Policy Manager試してみた!
ry
0
490
Other Decks in Technology
See All in Technology
cdkd (CDK Direct)
gotok365
4
280
AIエージェントの監視、思考を見るか行動を見るか / Monitoring AI Agents: Thoughts or Actions
yusukeshimizu
2
170
慶應義塾大学 AI実践05 論文執筆の仕組み化
keio_smilab
PRO
7
3.8k
基本から分かる!AWSセキュリティ運用の考え方と任せ方
cmusudakeisuke
1
460
詳解 never 型 - ボトム型の性質を深掘り
nealle
0
160
増え続けるプロダクトの品質をどう担保するか。ProductSpecとTypeScriptによる取り組み
joere
3
1.6k
Active Directory と Entra ID のむむむな関係
murachiakira
PRO
4
1.7k
`go get`したらELFが降ってきた件
taiyow
0
190
Kiro を使うコツ (頼み方、覚えさせ方、任せ方) | 目指せ Kiro マスター 09
inariku
PRO
3
100
ライフワーク「猫でもわかるDirectConnect」
kentapapa
0
300
In-Context Learning再入門。ICLの勾配降下的解釈の研究動向を追ってみる。
dai08srhg
1
750
Content Mapper APIの応用例~CSS Modules、言語ファイル~
uhyo
2
630
Featured
See All Featured
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
9
1.7k
How STYLIGHT went responsive
nonsquared
100
6.4k
Odyssey Design
rkendrick25
PRO
2
930
Visualization
eitanlees
153
17k
Max Prin - Stacking Signals: How International SEO Comes Together (And Falls Apart)
techseoconnect
PRO
0
520
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
33
5.7k
How To Speak Unicorn (iThemes Webinar)
marktimemedia
1
630
HU Berlin: Industrial-Strength Natural Language Processing with spaCy and Prodigy
inesmontani
PRO
0
800
Heart Work Chapter 1 - Part 1
lfama
PRO
10
37k
Ten Tips & Tricks for a 🌱 transition
stuffmc
1
280
What Being in a Rock Band Can Teach Us About Real World SEO
427marketing
0
1.1k
WENDY [Excerpt]
tessaabrams
14
40k
Transcript
eBPFツールを使ってみた! (Observability編 Part 1) Kubernetes Novice Tokyo #33
参考 eBPF Applications Landscape
今回用いるサンプルアプリケーション # kubectl apply -f https://raw.githubusercontent.com/keyval-dev/microservices-demo/master/release/kubernetes-manifests.yaml # kubectl get pods
-n default NAME READY STATUS RESTARTS AGE adservice-64d674d84-kgjp5 1/1 Running 0 2m51s cartservice-68c568b947-ks85d 1/1 Running 2 (2m30s ago) 2m51s checkoutservice-74f77477d4-nlf62 1/1 Running 0 2m51s currencyservice-cd84b68-vbx9z 1/1 Running 0 2m51s emailservice-88fd5969b-m7757 1/1 Running 0 2m51s frontend-5f5f58ff9f-bmrgh 1/1 Running 0 2m51s loadgenerator-5c46bcfb7d-npjgr 1/1 Running 0 2m49s paymentservice-7d58f78948-5qkgr 1/1 Running 0 2m51s productcatalogservice-6c447cb789-cbgrw 1/1 Running 0 2m50s recommendationservice-7fb98d9d5b-jc8t5 1/1 Running 0 2m50s redis-cart-548dfd74d-w2fdt 1/1 Running 0 2m50s shippingservice-6cf97c9854-tpwr8 1/1 Running 0 2m50s
None
検証用監視基盤 以下のように、Grafana, Prometheus, Grafana Loki, Grafana Tempoを作成しておく。 デプロイ簡略化のため 以下のHelm Chartを利用しますが、とても古いものなので商用環境などでは使わないでください。
https://github.com/odigos-io/charts/tree/master # kubectl get pods -n observability NAME READY STATUS RESTARTS AGE observability-grafana-7c68bb5d56-cdlz9 1/1 Running 0 5m52s observability-loki-0 1/1 Running 0 15m observability-prometheus-server-7847cd6968-2wt9t 2/2 Running 0 15m observability-tempo-0 2/2 Running 0 15m
Odigos
Odigosとは https://github.com/odigos-io/odigos eBPFを用いてアプリケーションから分散トレーシング情報を取得するためのツール。 (Java, Python, .NET, Node.js, and Go) インタプリタ言語の場合、
OpenTelemetryによる自動計装を実行。 コンパイル言語の場合、 eBPFによる自動計装を実行。 取得したデータをOpenTelemetry形式で様々なオブザーバビリティツールに対して送ることができる。
アーキテクチャ アプリケーションの言語に応じて自動計装を実行する
アーキテクチャ Odigos Collectorのデプロイと構成を担当
アーキテクチャ Instrumentorによって検出されたアプリケーションを、 Autoscalerによって作成された Collectorに割り当てる
アーキテクチャ データ取得対象や送信先の決定などを行う
インストール方法 以下二つの方法が用意されている。 • Odigos CLI • Helm 以下のようなリソースが稼働する。 # kubectl
get pods -n odigos-system NAME READY STATUS RESTARTS AGE odiglet-8fbbs 1/1 Running 0 6h31m odiglet-dnd5l 1/1 Running 0 6h31m odiglet-h2t82 1/1 Running 0 6h31m odigos-autoscaler-84b99b8647-628c5 1/1 Running 0 6h31m odigos-data-collection-n5fkt 1/1 Running 0 18m odigos-data-collection-vqqbz 1/1 Running 0 18m odigos-data-collection-xzd5c 1/1 Running 0 18m odigos-gateway-6c95bc95bb-gh47b 1/1 Running 0 24m odigos-instrumentor-7bd64ffb68-rttcs 1/1 Running 0 6h31m odigos-scheduler-5d89b686c-hbcc5 1/1 Running 0 6h31m odigos-ui-7b78f6d454-kqnz7 1/1 Running 0 6h31m
セットアップ odigos uiコマンドを用いてUIに接続し、自動計装対象とテレメトリーデータの送信先を設定する。
セットアップ セットアップが完了すると、以下の様になる。
Grafanaでの可視化 (Service Graph) サンプルアプリケーションにアクセスし何かしらのアクションを起こすと、以下の様に通信をグラフ化して表示することができる。
Tracing -> Metrics ノードをクリックすることで様々な情報にアクセスすることが可能。
Tracing -> Metrics -> Tracing Request histgramでは、リクエストがあった所からのトレーシング情報への導線にアクセスすることができます。
Tracing -> Metrics -> Tracing 「Query with Tempo」をクリックすることで、 TraceQLを打った画面が表示される。
Tetragon
Tetragonとは CilliumやHubbleなどを開発しているIsovalentによって管理されている OSS。 eBPFを用いて、アプリケーションに変更を加えることなく様々な制御をおこなったり、情報を取得することができるようになっている。
インストール Helmを用いて容易にインストールが可能。 $ helm repo add cilium https://helm.cilium.io "cilium" has
been added to your repositories $ helm install tetragon ${EXTRA_HELM_FLAGS[@]} cilium/tetragon -n tetragon --create-namespace NAME: tetragon LAST DEPLOYED: Mon Jul 29 19:09:06 2024 NAMESPACE: tetragon STATUS: deployed REVISION: 1 TEST SUITE: None
Tetragonによる情報の取得 大きく分けると以下の 2つに分けて、情報の取得ができる。 • Event • TracingPolicy
Event Tetragonでは、デフォルトでPod内においてシステムコールが呼ばれた際の情報を Json形式でログに出力してくれる。 (gRPC エンドポイントを公開可能 ) テスト用Pod # kubectl exec
-it checkoutservice-76f9457cff-vwqt8 -n sample-app -- sh / # touch test Tetragon $ kubectl logs tetragon-gxfkt -c export-stdout --tail 1 | jq .
Tracing Policy カーネル内の任意のイベントをトレースし、指定した条件にマッチした場合に実行するアクションを定義することができます。 • Hook Point: eBPFをトリガーするための起点となるもの ◦ Kprobes ◦
Tracepoints ◦ Uprobes • Selector: TracingPolicyによる制御の対象を絞るためのもの ◦ Arguments ◦ PID ◦ Binary ◦ Namespace (Linux機能としてのNamespace) ◦ etc…
TracingPolicy 以下の様なTracingPolicyを用いることで、どこからどこに対して通信がされているかを確認することができる。
まとめ アプリケーション側で何かしらの対応をすることなく、 eBPFを用いて情報を取得できるようになってきている。 今後はMetrics, Logs, Tracesなどでは不十分だった情報の取得や、 Pod 内のプロセスレベルでのイベント監視といったことが容易にできる世界に なっていくのかなと楽しみで仕方ない。
お願い 今回のようなやってみた系の発信は、まだ使ったことがない方にとって使い始めようとする際のハードルを下げてくれます。 ぜひ、「こんなことをやってみた」や「 Kubernetesのこんなことを調べてみた」といったご登壇をお待ちしております! そして、リレー参加者募集 !! 「eBPFツール使ってみた! (Observability編 Part2)」を話していただけますと嬉しいです! -
Grafana Beyla - Pyroscope - Kepler - KubeScoop - etc…
Thank you