Cilium是开源软件,用于提供和透明地保护应用工作负载(如应用容器或进程)之间的网络连接和负载均衡。Cilium在第3/4层运行以提供传统网络和安全服务,并在第7层保护现代应用协议(如HTTP、gRPC和Kafka)的使用。Cilium已集成到Kubernetes和Mesos等常见编排框架中。
一种名为eBPF_的新型Linux内核技术是Cilium的基础。它支持将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地址。
使用场景:适用于高级用户,需了解底层网络基础设施,适用于原生IPv6网络、与云网络路由器结合使用或已运行路由守护进程的环境。
Cilium为应用容器间及与外部服务的流量实现分布式负载均衡,可完全替代kube-proxy等组件。基于eBPF高效哈希表实现,支持几乎无限扩展。
通过基于EDT(最早Departure时间)的高效速率限制,使用eBPF为流出节点的容器流量实现带宽管理。与传统HTB/TBF方法相比,可显著减少应用传输尾部延迟,避免多队列NIC下的锁定问题。
提供增强的可见性和故障排除工具,包括:
Berkeley Packet Filter(BPF)是Linux内核字节码解释器,最初用于过滤网络数据包(如tcpdump)。其指令集和架构经重大改进后,支持哈希表/数组等数据结构及数据包修改、转发等操作。LLVM编译器后端允许用C编写程序并编译为BPF指令,内核验证器确保安全运行,JIT编译器将字节码转换为原生指令以提高效率。BPF程序可在内核多个挂钩点运行(如网络数据包、系统调用等)。
Cilium利用BPF执行核心数据路径逻辑,需Linux内核4.8.0或更高版本(最新稳定内核为4.14.x)。多数Linux发行版(如CoreOS、Debian、Ubuntu等)已提供>=4.8.x内核,可通过uname -a检查内核版本。
XDP允许从网络驱动程序运行BPF程序,直接访问数据包DMA缓冲区,是软件栈中最早的可编程数据包处理点,提供高性能网络数据路径处理能力。
!BPF概述
有关BPF和XDP的更多开发人员信息,请参见[BPF和XDP参考指南]_。
加入Cilium [Slack频道]与开发人员和用户交流,了解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: []
.. _[Slack频道]: []
.. _[特别兴趣小组]: []
来自真实用户的反馈,见证轩辕镜像的优质服务
免费版仅支持 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