Project Icon

cilium

基于 eBPF 的网络、可观测性和安全解决方案

Cilium 是基于 eBPF 技术的网络、可观测性和安全解决方案。它提供第 3 层网络功能,支持跨多集群的路由。Cilium 能感知 L7 协议,在 L3-L7 层实施基于身份的安全策略。此外,它还具备负载均衡、网关、带宽管理等功能,并提供网络和安全的可视化与监控能力。

.. raw:: html

Cilium 标志

|cii| |go-report| |clomonitor| |artifacthub| |slack| |go-doc| |rtd| |apache| |bsd| |gpl| |fossa| |gateway-api| |codespaces|

Cilium 是一个基于 eBPF 数据平面的网络、可观测性和安全解决方案。它提供了一个简单的扁平化三层网络,能够以原生路由或覆盖模式跨越多个集群。它能感知 L7 协议,并可使用与网络寻址解耦的基于身份的安全模型在 L3-L7 层强制执行网络策略。

Cilium 实现了 pod 之间以及到外部服务的分布式负载均衡,能够完全替代 kube-proxy,使用 eBPF 中的高效哈希表实现几乎无限的扩展。它还支持集成入口和出口网关、带宽管理和服务网格等高级功能,并提供深度网络和安全可视性与监控。

一种名为 eBPF_ 的新型 Linux 内核技术是 Cilium 的基础。它支持在各种集成点动态插入 eBPF 字节码到 Linux 内核中,如网络 IO、应用程序套接字和跟踪点,以实现安全、网络和可视化逻辑。eBPF 高效灵活。要了解更多关于 eBPF 的信息,请访问 eBPF.io_。

.. image:: Documentation/images/cilium-overview.png :alt: Cilium 网络、可观测性、服务网格和运行时安全特性概览

稳定版本

Cilium 社区维护最近三个次要版本的 Cilium。更早的 Cilium 稳定版本被视为生命周期结束(EOL)。

对于升级到新的次要版本,请参考 Cilium 升级指南_。

以下列出了当前积极维护的发布分支及其最新补丁版本、相应的镜像拉取标签和发布说明:

+---------------------------------------------------------+------------+------------------------------------+----------------------------------------------------------------------------+ | v1.16 <https://github.com/cilium/cilium/tree/v1.16>__ | 2024-07-24 | quay.io/cilium/cilium:v1.16.0 | 发布说明 <https://github.com/cilium/cilium/releases/tag/v1.16.0>__ | +---------------------------------------------------------+------------+------------------------------------+----------------------------------------------------------------------------+ | v1.15 <https://github.com/cilium/cilium/tree/v1.15>__ | 2024-07-11 | quay.io/cilium/cilium:v1.15.7 | 发布说明 <https://github.com/cilium/cilium/releases/tag/v1.15.7>__ | +---------------------------------------------------------+------------+------------------------------------+----------------------------------------------------------------------------+ | v1.14 <https://github.com/cilium/cilium/tree/v1.14>__ | 2024-07-11 | quay.io/cilium/cilium:v1.14.13 | 发布说明 <https://github.com/cilium/cilium/releases/tag/v1.14.13>__ | +---------------------------------------------------------+------------+------------------------------------+----------------------------------------------------------------------------+

架构

Cilium 镜像适用于 AMD64 和 AArch64 架构。

软件物料清单

从 Cilium 1.13.0 版本开始,所有镜像都包含软件物料清单(SBOM)。SBOM 以 SPDX_ 格式生成。更多相关信息可在 Cilium SBOM_ 中找到。

.. _SPDX: https://spdx.dev/ .. _Cilium SBOM: https://docs.cilium.io/en/latest/configuration/sbom/

开发

出于开发和测试目的,Cilium 社区发布快照、早期候选版本(RC)和从 main 分支 <https://github.com/cilium/cilium/commits/main>_ 构建的 CI 容器镜像。这些镜像不适用于生产环境。

要测试升级到新的开发版本,请参考 Cilium 升级指南_ 的最新开发版本。

以下列出了用于测试的分支及其快照或 RC 版本、相应的镜像拉取标签和发布说明(如适用):

