4. 环境准备:Kubernetes 集群搭建要求与 Cilium 安装方式选择
在开始 Cilium 与数据传输优化实战之前,必须搭建一个满足 Cilium 运行条件的 Kubernetes 集群,并选择正确的安装方式。本章将明确集群的硬件、内核与网络要求,并对比 Helm 与 CLI 两种安装路径的适用场景。
4.1 Kubernetes 集群搭建要求
Cilium 依赖 eBPF 技术,对内核版本、节点配置和 CNI 插槽有严格限制。以下表格列出了生产级集群的最低要求与推荐配置:
| 维度 | 最低要求 | 推荐配置 | 说明 |
|---|---|---|---|
| Linux 内核 | 4.19 | ≥ 5.10 | 5.10+ 支持完整 eBPF 特性(BTF、BPF 迭代器) |
| Kubernetes 版本 | 1.21 | ≥ 1.26 | 新版本对 Cilium 的 CRD 与 API 兼容性更好 |
| 节点数量 | 1 (单节点测试) | ≥ 3 (控制面 + 工作节点) | 生产环境建议奇数控制面节点 |
| CPU / 内存 | 2 vCPU / 4 GB | 4 vCPU / 8 GB 每节点 | Cilium Agent 与 eBPF 程序需要额外资源 |
| 容器运行时 | containerd 1.5 / CRI-O 1.22 | containerd 1.7+ | 需启用 systemd cgroup 驱动 |
| 网络端口 | 6443 (API Server), 4244 (Cilium Hubble) | 全端口开放 | 节点间需互通 VXLAN/Geneve 端口 |
| 文件系统 | ext4 / xfs | xfs (d_type 支持) | BPF 文件系统需挂载 /sys/fs/bpf |
⚠ 内核版本检查命令: 在每台节点上执行
uname -r 确认内核版本。若低于 5.10,建议升级后再部署 Cilium,否则可能丢失带宽管理、Service Mesh 等高级功能。
4.2 Cilium 安装方式对比:Helm vs CLI
Cilium 官方提供两种主流安装方式:Helm Chart 和 Cilium CLI。选择哪种方式取决于你的运维习惯、集群规模以及对参数定制的要求。
| 对比维度 | Helm 安装 | Cilium CLI 安装 |
|---|---|---|
| 安装命令 | helm install cilium cilium/cilium --namespace kube-system |
cilium install |
| 参数管理 | 通过 --set 或 values.yaml 文件 |
通过 --config 或交互式向导 |
| 版本控制 | Helm Chart 版本与 Cilium 版本独立 | CLI 自动匹配最新稳定版 |
| 升级回滚 | helm upgrade / helm rollback |
cilium upgrade / cilium revert |
| 适用场景 | 生产环境、GitOps 流程、需要精细参数定制 | 快速验证、开发测试、Demo 演示 |
| 依赖项 | 需预先安装 Helm 3+ | 需下载 Cilium CLI 二进制 |
💡 选择建议: 本课程实战部分将采用 Helm 安装,因为 Helm 方式更符合生产环境基础设施即代码(IaC)的规范,且便于在后续章节中动态调整 Cilium 的数据传输优化参数(如带宽管理器、WireGuard 加密等)。
4.3 安装流程总览
下图展示了从集群准备到 Cilium 部署完成的整体流程,以及 Helm 与 CLI 两种路径的入口差异:
4.4 快速安装示例(Helm 方式)
以下命令演示了使用 Helm 安装 Cilium 的标准步骤,包含必要的参数预配置:
# 1. 添加 Cilium Helm 仓库
helm repo add cilium https://helm.cilium.io/
helm repo update
# 2. 安装 Cilium(启用 Hubble 可观测性)
helm install cilium cilium/cilium \
--namespace kube-system \
--set hubble.relay.enabled=true \
--set hubble.ui.enabled=true \
--set cluster.name=cilium-demo \
--set cluster.id=1
# 3. 等待所有 Pod 就绪
kubectl -n kube-system wait --for=condition=ready pod -l k8s-app=cilium --timeout=300s
# 4. 验证安装
cilium status --wait
📌 关键参数说明:
hubble.relay.enabled=true— 启用 Hubble Relay,用于跨节点流量观测。cluster.name— 集群标识,多集群场景下必须唯一。cluster.id— 集群 ID,用于 Cluster Mesh 互联。
4.5 安装后验证清单
部署完成后,建议按以下清单逐项确认 Cilium 是否正常运行:
- 检查 Cilium Agent Pod 状态:
kubectl -n kube-system get pods -l k8s-app=cilium,所有 Pod 应为Running。 - 检查 Cilium 状态:
cilium status,输出中应显示KVStore: Ok、Kubernetes: Ok、Cilium: Ok。 - 检查 eBPF 挂载: 在任意节点执行
mount | grep bpf,确认/sys/fs/bpf已挂载。 - 测试 Pod 连通性: 部署两个测试 Pod,使用
kubectl exec执行 ping 测试。 - 检查 Hubble UI: 通过
kubectl port-forward暴露 Hubble UI 服务,在浏览器中查看服务拓扑。
🔍 排障提示: 如果
cilium status 显示 KVStore: Failure,通常是因为 etcd 连接问题或 Cilium 与集群的 API Server 版本不兼容。检查 cilium-agent 日志:kubectl -n kube-system logs ds/cilium -c cilium-agent。