Hubble - eBPF Based Observability for Kubernetes
KubeCon + CloudNativeCon Europe 2020 2日目 のセッションである Hubble - eBPF Based Observability for Kubernetes
についてです。
eBPF を用いた CNI である Cilium と、Cilium からメトリクスを得ることでより低いレイヤでの Observability を実現する Hubble についてのセッションです。
What is eBPF
- eBPF: Linux kernel の機能の一つで、small program を secure で efficient に in-kernel へ動的アタッチ
- アプリケーションを変更せずに可視性がある
- オーバヘッドが小さい
- 広くサポートされている (Hubble は Linux 4.9+ をサポート)
How Hubble uses eBPF
Cilium Agent 内に居る Hubble が eBPF Datapath の event を取得
- Hubble UI でブラウザから閲覧
- Service Dependency Maps
- Flow Display and Filtering
- Network Policy Viewer
- Hubble CLI でコマンドラインから閲覧
- Detailed Flow Visibility
- Extensive Filtering
- JSON output
- Prometheus/Grafana から閲覧
- Hubble が Open Metrics format の metrics を吐く
- Hubble UI でブラウザから閲覧
現状の Hubble はどうやら Cilium が前提らしい
- 以下は発表中の Q&A
Q.How tied to Cilium is Hubble? Is it possible to create additional agent types that export events from different source types than eBPF/Cilium?
A.Currently, Hubble only receives events form Cilium, but this is not a fundamental architectural limitation. The Hubble observer could be extended to also receive data from other sources as well.
Hubble API
- デフォルトで 4k events / node
- フィルタでマッチング処理できる
- Hubble Relay による Cluster-wide な構成を取れる
- Hubble - Hubble Relay 間は gRPC
- CLI, UI がここを叩く
Flow Visibility
以下の情報が取れるそうです
- Flow Metadata
- Kubernetes
- 各リソースの
.metadata.name
や.metadata.labels
- 各リソースの
- DNS
- source/destination の FQDN
- Cilium
- Security identities and endpoints
- Drop reasons
- Policy verdict matches
L7 Visibility
- Cilium 経由で envoy (L7 Proxy) で Proxy する
- Hubble は envoy からメタデータを得る
Hubble Metrics
デモ
Hubble UI / CLI のデモと Grafana でメトリクスを可視化するデモでした。
- Hubble UI の画面 (発表中のスクショなので画像が荒いです)
- Cilium の
CiliumClusterwideNetworkPolicy
Custom Resource で特定の通信を禁止しcurl
コマンドが失敗することを確認した後に、実際にどのようなパケットがドロップされたかを CLI と UI でそれぞれ確認 (発表中のスクショなので ry
感想
CNI より L3, L4 レベルまで制御出来るのは、 L7 で頑張る Service Mesh と比較して利点になるのかなと感じました。また、Service Mesh を実現するソフトウェアである Istio と連携も可能だそうです。 *1
一方で、トラブルシューティングの用途で eBPF を利用 *2 する利点は理解できますが、それを定常的に取りたいかと言われるとどうなんだろうという疑問が自分の中にあるので、引き続き Cilium 及び Hubble の情報を集めてきちんと pros/cons の整理を付けようと思います。