+--------------------------------------------------------------------------------------+------------+----------------------------------------------+-------------------------------------------------------------------------------------------+ | main <https://github.com/cilium/cilium/commits/main>__ | 每日 | quay.io/cilium/cilium-ci:latest | N/A | +--------------------------------------------------------------------------------------+------------+----------------------------------------------+-------------------------------------------------------------------------------------------+ | v1.16.0-rc.2 <https://github.com/cilium/cilium/commits/v1.16.0-rc.2>__ | 2024-07-15 | quay.io/cilium/cilium:v1.16.0-rc.2 | 候选版本说明 <https://github.com/cilium/cilium/releases/tag/v1.16.0-rc.2>__ | +--------------------------------------------------------------------------------------+------------+----------------------------------------------+-------------------------------------------------------------------------------------------+

功能概述

.. begin-functionality-overview

透明保护和安全 API

能够保护现代应用程序协议,如 REST/HTTP、gRPC 和 Kafka。传统防火墙在第 3 层和第 4 层运行。运行在特定端口上的协议要么完全受信任,要么被完全阻止。Cilium 提供了过滤单个应用程序协议请求的能力,例如:

  • 允许所有带有方法 GET 和路径 /public/.* 的 HTTP 请求。拒绝所有其他请求。
  • 允许 service1 在 Kafka 主题 topic1 上生产,允许 service2topic1 上消费。拒绝所有其他 Kafka 消息。
  • 要求所有 REST 调用中都存在 HTTP 标头 X-Token: [0-9]+

有关支持的协议和使用示例的最新列表,请参阅我们文档中的 第 7 层策略_ 部分。

基于身份的安全服务间通信

现代分布式应用程序依赖于应用程序容器等技术来促进部署的灵活性和按需扩展。这导致在短时间内启动大量应用程序容器。典型的容器防火墙通过过滤源 IP 地址和目标端口来保护工作负载。这个概念要求每当集群中的任何地方启动容器时,都要操作所有服务器上的防火墙。

为了避免这种限制扩展的情况,Cilium 为共享相同安全策略的应用程序容器组分配安全身份。然后,该身份与应用程序容器发出的所有网络数据包相关联,允许在接收节点验证身份。安全身份管理使用键值存储执行。

安全访问外部服务和从外部服务访问

基于标签的安全是集群内部访问控制的首选工具。为了保护对外部服务的访问和从外部服务的访问,支持传统的基于 CIDR 的入站和出站安全策略。这允许限制应用程序容器对特定 IP 范围的访问。

简单网络

一个简单的扁平化第 3 层网络,能够跨多个集群连接所有应用程序容器。通过使用主机范围分配器,IP 分配保持简单。这意味着每个主机可以分配 IP,而无需主机间的协调。

支持以下多节点网络模型:

  • 覆盖: 基于封装的虚拟网络,跨越所有主机。目前,VXLAN 和 Geneve 是内置的,但支持 Linux 支持的所有封装格式。

    何时使用此模式:此模式的基础设施和集成要求最少。它几乎可以在任何网络基础设施上工作,因为唯一的要求是主机之间的 IP 连接,这通常已经给定。

  • 原生路由: 使用 Linux 主机的常规路由表。网络需要能够路由应用程序容器的 IP 地址。

    何时使用此模式:此模式适用于高级用户,需要对底层网络基础设施有一定了解。此模式适用于:

    • 原生 IPv6 网络
    • 与云网络路由器结合使用
    • 如果您已经运行路由守护进程

负载均衡

Cilium 实现了应用程序容器之间和外部服务的分布式负载均衡,能够完全替代 kube-proxy 等组件。负载均衡在 eBPF 中使用高效的哈希表实现,允许几乎无限的扩展。

对于南北向负载均衡,Cilium 的 eBPF 实现针对最大性能进行了优化,可以附加到 XDP(eXpress Data Path),并支持直接服务器返回(DSR)以及 Maglev 一致性哈希(如果负载均衡操作不在源主机上执行)。

对于东西向负载均衡,Cilium 在 Linux 内核的套接字层(例如在 TCP 连接时)高效地执行服务到后端的转换,从而避免在较低层出现每个数据包 NAT 操作的开销。

带宽管理

Cilium 通过 eBPF 实现了基于高效 EDT(最早离开时间)的容器流量出口节点速率限制的带宽管理。与传统方法(如带宽 CNI 插件中使用的 HTB(分层令牌桶)或 TBF(令牌桶过滤器))相比,这允许显著减少应用程序的传输尾延迟,并避免在多队列网卡下的锁定。

