Cilium 是一个基于 eBPF 的云原生网络与安全项目,主要用于 Kubernetes 集群中的容器网络管理、网络安全和可观察性。它由 Isovalent 公司主导开发,已经成为 CNCF 的孵化项目,广泛应用于生产环境。
🌐 一句话解释
Cilium 是使用 eBPF 技术实现的 Kubernetes CNI 插件,提供高性能、可扩展的网络、安全策略控制和网络可观察能力。
🧠 核心技术:eBPF
eBPF(Extended Berkeley Packet Filter)是一种 Linux 内核技术,允许开发者在内核中安全、高效地运行自定义代码,而不需要修改内核源代码。
Cilium 正是通过 eBPF 实现以下核心功能:
- 容器之间的网络连接(CNI)
- 负载均衡(替代 kube-proxy)
- 网络策略(NetworkPolicy)
- 服务网格功能(Service Mesh,无 sidecar 模式)
- 深度可观察性(Hubble 组件)
🚀 Cilium 的主要功能
功能 | 描述 |
---|---|
CNI 插件 | 负责 Pod 网络接口的创建和路由配置 |
kube-proxy 替代 | 使用 eBPF 实现负载均衡,无需 iptables,提高性能 |
网络策略 | 精细化地控制 Pod 到 Pod 的流量,支持 L3/L4/L7 层 |
多集群通信(ClusterMesh) | 实现多 Kubernetes 集群间的网络互通 |
可观察性(Hubble) | 实时监控流量路径、策略应用、服务通信,图形化展示 |
服务网格功能 | 提供透明代理功能(HTTP/gRPC 等),替代 Istio 等传统服务网格工具 |
✅ Cilium 优势
- 高性能: 基于 eBPF,不依赖 iptables,性能更优
- 可扩展性强: 内核态运行逻辑,可按需动态加载功能
- 可观测性强: 搭配 Hubble,可以看到详细的流量路径和策略应用
- 安全性高: 支持精细粒度的 L3-L7 网络策略
- 无需 Sidecar: 可实现部分服务网格功能,减轻资源消耗
📦 Cilium 与其他组件的关系
类别 | 对比对象 | Cilium 的角色 |
---|---|---|
网络插件(CNI) | Flannel, Calico | Cilium 可替代 Flannel、Calico 等成为主流 CNI |
kube-proxy | iptables/kube-proxy | Cilium 可完全替代 kube-proxy |
服务网格 | Istio, Linkerd | Cilium 提供轻量级服务网格能力(可选) |
📷 架构图(简化)
+--------------------------+
| Kubernetes API |
+-----------+--------------+
|
v
+--------+---------+
| Cilium Agent | <---- 管理 eBPF 程序
+------------------+
|
+-------+--------+
| Linux Kernel | <-- eBPF 插入点(XDP、tc、cgroup 等)
+-----------------+
|
网络流量处理
📘 官方资源
- 官网:https://cilium.io/
- GitHub:https://github.com/cilium/cilium
- 文档:https://docs.cilium.io/
- CNCF 项目:https://www.cncf.io/projects/cilium/
Kubernetes 部署见
https://docs.jansora.com/cloud/cloud-native/kubernetes/install-k8s/kubernetes-cilium-config