cilium/operator-azureCilium是开源软件,用于提供和透明地保护应用工作负载(如应用容器或进程)之间的网络连接和负载均衡。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频道]: []
.. _[特别兴趣小组]: []


manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务