4. Cilium 与 Hubble 的集成部署:Cilium 安装选项、Hubble 的启用方式、Helm Chart 参数详解
在生产环境中,Cilium 与 Hubble 的集成部署并非简单的“一键安装”。正确的做法是通过 Helm Chart 精细控制 Cilium Agent 的 eBPF 数据面行为,并同步启用 Hubble 的观测层。本章将深入解析 Cilium 的安装选项、Hubble 的启用方式以及核心 Helm 参数,帮助你在部署阶段就为租户隔离观测打下坚实基础。
4.1 Cilium 安装选项与核心组件
Cilium 的部署架构由 Cilium Agent(运行在每个节点上的 DaemonSet)、Cilium Operator(管理集群级状态)以及可选的 Hubble 组件组成。安装时需根据集群网络模型(Overlay 或 Native Routing)和 CNI 链式配置选择正确的参数。
关键安装选项速查表
| 安装选项 | Helm 参数 | 说明 |
|---|---|---|
| IPAM 模式 | --set ipam.mode=cluster-pool |
默认模式,自动分配 PodCIDR 范围 |
| 路由模式 | --set routingMode=native |
直接路由,依赖底层网络(如 BGP) |
| Overlay 封装 | --set routingMode=tunnel |
使用 VXLAN/Geneve 封装,适合云环境 |
| KubeProxy 替换 | --set kubeProxyReplacement=true |
完全绕过 kube-proxy,提升性能 |
| eBPF 数据面 | --set bpf.masquerade=true |
启用 eBPF 伪装,减少 iptables 开销 |
4.2 Hubble 的启用方式与组件架构
Hubble 是 Cilium 的分布式观测层,由 Hubble Relay(聚合查询)、Hubble UI(可视化面板)和 Hubble Metrics(Prometheus 指标)组成。启用 Hubble 需要在 Helm 安装时显式开启相关选项。
推荐实践:在启用 Hubble 时,务必同时开启 Hubble Relay 和 Hubble Metrics,以便后续进行跨节点流量查询和告警配置。
# 启用 Hubble 核心组件
helm upgrade cilium cilium/cilium --version 1.16.0 \
--namespace kube-system \
--set hubble.relay.enabled=true \
--set hubble.ui.enabled=true \
--set hubble.metrics.enabled="{dns,drop,tcp,flow,icmp,http}"
4.3 Helm Chart 参数详解
以下表格列出了与 Hubble 集成部署最相关的 Helm 参数,涵盖启用、存储、认证和性能调优四个方面。建议在部署前根据集群规模预先规划。
| 参数路径 | 默认值 | 推荐值(生产) | 说明 |
|---|---|---|---|
hubble.relay.enabled |
false |
true |
启用 Hubble Relay 组件 |
hubble.relay.replicas |
1 |
2 |
Relay 副本数,高可用建议 ≥2 |
hubble.ui.enabled |
false |
true |
启用 Hubble UI 面板 |
hubble.metrics.enabled |
{} |
{dns,drop,tcp,flow} |
启用的指标列表,按需选择 |
hubble.metrics.serviceMonitor.enabled |
false |
true |
自动创建 Prometheus ServiceMonitor |
hubble.tls.auto.enabled |
false |
true |
自动生成 mTLS 证书,保障通信安全 |
hubble.eventBufferCapacity |
4095 |
8191 |
每个 Agent 的事件缓冲区大小,大集群建议增大 |
4.4 集成部署的完整 Helm 命令示例
以下命令展示了在生产环境中启用 Hubble 并配置核心参数的完整 Helm 安装/升级命令。请根据实际集群网络模式调整 routingMode 和 ipam.mode。
helm upgrade cilium cilium/cilium --version 1.16.0 \
--namespace kube-system \
--set routingMode=tunnel \
--set ipam.mode=cluster-pool \
--set kubeProxyReplacement=true \
--set bpf.masquerade=true \
--set hubble.relay.enabled=true \
--set hubble.relay.replicas=2 \
--set hubble.ui.enabled=true \
--set hubble.metrics.enabled="{dns,drop,tcp,flow,icmp,http}" \
--set hubble.metrics.serviceMonitor.enabled=true \
--set hubble.tls.auto.enabled=true \
--set hubble.tls.auto.method=cronJob \
--set hubble.eventBufferCapacity=8191
注意:如果集群已安装 Cilium 但未启用 Hubble,执行上述命令后 Hubble 组件会滚动升级。建议在业务低峰期操作,并提前检查
cilium status 确认组件健康。
4.5 部署验证与常见问题
部署完成后,建议按以下步骤验证 Hubble 是否正常工作:
- 检查 Pod 状态:确保
cilium-xxxxx、hubble-relay-xxx、hubble-ui-xxx均为 Running 状态。 - 测试 Hubble Relay 连通性:使用
hubble observe命令查看实时流量。 - 检查 Metrics 端点:访问
curl http://localhost:9965/metrics确认指标暴露。
# 验证 Hubble Relay 是否正常响应
kubectl exec -n kube-system deployment/hubble-relay -- hubble observe --last 5
# 验证 Hubble UI 是否可访问
kubectl port-forward -n kube-system deployment/hubble-ui 12000:8080
# 浏览器打开 http://localhost:12000
常见问题:如果 Hubble UI 无法显示流量,请检查
hubble.relay.enabled 是否设置为 true,以及 hubble.metrics.enabled 是否包含了 flow 指标。另外,确保 Cilium Agent 的 monitor-aggregation 参数未设置为 none。