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 安装后的核心组件及其交互关系:
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 提供的深度可观测性。下一阶段将进入策略迁移与蓝绿发布实践。