Cilium
基于 eBPF 的云原生网络与安全平台,CNCF 毕业项目,为 Kubernetes 提供高性能网络、可观测性和零信任策
Cilium - 云原生 eBPF 网络与安全平台
项目简介
Cilium 是一款基于 Linux eBPF(extended Berkeley Packet Filter)技术的开源云原生网络、安全和可观测性平台,专门为 Kubernetes 及其他容器编排环境设计。项目于 2015 年由 Isovalent(2020 年被埃森哲收购)发起,2021 年成为 CNCF 沙箱项目,2022 年晋升为 CNCF 孵化项目,2023 年达到 CNCF 毕业(Graduated)级别,成为容器网络领域少数达到最高等级的开源项目之一。Cilium 的核心创新在于将网络策略、可观测性和安全控制逻辑直接嵌入 Linux 内核的 eBPF 虚拟机中执行,在不损失性能的前提下实现过去只有在内核模块中才能做到的深度数据包处理能力。
核心功能
eBPF 驱动的网络数据平面
传统 Kubernetes CNI 插件(如 Flannel、Calico)依赖 iptables 或 IPVS 实现服务负载均衡和网络策略。Cilium 用 eBPF 替代了这些机制——eBPF 程序直接挂载在网卡、TC(Traffic Control)、Socket 和 XDP(Express Data Path)等内核钩子上,在数据包经过路径上实现极速的转发、过滤和修改。相比 iptables 的线性规则匹配,eBPF Maps 提供了近乎常数时间复杂度的查找性能,在拥有数千个服务的大型集群中性能优势尤为明显。
Kube-proxy 替代与高性能负载均衡
Cilium 可以完全替代 Kubernetes 原生的 kube-proxy,使用 eBPF 实现 ClusterIP、NodePort 和 LoadBalancer 类型服务的负载均衡。结合 BBR 或 BPF-based 拥塞控制算法,Cilium 在高并发场景下能够提供比传统 kube-proxy 更低的尾延迟和更高的吞吐量。
身份驱动的网络策略
Cilium 为每个工作负载分配基于身份的标签(如 namespace:default、app:payment),网络策略基于这些身份标签而非 IP 地址来定义允许或拒绝的通信规则。这种设计天然解决了传统 IP-based 策略在 Pod 频繁调度时需要频繁更新规则的难题。
透明加密(Transparent Encryption)
Cilium 支持基于 WireGuard 或 IPSec 的 Pod 间通信加密,加密过程对应用完全透明,无需修改应用程序代码或配置 TLS 证书。
Hubble 可观测性
Hubble 是 Cilium 的子项目,提供集群级别的网络可观测性。Hubble 利用 Cilium 的 eBPF 数据平面,在内核层面捕获每个连接、流和 DNS 请求的元数据,无需额外的 sidecar 代理即可实现服务地图(Service Map)、网络流量监控、API 协议追踪和告警。
Tetragon 安全运行时保护
Tetragon 通过 eBPF 在运行时检测和阻止安全威胁——例如特权容器提升权限、敏感文件被修改、异常系统调用序列等。与传统的基于系统调用的审计工具不同,Tetragon 在内核层面执行策略,可以实时阻止危险操作而不仅仅是记录日志。
技术实现
Cilium 的架构由四个核心组件构成:Cilium Agent(运行在每个集群节点上,配置 eBPF 程序和网络策略)、Cilium Client CLI(命令行工具,用于查询和管理本地 Agent 状态)、Cilium Operator(集中管理集群范围的元数据,如 IP 地址分配和身份分配)以及 Cilium CNI Plugin(由 Kubernetes 调用,在 Pod 创建和销毁时配置网络)。
快速上手
前提条件:需要一个运行 Linux 内核 5.10+ 的 Kubernetes 集群。推荐使用 kubeadm、k3s 或云服务商托管 Kubernetes。
方法一:快速安装(使用 Cilium CLI)
curl -L --fail https://github.com/cilium/cilium-cli/releases/latest/download/cilium-linux-amd64.tar.gz | tar xz sudo mv cilium /usr/local/bin cilium install cilium status --wait
方法二:Helm 安装(生产推荐)
helm repo add cilium https://helm.cilium.io/ helm install cilium cilium/cilium --namespace kube-system --set kubeProxyReplacement=partial --set hubble.enabled=true --set hubble.ui.enabled=true
适用人群
Cilium 主要面向运行大规模 Kubernetes 生产集群的团队。具体用户包括:云原生平台工程师(负责集群网络和安全架构设计)、SRE 团队(关注服务网格性能和可观测性)、安全工程师(需要精细的零信任网络策略)、以及希望在 Kubernetes 中运行 AI/ML 训练任务的团队。
评论与建议
登录 后参与评论或提建议