cilium/hubble-relayCilium 是一款开源软件,用于为应用工作负载(如容器或进程)提供网络连接、负载均衡,并透明地保障其安全性。它在网络层(L3/4)提供传统网络和安全服务,同时在应用层(L7)保护 HTTP、gRPC、Kafka 等现代应用协议。Cilium 已集成到 Kubernetes、Mesos 等主流编排框架中。
其核心技术基于 Linux 内核的 eBPF 技术,支持在网络 IO、应用套接字、跟踪点等内核集成点动态插入 eBPF 字节码,实现安全、网络和可观测性逻辑。eBPF 兼具高效性和灵活性,更多信息可参考 eBPF.io。
Cilium 社区会维护最近三个主要版本的次要稳定版,更早的版本将停止支持(EOL)。升级至新主要版本可参考 Cilium 升级指南。
以下是当前活跃维护的版本分支及其最新次要版本信息:
| 版本分支 | 发布日期 | 镜像拉取标签 | 发布说明 | 发布公告 |
|---|---|---|---|---|
| v1.8 | 2020-09-30 | docker.io/cilium/cilium:v1.8.4 | Release Notes | 发布公告 |
| v1.7 | 2020-09-30 | docker.io/cilium/cilium:v1.7.10 | Release Notes | 发布公告 |
| v1.6 | 2020-09-30 | docker.io/cilium/cilium:v1.6.12 | Release Notes | 发布公告 |
支持对 HTTP、gRPC、Kafka 等现代协议的细粒度访问控制,突破传统 L3/4 防火墙仅基于端口过滤的限制。例如:
GET 方法访问 /public/.* 路径,拒绝其他请求;service1 向 Kafka 主题 topic1 生产消息,service2 消费 topic1,拒绝其他消息;X-Token: [0-9]+。更多支持的协议和示例可参考文档 L7 策略。
现代分布式应用通过容器快速扩缩容,导致集群内容器数量激增。传统容器防火墙基于源 IP 和目标端口过滤,需在容器启停时频繁更新所有节点的防火墙规则,限制了扩展性。
Cilium 为具有相同安全策略的容器组分配「安全身份」,并将身份关联到容器发出的所有网络包,接收节点可直接验证身份。身份管理通过键值存储实现,无需频繁更新防火墙。
集群内服务通过标签实现访问控制,而外部服务访问则支持基于 CIDR 的传统安全策略(入站/出站),可限制容器与特定 IP 段的通信。
采用扁平 L3 网络连接所有容器,支持跨集群部署。IP 分配通过主机级分配器实现,各主机独立分配 IP,无需协调。
支持两种多节点网络模式:
Cilium 实现分布式负载均衡,可完全替代 kube-proxy 等组件。基于 eBPF 高效哈希表,支持近乎无限扩展:
通过基于 EDT(最早 departure 时间)的 eBPF 速率限制实现容器出口带宽管理,相比传统 HTB(层次令牌桶)或 TBF(令牌桶过滤器),可显著降低传输延迟,避免多队列网卡下的锁竞争。
提供丰富的可观测工具:
eBPF(扩展 Berkeley 包过滤器)是 Linux 内核字节码解释器,最初用于包过滤(如 tcpdump),现已扩展支持哈希表、数组等数据结构,可实现包修改、转发、封装等功能。通过 LLVM 编译器,可使用 C 编写 eBPF 程序,内核验证器确保安全性,JIT 编译器将字节码转换为原生指令以提高效率。Cilium 需 Linux 内核 4.8.0 及以上版本(支持 eBPF 核心功能)。
XDP(快速数据路径)是 eBPF 的扩展,允许在网络驱动层直接访问数据包 DMA 缓冲区运行 eBPF 程序,是内核网络数据路径中最早的可编程处理点,性能极高。
更多技术细节可参考 BPF 与 XDP 参考指南。
manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务