监控和故障排除

获得可见性和排除问题的能力对于任何分布式系统的运行都是基本的。虽然我们学会了喜欢 tcpdumpping 等工具,它们在我们心中永远有特殊的位置,但我们努力提供更好的故障排除工具。这包括提供以下工具:

  • 带元数据的事件监控:当数据包被丢弃时,该工具不仅报告数据包的源 IP 和目标 IP,还提供发送方和接收方的完整标签信息以及许多其他信息。

  • 通过 Prometheus 导出指标:关键指标通过 Prometheus 导出,以集成到您现有的仪表板中。

  • Hubble_:专门为 Cilium 编写的可观测性平台。它提供服务依赖图、运营监控和警报,以及基于流日志的应用程序和安全可见性。

.. _Hubble: https://github.com/cilium/hubble/ .. _第 7 层策略: https://docs.cilium.io/en/stable/security/policy/language/#layer-7-examples

.. end-functionality-overview

入门

  • 为什么选择 Cilium?_
  • 入门_
  • 架构和概念_
  • 安装 Cilium_
  • 常见问题_
  • 贡献_

什么是 eBPF 和 XDP?

Berkeley Packet Filter (BPF) 是最初为过滤网络数据包而引入的 Linux 内核字节码解释器,例如用于 tcpdump 和套接字过滤器。BPF 指令集和周围架构最近经历了重大改造,增加了额外的数据结构(如哈希表和数组)用于保持状态,以及支持数据包操作、转发、封装等额外操作。此外,LLVM 的编译器后端允许用 C 编写程序并编译成 BPF 指令。内核中的验证器确保 BPF 程序可以安全运行,JIT 编译器将 BPF 字节码转换为特定 CPU 架构的指令以提高原生执行效率。BPF 程序可以在内核中的各种钩子点运行,如传入数据包、传出数据包、系统调用、kprobes、uprobes、tracepoints 等。

BPF 不断发展并随着每个新的 Linux 版本获得额外的功能。Cilium 利用 BPF 执行核心数据路径过滤、操作、监控和重定向,并需要 4.8.0 或更新版本的 Linux 内核中的 BPF 功能(最新的当前稳定 Linux 内核是 4.14.x)。

许多 Linux 发行版(包括 CoreOS、Debian、Docker 的 LinuxKit、Fedora、openSUSE 和 Ubuntu)已经提供内核版本 >= 4.8.x。您可以通过运行 uname -a 来检查您的 Linux 内核版本。如果您还没有运行足够新的内核,请查看您的 Linux 发行版的文档,了解如何运行 Linux 内核 4.9.x 或更高版本。

要了解运行 BPF 运行时所需的必要内核版本, 请查看特别兴趣小组<https://docs.cilium.io/en/stable/community/community/#special-interest-groups>_以获取所有SIG及其会议时间的列表。

开发者会议

Cilium开发者社区在Zoom上聚会聊天。欢迎所有人参加。

  • 每周三, 欧洲/苏黎世时间下午5:00 https://time.is/Canton_of_Zurich__(CET/CEST), 通常相当于太平洋时间上午8:00,或东部时间上午11:00。加入Zoom`_
  • 每月第三个周三,日本时间上午9:00 https://time.is/Tokyo__(JST)。加入Zoom`_

eBPF和Cilium办公时间直播

我们每周都会在YouTube上举办一个名为eCHO的社区直播 <https://www.youtube.com/channel/UCJFUxkVQTBJh3LD1wYBWvuQ>_,(非常松散地!)代表eBPF和Cilium办公时间。加入我们的直播,赶上过去的剧集,或前往eCHO仓库 <https://github.com/isovalent/eCHO>_告诉我们你对我们应该涵盖的主题的想法。

治理

Cilium项目由一群维护者和提交者 <https://raw.githubusercontent.com/cilium/cilium/main/MAINTAINERS.md>__管理。 他们如何被选择和治理在我们的治理文档 <https://github.com/cilium/community/blob/main/GOVERNANCE.md>__中有概述。

采用者

在生产中部署Cilium项目的采用者列表及其用例可以在USERS.md <https://github.com/cilium/cilium/blob/main/USERS.md>__文件中找到。

路线图

