cilium 主要服务以及 LB 负责的服务

48 阅读2分钟

Cilium主要包括以下几个独立的关键服务组成部分:

  • Cilium Agent(守护进程)
  • Cilium CLI 客户端
  • Cilium Operator
  • Cilium CNI 插件
  • 以及内置的 Cilium Service Mesh 等。

这些主要服务共同合作,实现网络、安全、可观察性和服务网格功能。

关于代码组织,Cilium 的这些服务主要都集中在同一个开源项目(GitHub上 的 cilium/cilium 仓库)中进行开发和维护。

整体项目中包含了上述各个组件的实现代码,而 Cilium 也维护相关的 helm charts 等辅助配置仓库,但核心代码是统一管理的。

具体服务和功能简介:

  • Cilium Agent:运行于集群每个节点,负责策略执行、流量管理和监控数据收集。
  • Cilium CLI:命令行工具,支持管理和查看 Cilium 状态。
  • Cilium Operator:集群级管理,自动化配置任务。
  • Cilium CNI 插件:与 Kubernetes 集成,实现网络路径配置。
  • Cilium Service Mesh:基于eBPF的轻量级服务网格功能,支持无 sidecar 架构。

综上,Cilium 的独立主要服务数目集中在 4-5 个核心组件,并且这些组件的代码基本都在同一个 cilium 项目仓库中统一管理和维护。

LB 功能所在

Cilium 中负责负载均衡功能的是运行在每个节点上的 Cilium Agent 服务。具体来讲:

  • Cilium Agent 监听 Kubernetes API Server,感知 Service 资源的变化,并根据这些变化动态更新 eBPF 程序,实现流量的负载均衡。

  • 负载均衡实现基于 eBPF/XDP 技术,在内核层面以高性能方式处理服务流量,支持 ClusterIP、NodePort 和 LoadBalancer 类型的 Kubernetes 服务。

  • Cilium Agent 通过维护内核中的 BPF Map,控制实际的数据包转发和服务端点选择,不需要传统的用户态代理。

  • 另外,Cilium Operator 主要负责集群级资源管理与自动化任务,与负载均衡的数据路径无直接关系。

  • Cilium Service Mesh 实现的是服务网格层面功能,与负载均衡的内核实现是配合而非负责数据平面。

因此,从代码职责和项目组成上看,Cilium 负载均衡核心由 Cilium Agent 负责,Operator 负责管理和协调,Service Mesh 处理服务层流量管理,CNI 插件负责网络接口配置.