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
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
390
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
380
Kubernetesにおける推論基盤
ry
3
1.1k
Vault Secrets Operator Tutorial
ry
0
630
KyvernoとRed Hat ACMを用いたマルチクラスターの一元的なポリシー制御
ry
0
1.3k
明日から始められるKyvernoを用いたポリシー制御
ry
4
980
CNDT2022 k8snovice Community introduction
ry
0
190
Policy Engine on Kubernetes
ry
1
1.5k
ConfigMap and Secret
ry
0
440
Policy Manager試してみた!
ry
0
470
Other Decks in Technology
See All in Technology
まちスペース®とデジタルツインと「まちづくり」
hiro_ogi
0
120
【CEDEC2026】ゲームシナリオライターを支援するAIツール開発の実践 ― 設計とプロンプトの工夫 ―
cygames
PRO
1
850
Service Connect 上のサービスに ECS Service の外側から到達できなかった話
ota1022
1
240
Invisible to AI? Making TYPO3 Sites Quotable by AI Search Systems
wolfgangwagner
0
200
ボトムアップ文化が強い組織で セキュリティをどう根付かせていくかの現在進行形の話 / Making Security Stick in a Bottom-Up Organization
yamaguchitk333
0
220
モバイルアプリ開発概論2026
recruitengineers
PRO
5
590
ハーレムエンジニアリング
kazuma777777
0
150
AIコーディングの次。コードレビューと理解負荷を解消して組織の開発生産性を高める
moongift
PRO
2
2.6k
AIペネトレーションテスト・ セキュリティ検証「AgenticSec」紹介資料
laysakura
2
9k
老害フォレンジッカーはAI羊の夢を見るか?
tadmaddad
0
330
Bits AI を制するものは Datadog を制す / The player that controls Bits AI, controls Datadog
kaminashi
0
100
PLATEAU で バーチャル花火大会
tatsuya1970
0
160
Featured
See All Featured
Building Adaptive Systems
keathley
44
3.2k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
123
22k
AI: The stuff that nobody shows you
jnunemaker
PRO
9
910
The innovator’s Mindset - Leading Through an Era of Exponential Change - McGill University 2025
jdejongh
PRO
1
240
Scaling GitHub
holman
464
140k
Measuring & Analyzing Core Web Vitals
bluesmoon
9
960
Understanding Cognitive Biases in Performance Measurement
bluesmoon
32
3k
From Legacy to Launchpad: Building Startup-Ready Communities
dugsong
0
300
エンジニアに許された特別な時間の終わり
watany
108
250k
Mobile First: as difficult as doing things right
swwweet
225
10k
Into the Great Unknown - MozCon
thekraken
41
2.7k
A Modern Web Designer's Workflow
chriscoyier
698
190k
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