2. Cilium 安装与部署:Helm 安装、kube-proxy 替代与 Hubble 组件部署

本章聚焦于生产级 Cilium 的安装与部署流程。我们将使用 Helm 作为包管理工具,完成 Cilium 的安装、配置 kube-proxy 替代模式,并验证集群网络状态。同时,部署 Hubble 组件以获取网络流量的可观测性能力。整个流程遵循“安装-配置-验证-增强”的标准化步骤,确保集群网络基础设施的稳定与可观测。

2.1 环境准备与 Helm 仓库配置

在安装 Cilium 之前,请确保 Kubernetes 集群版本 ≥ 1.23,且节点间网络连通性正常。Helm 3 是推荐的安装工具,请确保已安装 Helm 客户端。

前置检查清单:
  • Kubernetes 集群版本 ≥ 1.23
  • 节点间网络互通(ICMP/TCP)
  • Helm 3 客户端已安装
  • kube-proxy 运行模式确认(准备替换)

首先,添加 Cilium 官方 Helm 仓库并更新索引:

# 添加 Cilium Helm 仓库
helm repo add cilium https://helm.cilium.io/

# 更新仓库索引
helm repo update

# 查看可用的 Cilium 版本
helm search repo cilium/cilium --versions

2.2 使用 Helm 安装 Cilium(含 kube-proxy 替代配置)

生产环境中,我们强烈建议启用 kube-proxy 替代 模式。Cilium 可以完全接管 kube-proxy 的功能,包括 Service 负载均衡、ClusterIP 转发、NodePort 等,从而减少组件依赖并提升性能。

以下是一个典型的安装命令,包含 kube-proxy 替代、IPv4/IPv6 双栈支持以及 Hubble 的初始配置:

helm install cilium cilium/cilium \
  --namespace kube-system \
  --set kubeProxyReplacement=true \
  --set k8sServiceHost=YOUR_API_SERVER_IP \
  --set k8sServicePort=6443 \
  --set ipam.mode=kubernetes \
  --set ipv4.enabled=true \
  --set ipv6.enabled=false \
  --set hubble.enabled=true \
  --set hubble.relay.enabled=true \
  --set hubble.ui.enabled=true
关键参数说明:
  • kubeProxyReplacement=true:启用 kube-proxy 替代模式,Cilium 将接管 Service 处理。
  • k8sServiceHost/Port:指定 Kubernetes API Server 地址,用于 Cilium 与 API Server 通信。
  • ipam.mode=kubernetes:使用 Kubernetes 原生的 Pod CIDR 分配方式。
  • hubble.*:启用 Hubble 可观测性组件,包括 Relay 和 UI。

2.3 验证 Cilium 运行状态

安装完成后,使用 cilium status 命令检查 Cilium 的整体健康状态。该命令会输出集群状态、组件健康度、kube-proxy 替代状态等关键信息。

# 查看 Cilium 状态
cilium status --namespace kube-system

# 输出示例(关键字段):
#    /¯¯\
#  /¯¯\__/¯¯\    Cilium:         OK
#  \__/¯¯\__/    Operator:       OK
#  /¯¯\__/¯¯\    Envoy Daemon:   OK
#  \__/¯¯\__/    Hubble Relay:   OK
#     \__/       Cluster Mesh:   disabled

# 检查 kube-proxy 替代是否生效
cilium status --namespace kube-system | grep -i "kube-proxy"

如果 kube-proxy 替代成功,你会看到类似 KubeProxyReplacement: Strict 或 Probe 的状态。同时,可以检查 Cilium Agent 和 Operator 的 Pod 是否全部 Running:

kubectl -n kube-system get pods -l k8s-app=cilium
kubectl -n kube-system get pods -l name=cilium-operator

2.4 Hubble 组件部署与验证

Hubble 是 Cilium 的可观测性层,提供网络流量的实时监控、服务依赖分析和安全策略审计能力。我们已在 Helm 安装时启用了 Hubble Relay 和 UI,接下来验证其可用性。

2.4.1 验证 Hubble Relay 与 UI 服务

# 检查 Hubble 相关 Pod
kubectl -n kube-system get pods -l k8s-app=hubble-relay
kubectl -n kube-system get pods -l k8s-app=hubble-ui

# 查看 Hubble UI 服务
kubectl -n kube-system get svc hubble-ui

2.4.2 使用 Hubble CLI 观察流量

安装 Hubble CLI 后,可以通过命令行实时观察集群内的网络流量:

# 安装 Hubble CLI(Linux)
curl -L --remote-name-all https://github.com/cilium/hubble/releases/latest/download/hubble-linux-amd64.tar.gz
tar xzvf hubble-linux-amd64.tar.gz
sudo mv hubble /usr/local/bin/

# 设置端口转发以连接 Hubble Relay
kubectl port-forward -n kube-system svc/hubble-relay 4245:80 &

# 观察实时流量
hubble observe --server localhost:4245
流量观察示例输出:
TIMESTAMP             SRC                          DST                          TYPE        VERDICT
2025-03-21T10:00:01   default/pod-a-7f8b9c6d5-abc  default/pod-b-9d8e7f6c5-def  HTTP/1.1    FORWARDED
2025-03-21T10:00:02   default/pod-b-9d8e7f6c5-def  default/pod-c-1a2b3c4d5-ghi  TCP         DROPPED

2.5 安装架构总览

下图展示了 Cilium 安装后的核心组件及其交互关系:

Cilium 安装架构总览 Cilium 安装架构总览 Kubernetes 集群 Cilium Operator 集群管理 / 策略同步 Cilium Agent eBPF 数据平面 Cilium Agent eBPF 数据平面 Hubble Relay 流量聚合 / 可观测性 Hubble UI 可视化仪表盘 kube-proxy 替代 Service 处理 / 负载均衡 核心交互流程 Cilium Agent 通过 eBPF 处理数据包 → Hubble Relay 聚合流量 → Hubble UI 展示

2.6 安装后验证清单

完成安装后,建议执行以下验证步骤,确保集群网络功能正常:

验证项 命令/方法 预期结果
Cilium Agent 状态 cilium status 所有组件显示 OK
kube-proxy 替代 cilium status | grep KubeProxyReplacement Strict 或 Probe
Pod 网络连通性 创建测试 Pod 并 ping 跨节点 Pod 互通
Service 解析 通过 ClusterIP 访问服务 正常负载均衡
Hubble 流量观察 hubble observe 实时流量输出
生产环境建议:
  • 使用 --set kubeProxyReplacement=strict 强制严格模式,确保 kube-proxy 完全被替代。
  • 为 Hubble UI 配置 Ingress 或 LoadBalancer 服务,方便团队访问。
  • 定期执行 cilium connectivity test 验证集群网络健康度。

至此,Cilium 的核心安装与部署流程已完成。集群已具备 eBPF 驱动的网络能力、kube-proxy 替代的高效 Service 处理,以及 Hubble 提供的深度可观测性。下一阶段将进入策略迁移与蓝绿发布实践。