技术
Cilium
基于 eBPF 的 Kubernetes 网络、安全与可观测性
Cilium 是一个构建在 eBPF 之上的 Kubernetes 网络、安全与可观测性方案。eBPF 是一项 Linux 内核技术,使 Cilium 能够直接在内核中运行网络和安全逻辑,而没有传统基于 iptables 的方案那样的开销。
工作原理
Cilium 作为 Kubernetes 的 CNI(Container Network Interface)插件运行,使其能够看到每个 Pod 的网络流量。由于其数据路径是由运行在内核中的 eBPF 程序实现的,它可以执行网络策略、对流量做负载均衡,并对 Pod 之间的通信加密,开销远低于基于代理或 iptables 的替代方案。它还基于身份(Pod、服务)而不仅仅是原始 IP 地址工作。
核心概念
- eBPF —— 一项 Linux 内核技术,使 Cilium 无需内核模块或树外补丁,就能将自定义程序附加到网络事件上。
- CiliumNetworkPolicy —— 扩展的网络策略资源,支持三到七层规则,包括感知 HTTP 的规则,例如限制允许访问的 API 路径。
- Identity(身份) —— Cilium 为共享标签的 Pod 组分配安全身份,因此策略和可观测性是以工作负载而非临时 IP 来表达的。
- Hubble —— Cilium 的可观测性组件,提供对整个集群的流量和策略判定的实时、流级别视图。
为什么团队选择 Cilium
- 性能。 基于 eBPF 的数据路径避免了 iptables 链的每包开销,这在规模较大时很重要。
- 感知身份的策略。 网络策略以工作负载身份甚至应用层语义来定义,而不仅仅是 IP/端口元组。
- 深度可见性。 Hubble 提供对整个集群流量和策略执行的实时、逐流视图,对调试和审计都有用。
- 不止于 CNI。 Cilium 还可以处理负载均衡、取代 kube-proxy,并可以扩展为服务网格的数据平面。
快速开始
将 Cilium 安装为集群的 CNI(许多托管的 Kubernetes 产品都将其作为受支持的网络插件),然后定义 CiliumNetworkPolicy 资源来控制工作负载之间的流量。下面的指南涵盖常见的策略模式以及如何借助 Hubble 获得可见性。