Cilium维护一个公共路线图 <https://docs.cilium.io/en/latest/community/roadmap/>__。它提供了项目主要优先事项、不同功能和项目的成熟度以及如何影响项目方向的高级视图。

许可证

.. _apache-license: LICENSE .. _bsd-license: bpf/LICENSE.BSD-2-Clause .. _gpl-license: bpf/LICENSE.GPL-2.0

Cilium用户空间组件采用Apache许可证,版本2.0 <apache-license_>授权。 BPF代码模板采用双重许可,包括 通用公共许可证,版本2.0(仅限) <gpl-license_>2条款BSD许可证 <bsd-license_>__ (您可以选择使用其中任一许可证的条款)。

.. _Cilium升级指南: https://docs.cilium.io/en/stable/operations/upgrade/ .. _为什么选择Cilium?: https://docs.cilium.io/en/stable/overview/intro .. _入门: https://docs.cilium.io/en/stable/#getting-started .. _架构和概念: https://docs.cilium.io/en/stable/overview/component-overview/ .. _安装Cilium: https://docs.cilium.io/en/stable/gettingstarted/k8s-install-default/ .. _常见问题: https://github.com/cilium/cilium/issues?utf8=%E2%9C%93&q=is%3Aissue+label%3Akind%2Fquestion+ .. _贡献: https://docs.cilium.io/en/stable/contributing/development/ .. _先决条件: https://docs.cilium.io/en/stable/operations/system_requirements/ .. _BPF和XDP参考指南: https://docs.cilium.io/en/stable/bpf/ .. _eBPF: https://ebpf.io .. _eBPF.io: https://ebpf.io .. _加入Zoom: https://zoom.us/j/596609673

项目侧边栏1项目侧边栏2
推荐项目
Project Cover

豆包MarsCode

豆包 MarsCode 是一款革命性的编程助手,通过AI技术提供代码补全、单测生成、代码解释和智能问答等功能,支持100+编程语言,与主流编辑器无缝集成,显著提升开发效率和代码质量。

Project Cover

AI写歌

Suno AI是一个革命性的AI音乐创作平台,能在短短30秒内帮助用户创作出一首完整的歌曲。无论是寻找创作灵感还是需要快速制作音乐,Suno AI都是音乐爱好者和专业人士的理想选择。

Project Cover

有言AI

有言平台提供一站式AIGC视频创作解决方案,通过智能技术简化视频制作流程。无论是企业宣传还是个人分享,有言都能帮助用户快速、轻松地制作出专业级别的视频内容。

Project Cover

Kimi

Kimi AI助手提供多语言对话支持,能够阅读和理解用户上传的文件内容,解析网页信息,并结合搜索结果为用户提供详尽的答案。无论是日常咨询还是专业问题,Kimi都能以友好、专业的方式提供帮助。

Project Cover

阿里绘蛙

绘蛙是阿里巴巴集团推出的革命性AI电商营销平台。利用尖端人工智能技术,为商家提供一键生成商品图和营销文案的服务,显著提升内容创作效率和营销效果。适用于淘宝、天猫等电商平台,让商品第一时间被种草。

Project Cover

吐司

探索Tensor.Art平台的独特AI模型,免费访问各种图像生成与AI训练工具,从Stable Diffusion等基础模型开始,轻松实现创新图像生成。体验前沿的AI技术,推动个人和企业的创新发展。

Project Cover

SubCat字幕猫

SubCat字幕猫APP是一款创新的视频播放器,它将改变您观看视频的方式!SubCat结合了先进的人工智能技术,为您提供即时视频字幕翻译,无论是本地视频还是网络流媒体,让您轻松享受各种语言的内容。

Project Cover

美间AI

美间AI创意设计平台,利用前沿AI技术,为设计师和营销人员提供一站式设计解决方案。从智能海报到3D效果图,再到文案生成,美间让创意设计更简单、更高效。

Project Cover

AIWritePaper论文写作

AIWritePaper论文写作是一站式AI论文写作辅助工具,简化了选题、文献检索至论文撰写的整个过程。通过简单设定,平台可快速生成高质量论文大纲和全文,配合图表、参考文献等一应俱全,同时提供开题报告和答辩PPT等增值服务,保障数据安全,有效提升写作效率和论文质量。

投诉举报邮箱: service@vectorlightyear.com
@2024 懂AI·鲁ICP备2024100362号-6·鲁公网安备37021002001498号