· 16 мин чтения

eBPF Observability Stack для Kubernetes: Cilium + Hubble + Tetragon в production

Меня зовут Семёнов Евгений Сергеевич, директор АйТи Фреш. В 2026 году 67% production Kubernetes кластеров используют eBPF для networking и observability. eBPF-based стек дает zero-overhead мониторинг на уровне kernel, real-time security insights, network performance без sidecar'ов. Рассказываю о production деплое Cilium + Hubble + Tetragon для мониторинга кластера из 200+ подов и 40 нод.

Почему eBPF — будущее Kubernetes observability

eBPF (extended Berkeley Packet Filter) работает на уровне Linux kernel, позволяя инструментировать приложения без изменения кода. Преимущества для K8s:

Архитектура eBPF Observability Stack

# Core eBPF Stack для K8s
┌─────────────────────────────────────────┐
│ Grafana + Prometheus (visualization)    │
├─────────────────────────────────────────┤
│ Hubble UI + CLI (network observability) │
├─────────────────────────────────────────┤
│ Tetragon (runtime security monitoring)  │
├─────────────────────────────────────────┤
│ Cilium CNI (eBPF networking & L7 proxy) │
├─────────────────────────────────────────┤
│ Linux Kernel (eBPF programs execution)  │
└─────────────────────────────────────────┘

Установка Cilium CNI как основы стека

Cilium — foundation eBPF networking для Kubernetes. Поддержка L3/L4/L7, policy enforcement, service mesh без sidecar'ов:

# 1. Установка Cilium CLI
CILIUM_CLI_VERSION=$(curl -s https://raw.githubusercontent.com/cilium/cilium-cli/main/stable-v2.txt)
curl -L --fail --remote-name-all https://github.com/cilium/cilium-cli/releases/download/${CILIUM_CLI_VERSION}/cilium-linux-amd64.tar.gz
sudo tar xzvfC cilium-linux-amd64.tar.gz /usr/local/bin

# 2. Деплой Cilium с Hubble
cilium install \
  --helm-set hubble.enabled=true \
  --helm-set hubble.relay.enabled=true \
  --helm-set hubble.ui.enabled=true \
  --helm-set prometheus.enabled=true \
  --helm-set operator.prometheus.enabled=true \
  --helm-set hubble.metrics.enabled="{dns,drop,tcp,flow,icmp,http}"

# 3. Проверка статуса
cilium status --wait
cilium connectivity test

Настройка Hubble для network observability

Hubble обеспечивает network visibility на уровне L3/L4/L7 через eBPF:

# Конфигурация Hubble
apiVersion: v1
kind: ConfigMap
metadata:
  name: hubble-config
  namespace: kube-system
data:
  config.yaml: |
    enable-hubble: true
    hubble-socket-path: /var/run/cilium/hubble.sock
    hubble-metrics-server: ":9965"
    hubble-metrics:
    - dns:query,response
    - drop:sourceContext,destinationContext
    - tcp:sourceContext,destinationContext
    - flow:sourceContext,destinationContext
    - icmp:sourceContext,destinationContext
    - http:sourceContext,destinationContext,headers

Развертывание Tetragon для runtime security

Tetragon — eBPF-based security observability, трекинг system calls, file access, process execution:

# 1. Установка через Helm
helm repo add cilium https://helm.cilium.io/
helm install tetragon cilium/tetragon \
  --namespace kube-system \
  --set tetragon.grpc.enabled=true \
  --set tetragon.prometheus.enabled=true \
  --set tetragon.exportFilename=/var/log/tetragon/tetragon.log

# 2. Tracing policies для security monitoring
apiVersion: cilium.io/v1alpha1
kind: TracingPolicy
metadata:
  name: file-monitoring
spec:
  kprobes:
  - call: "security_file_open"
    syscall: false
    args:
    - index: 0
      type: "file"
    selectors:
    - matchArgs:
      - index: 0
        operator: "Prefix"
        values:
        - "/etc/passwd"
        - "/etc/shadow"
        - "/etc/hosts"

Интеграция с Prometheus и Grafana

Настройка метрик collection для полного observability pipeline:

# ServiceMonitor для Cilium metrics
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
  name: cilium-agent
  namespace: monitoring
spec:
  selector:
    matchLabels:
      k8s-app: cilium
  endpoints:
  - port: prometheus
    interval: 30s
    path: /metrics
---
# ServiceMonitor для Hubble metrics
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
  name: hubble-metrics
  namespace: monitoring
spec:
  selector:
    matchLabels:
      k8s-app: hubble
  endpoints:
  - port: hubble-metrics
    interval: 30s

Нужна помощь с eBPF observability?

Настроили eBPF стек для 20+ enterprise кластеров. Поможем с архитектурой, настройкой Cilium + Hubble + Tetragon, интеграцией с существующим мониторингом.

Написать на boss@itfresh.ru или Telegram @ITfresh_Boss

Production-ready мониторинг с eBPF

Ключевые метрики для production monitoring через eBPF stack:

КомпонентКлючевые метрикиАлерты
Cilium CNIBPF map pressure, connection tracking, L7 proxy latencyeBPF program failures, policy violations
HubbleNetwork flows/sec, L7 requests, DNS resolution timeAnomalous traffic patterns, connectivity issues
TetragonProcess spawns, file access events, syscall frequencySuspicious process execution, privilege escalation

Grafana dashboards для eBPF метрик

# Prometheus queries для key eBPF metrics
# Cilium eBPF map usage
cilium_bpf_map_capacity{map_name!=""}

# Network policy drops по Hubble
rate(hubble_drop_total[5m])

# Tetragon process execution events
rate(tetragon_events_total{event_type="process"}[5m])

Security monitoring с Tetragon

Примеры security policies для runtime threat detection:

# Tracing policy для crypto mining detection
apiVersion: cilium.io/v1alpha1
kind: TracingPolicy
metadata:
  name: crypto-mining-detection
spec:
  kprobes:
  - call: "wake_up_new_task"
    syscall: false
    args:
    - index: 0
      type: "task"
    selectors:
    - matchArgs:
      - index: 0
        operator: "InMap"
        values:
        - "xmrig"
        - "minerd"
        - "cpuminer"
        - "stratum"

Performance tuning eBPF в production

Troubleshooting eBPF issues

# Debug eBPF programs
bpftool prog show
bpftool map show

# Проверка Cilium eBPF status
cilium bpf status
cilium monitor

# Hubble debugging
hubble observe --namespace default
hubble status
Какие требования к kernel для eBPF?
Минимум Linux 4.9+ для basic eBPF, рекомендуем 5.10+ для production. Нужна поддержка BPF_PROG_TYPE_XDP, BTF (BPF Type Format). Большинство enterprise дистрибутивов (RHEL 8+, Ubuntu 20.04+) поддерживают out of box.
Влияние eBPF на производительность?
eBPF добавляет <1% CPU overhead при правильной настройке. Зато экономит 10-15% CPU, убирая sidecars и DaemonSet агенты. Network latency практически не увеличивается — eBPF работает в kernel space.
Как мигрировать с traditional CNI на Cilium?
Blue-green миграция через новый node pool с Cilium. Постепенный drain старых нод. Критично протестировать network policies — Cilium использует eBPF вместо iptables, поведение может отличаться.

Заключение

eBPF observability stack с Cilium + Hubble + Tetragon дает unprecedented visibility в Kubernetes на уровне kernel. Zero-overhead мониторинг, real-time security insights, unified networking platform. В 2026 eBPF становится стандартом для enterprise K8s кластеров.