Cilium是一款开源软件,用于为应用工作负载(如应用容器或进程)提供并透明地保护网络连接和负载均衡。Cilium在3/4层提供传统网络和安全服务,同时在7层保护现代应用协议(如HTTP、gRPC和Kafka)的使用安全。Cilium已集成到Kubernetes和Mesos等常见编排框架中。
Cilium的基础是名为eBPF_的新型Linux内核技术。它支持将eBPF字节码动态插入Linux内核的各个集成点(如网络IO、应用套接字和跟踪点),以实现安全、网络和可见性逻辑。eBPF具有高效性和灵活性。要了解更多关于eBPF的信息,请访问eBPF.io_。
!Cilium概述
Cilium社区为最新的三个主要版本维护次要稳定版本。更早的主要版本的稳定版本被视为已终止支持(EOL)。
如需升级到新的主要版本,请参考《Cilium升级指南》。
以下是当前积极维护的发布分支,包括其最新次要版本、对应的镜像拉取标签和发布说明:
| 版本分支 | 发布日期 | 镜像拉取标签 | 发布说明 | 公告 |
|---|---|---|---|---|
v1.8 | 2020-09-30 | docker.io/cilium/cilium:v1.8.4 | 发布说明 | 通用公告 |
v1.7 | 2020-09-30 | docker.io/cilium/cilium:v1.7.10 | 发布说明 | 通用公告 |
v1.6 | 2020-09-30 | docker.io/cilium/cilium:v1.6.12 | 发布说明 | 通用公告 |
能够保护现代应用协议(如REST/HTTP、gRPC和Kafka)的安全。传统防火墙在3/4层运行,特定端口上的协议要么完全受信任,要么被完全阻止。Cilium能够基于单个应用协议请求进行过滤,例如:
GET且路径为/public/.*的HTTP请求,拒绝所有其他请求。service1向Kafka主题topic1生产消息,service2从topic1消费消息,拒绝所有其他Kafka消息。X-Token: [0-9]+。有关支持的协议最新列表和使用示例,请参阅文档中的[7层策略]_部分。
现代分布式应用依赖应用容器等技术来实现部署敏捷性和按需扩展。这导致在短时间内启动大量应用容器。典型的容器防火墙通过过滤源IP地址和目标端口来保护工作负载。这种方式要求集群中任何地方启动容器时,所有服务器上的防火墙都要进行配置,从而限制了扩展性。
为避免这种限制扩展性的情况,Cilium为共享相同安全策略的应用容器组分配安全身份。该身份随后与应用容器发出的所有网络数据包相关联,允许在接收节点验证身份。安全身份管理通过键值存储执行。
基于标签的安全是集群内部访问控制的首选工具。为保护与外部服务的进出访问,支持传统的基于CIDR的入口和出口安全策略。这允许将应用容器的进出访问限制在特定IP范围内。
一个简单的扁平3层网络,能够跨多个集群连接所有应用容器。通过使用主机范围分配器,IP分配保持简单,这意味着每个主机可以分配IP而无需主机之间的协调。
支持以下多节点网络模型:
覆盖网络(Overlay):基于封装的虚拟网络,跨所有主机。目前内置VXLAN和Geneve,但支持Linux支持的所有封装格式。
使用场景:此模式对基础设施和集成要求最低。几乎适用于任何网络基础设施,唯一要求是主机之间的IP连接(通常已满足)。
原生路由(Native Routing):使用Linux主机的常规路由表。网络需要能够路由应用容器的IP地址。
使用场景:此模式适用于高级用户,需要了解底层网络基础设施。适用于:
Cilium为应用容器之间以及与外部服务的流量实现分布式负载均衡,能够完全替代kube-proxy等组件。负载均衡在eBPF中使用高效哈希表实现,支持几乎无限扩展。
对于南北向负载均衡,Cilium的eBPF实现针对性能优化,可附加到XDP(快速数据路径),并支持直接服务器返回(DSR)和Maglev一致性哈希(如果负载均衡操作不在源主机上执行)。
对于东西向负载均衡,Cilium在Linux内核的套接字层(如TCP连接时)执行高效的服务到后端转换,避免了低层每包NAT操作的开销。
Cilium通过基于EDT(最早 departure 时间)的高效速率限制,为节点出口的容器流量实现带宽管理。与带宽CNI插件使用的传统HTB(层次令牌桶)或TBF(令牌桶过滤器)相比,这显著降低了应用的传输尾部延迟,并避免了多队列NIC下的锁定问题。
获得可见性和故障排除能力是任何分布式系统运行的基础。虽然我们喜爱tcpdump和ping等工具,但我们致力于提供更好的故障排除工具,包括:
Berkeley Packet Filter(BPF)是Linux内核字节码解释器,最初用于过滤网络数据包(如tcpdump和套接字过滤器)。BPF指令集和相关架构最近经过重大改进,增加了哈希表和数组等数据结构(用于保存状态)以及支持数据包修改、转发、封装等的操作。此外,LLVM的编译器后端允许用C编写程序并编译为BPF指令。内核验证器确保BPF程序安全运行,JIT编译器将BPF字节码转换为CPU架构特定指令以实现原生执行效率。BPF程序可在内核的多个挂钩点运行,如入站数据包、出站数据包、系统调用、kprobes、uprobes、跟踪点等。
BPF随着每个Linux版本不断发展并获得更多功能。Cilium利用BPF执行核心数据路径过滤、修改、监控和重定向,需要Linux内核4.8.0或更高版本的BPF功能(最新稳定Linux内核为4.14.x)。
许多Linux发行版(包括CoreOS、Debian、Docker的LinuxKit、Fedora、openSUSE和Ubuntu)已 shipping 内核版本≥4.8.x。可通过运行uname -a检查Linux内核版本。如未运行足够新版本的内核,请参考Linux发行版文档了解如何运行Linux内核4.9.x或更高版本。
有关运行BPF运行时所需的内核版本,请参阅前提条件_部分。
!BPF概述
XDP是进一步的演进,允许从网络驱动程序运行特定类型的BPF程序,直接访问数据包的DMA缓冲区。这是软件栈中最早的可编程高性能数据包处理点。
有关面向开发人员的BPF和XDP更多信息,请参阅[BPF和XDP参考指南]_。
加入Cilium Slack频道,与Cilium开发人员和其他用户交流。这是了解Cilium、提问和分享经验的好地方。
有关所有SIG及其会议时间的列表,请参阅特别兴趣小组。
Cilium用户空间组件采用Apache许可证2.0版授权。BPF代码模板采用GNU通用公共许可证2.0版授权。
.. _Hubble: []
.. _CNI: []
.. _libnetwork: []
.. _containerd: []
.. _Service: []
.. _Ingress: []
.. _NetworkPolicy: []
.. _Labels: []
.. _7层策略: []
.. _为什么选择Cilium?: []
.. _入门指南: []
.. _架构和概念: []
.. _安装Cilium: []
.. _常见问题: []
.. _贡献: []
.. _前提条件: []
.. _BPF和XDP参考指南: []
.. _eBPF: []
.. _eBPF.io: [***]
来自真实用户的反馈,见证轩辕镜像的优质服务
免费版仅支持 Docker Hub 加速,不承诺可用性和速度;专业版支持更多镜像源,保证可用性和稳定速度,提供优先客服响应。
免费版仅支持 docker.io;专业版支持 docker.io、gcr.io、ghcr.io、registry.k8s.io、nvcr.io、quay.io、mcr.microsoft.com、docker.elastic.co 等。
当返回 402 Payment Required 错误时,表示流量已耗尽,需要充值流量包以恢复服务。
通常由 Docker 版本过低导致,需要升级到 20.x 或更高版本以支持 V2 协议。
先检查 Docker 版本,版本过低则升级;版本正常则验证镜像信息是否正确。
使用 docker tag 命令为镜像打上新标签,去掉域名前缀,使镜像名称更简洁。
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
在 Linux 系统配置镜像加速服务
在 Docker Desktop 配置镜像加速
Docker Compose 项目配置加速
Kubernetes 集群配置 Containerd
在宝塔面板一键配置镜像加速
Synology 群晖 NAS 配置加速
飞牛 fnOS 系统配置镜像加速
极空间 NAS 系统配置加速服务
爱快 iKuai 路由系统配置加速
绿联 NAS 系统配置镜像加速
QNAP 威联通 NAS 配置加速
Podman 容器引擎配置加速
HPC 科学计算容器配置加速
ghcr、Quay、nvcr 等镜像仓库
无需登录使用专属域名加速
需要其他帮助?请查看我们的 常见问题 或 官方QQ群: 13763429