RousselTMLEARNING

Observabilité

Observer le réseau Kubernetes avec Cilium Hubble

Rendre visibles les flux réseau d'un cluster Kubernetes avec Cilium Hubble : architecture, CLI hubble observe, interface graphique, métriques Prometheus et diagnostic des paquets rejetés.

1. Hubble en bref #

La couche d'observabilité de Cilium.

Architecture #

Architecture de Hubble
Les métriques sont exposées par chaque agent ; les flux détaillés passent par Relay.

Cilium est un CNI Kubernetes fondé sur eBPF. Puisqu'il voit chaque paquet, il peut aussi produire des flux : qui parle à qui, sur quel port, avec quel verdict (transmis, rejeté), et pour HTTP, DNS ou Kafka, le détail de la requête. Hubble expose ces flux.

2. Installer et observer #

CLI cilium et hubble.

Activation #

cilium install
cilium status --wait
cilium hubble enable --ui
cilium hubble port-forward &      # Relay sur localhost:4245
hubble status
# ou avec Helm
helm upgrade cilium cilium/cilium -n kube-system --reuse-values \
  --set hubble.relay.enabled=true --set hubble.ui.enabled=true \
  --set hubble.metrics.enabled="{dns,drop,tcp,flow,port-distribution,httpV2}" 

hubble observe #

hubble observe --namespace boutique --follow
hubble observe --verdict DROPPED                      # paquets rejetés (network policies)
hubble observe --protocol dns --namespace boutique    # requêtes DNS
hubble observe --to-pod boutique/checkout --protocol http
hubble observe --from-label app=front -o json | jq '.flow.destination'
Bonne Pratique : hubble observe --verdict DROPPED est le premier réflexe quand « le service A ne joint plus le service B » après l'ajout d'une NetworkPolicy.

3. Interface et métriques #

Visualiser et alerter.

Hubble UI #

cilium hubble ui ouvre une carte des services d'un namespace, construite à partir des flux réels, avec la liste des flux et leurs verdicts. Idéal pour découvrir les dépendances d'une application inconnue.

Métriques Prometheus #

MétriqueUsage
hubble_drop_totalPaquets rejetés par raison (policy, erreur...)
hubble_dns_queries_total, hubble_dns_responses_totalVolume et erreurs DNS (NXDOMAIN)
hubble_http_requests_totalRequêtes HTTP par code (si visibilité L7 activée)
hubble_tcp_flags_totalSYN, RST : connexions refusées
- alert: PolicyDrops
  expr: sum by (reason) (rate(hubble_drop_total{reason="POLICY_DENIED"}[5m])) > 1
  for: 10m
  labels: { severity: warning }

Articles liés

eBPF expliqué : des programmes dans le noyau Linux pour observer sans instrumenter

Ce qu'est eBPF, comment un programme est vérifié puis exécuté dans le noyau, les points d'accroche (kprobes, …

Diagnostiquer avec bpftrace et les outils bcc

Les outils eBPF du diagnostic au quotidien : one-liners bpftrace (appels système, fichiers, latences), outils…

Instrumenter sans code avec Grafana Beyla (OpenTelemetry eBPF Instrumentation)

Obtenir métriques RED et traces HTTP/gRPC de n'importe quelle application sans la modifier : Grafana Beyla et…

Pour aller plus loin