关于 cilium hubble 的启用方式

4 阅读3分钟
  1. Hubble 基础组件(内嵌在 Cilium Agent)

当前状态: ✅ 已启用 性能影响: 极低(<1%) 功能:

  • 捕获本节点流量
  • 本地流量可观测
  • 支持 kubectl exec -n kube-system ds/cilium -- hubble observe

推荐: ✅ 必须启用 - 这是最基础的可观测性


  1. Hubble Relay(集群级流量聚合)

当前状态: ❌ 未启用(relay.enabled=false) 资源消耗: 1个 Deployment Pod(~50-100MB 内存,~0.1 CPU) 性能影响: 极低

功能:

  • 聚合所有节点的 Hubble 流量
  • 支持集群范围的流量查询
  • 支持外部 Hubble CLI 访问(通过 port-forward)
  • Hubble UI 的后端依赖

使用场景:

  • ✅ 需要跨节点观察流量(Pod A → Pod B 在不同节点)
  • ✅ 需要从本地使用 hubble CLI 查询集群流量
  • ✅ 需要启用 Hubble UI

推荐: ⚠️ 按需启用

  • 如果只需要单节点调试 → 不需要
  • 如果需要集群级可观测性 → 强烈推荐

  1. Hubble UI(Web 可视化界面)

当前状态: ❌ 未启用(ui.enabled=false) 资源消耗: 2个 Pods(Frontend + Backend,~100-200MB) 性能影响: 无(仅消费数据,不影响数据面)

功能:

  • Web UI 可视化流量地图
  • Service Map(服务依赖图)
  • 流量过滤和搜索

依赖: 需要 Hubble Relay

推荐: ⚠️ 按需启用

  • 开发/调试环境 → 推荐
  • 生产环境 → 看团队需求(通常用 Grafana + Prometheus)

  1. Hubble Metrics(Prometheus 指标)

当前状态: ❌ 未启用(Metrics: Disabled) 性能影响: 非常低(~1-2%) 资源消耗: 内存增加 ~50MB/节点

功能:

  • 导出流量统计到 Prometheus
  • 支持 Grafana 可视化
  • 长期趋势分析

推荐: ✅ 生产环境强烈推荐


🎯 推荐配置方案

方案 1:最小化配置(当前适合你)

适用:只需要基本调试,关注性能

hubble: enabled: true peerService: clusterDomain: "xxxx.local"

relay:
  enabled: false  # 不需要集群级查询

ui:
  enabled: false  # 不需要 Web UI

metrics:
  enabled:
    - dns     # 基础 DNS 统计
    - drop    # 丢包统计(重要!)
    - flow    # 基础流量统计

优点:

  • ✅ 性能影响最小(<2%)
  • ✅ 支持单节点流量观察
  • ✅ 有基础 metrics 供 Prometheus 采集

方案 2:推荐生产配置

适用:需要完整可观测性,但不需要 UI

hubble: enabled: true peerService: clusterDomain: "xxxx.local"

relay:
  enabled: true  # 启用集群级查询

ui:
  enabled: false  # 生产环境通常用 Grafana

metrics:
  enabled:
    - dns
    - drop
    - tcp
    - flow
    - port-distribution
    - icmp

  serviceMonitor:
    enabled: true  # 如果有 Prometheus Operator

优点:

  • ✅ 完整的可观测性
  • ✅ 支持集群级流量分析
  • ✅ Prometheus + Grafana 可视化
  • ✅ 性能影响可控(~2-3%)

方案 3:开发/调试环境全功能

适用:开发测试环境,需要最大可视化

hubble: enabled: true peerService: clusterDomain: "xxxx.local"

relay:
  enabled: true  # 需要 UI 依赖

ui:
  enabled: true  # 启用 Web UI

metrics:
  enabled:
    - dns
    - drop
    - tcp
    - flow
    - port-distribution
    - icmp
    - httpV2  # HTTP/2 流量统计

优点:

  • ✅ 最强大的可视化
  • ✅ 适合学习和调试
  • ⚠️ 资源消耗较高

💡 针对你的情况的建议

基于你的环境(生产环境 + 性能敏感):

推荐配置:方案1.5(最小化 + Metrics)

hubble: enabled: true peerService: clusterDomain: "xxxx.local"

# 暂时不启用 Relay(节省资源)
relay:
  enabled: false

# 暂时不启用 UI
ui:
  enabled: false

# 但一定要启用 Metrics!
metrics:
  enabled:
    - dns           # DNS 统计
    - drop          # 丢包(必须!)
    - tcp           # TCP 连接统计
    - flow          # 基础流量

  # 如果有 Prometheus Operator
  serviceMonitor:
    enabled: false  # 改为 true 如果有

为什么这样配置?

  1. ✅ Metrics 必须启用 - 否则无法监控丢包、流量异常
  2. ⚠️ Relay 暂时不启用 - 节省资源,需要时再启用
  3. ⚠️ UI 暂时不启用 - 生产环境用 Grafana 更好
  4. ✅ 性能影响最小 - 只增加 1-2% 开销

未来按需升级路径:

需要集群级流量查询时

helm upgrade cilium cilium/cilium --reuse-values
--set hubble.relay.enabled=true

需要 Web UI 时(需要先启用 Relay)

helm upgrade cilium cilium/cilium --reuse-values
--set hubble.ui.enabled=true


📝 总结对照表

组件性能影响资源消耗生产推荐你的场景推荐
Hubble 基础<1%极低✅ 必须✅ 已启用
Hubble Metrics1-2%~50MB/节点✅ 强烈推荐✅ 必须启用
Hubble Relay<0.5%1 Pod⚠️ 按需⚠️ 按需(可以先不启用)
Hubble UI0%2 Pods❌ 可选❌ 不推荐(用 Grafana)