本站支持搜索的镜像仓库:Docker Hub、gcr.io、ghcr.io、quay.io、k8s.gcr.io、registry.gcr.io、elastic.co、mcr.microsoft.com
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 登录方式配置轩辕镜像加速服务,包含7个详细步骤
在 Linux 系统上配置轩辕镜像源,支持主流发行版
在 Docker Desktop 中配置轩辕镜像加速,适用于桌面系统
在 Docker Compose 中使用轩辕镜像加速,支持容器编排
在 k8s 中配置 containerd 使用轩辕镜像加速
在宝塔面板中配置轩辕镜像加速,提升服务器管理效率
在 Synology 群晖NAS系统中配置轩辕镜像加速
在飞牛fnOS系统中配置轩辕镜像加速
在极空间NAS中配置轩辕镜像加速
在爱快ikuai系统中配置轩辕镜像加速
在绿联NAS系统中配置轩辕镜像加速
在威联通NAS系统中配置轩辕镜像加速
在 Podman 中配置轩辕镜像加速,支持多系统
配置轩辕镜像加速9大主流镜像仓库,包含详细配置步骤
无需登录即可使用轩辕镜像加速服务,更加便捷高效
需要其他帮助?请查看我们的 常见问题 或 官方QQ群: 13763429