Cilium 术语
基础技术术语
|
术语
|
定义
|
Cilium 中的作用
|
|---|---|---|
|
eBPF
|
在 Linux 内核沙箱里动态运行字节码的技术,无需内核模块或 sidecar
|
Cilium 的数据路径基石,所有网络/安全/观测逻辑都以 eBPF 程序挂载到内核 hook 上执行
|
|
XDP (eXpress Data Path)
|
在网卡驱动层最早处理包的技术
|
Cilium NodePort/LoadBalancer 加速档位,包不等 skb 分配就处理完,延迟最低
|
|
TC (Traffic Control)
|
Linux 网络设备 ingress/egress hook
|
Cilium 做策略执行、封装/解封装的主要挂载点
|
|
Socket LB
|
在 socket 系统调用(connect/sendmsg/recvmsg)层做服务负载均衡
|
Cilium 替代 kube-proxy 的核心机制——东西向流量在
connect() 时直接选 backend,免去 per-packet NAT |
|
BPF Map
|
eBPF 程序使用的内核哈希表/LRU 表
|
存放 Service 表、backend 表、CT(连接跟踪)、NAT 映射、policy 映射等,O(1) 查找、增量更新
|
|
CT (Connection Tracking)
|
连接状态跟踪
|
Cilium 用 BPF map 实现,替代 iptables 的
nf_conntrack,无全局锁竞争 |
安装与部署术语
|
术语
|
定义
|
作用
|
|---|---|---|
|
kube-proxy replacement
|
用 eBPF 完全替代 kube-proxy 的 iptables/ipvs 规则
|
通过
kubeProxyReplacement=true 开启;Service 的 ClusterIP/NodePort/LoadBalancer 全由 eBPF 处理 |
|
k8sServiceHost / k8sServicePort
|
Cilium agent 直连 API server 的地址
|
kube-proxy-free 场景必填——因为没有 kube-proxy 实现
kubernetes 这个 Service,Cilium 必须直连 |
|
--skip-phases=addon/kube-proxy
|
kubeadm init 时跳过 kube-proxy DaemonSet 安装
|
Cilium kube-proxy-free 部署的前置必要条件
|
|
Cilium CLI
|
cilium install 命令行工具 |
快速部署 Cilium,自动探测环境
|
|
Helm Chart
|
Cilium 官方 Helm 包
|
GitOps 场景(Argo CD/Flux)首选,所有参数通过
values.yaml 固化 |
|
cilium-agent
|
每台节点上的 Cilium 主进程(DaemonSet)
|
watch K8s API 的 Service/EndpointSlice/Policy 变更,编译并加载 eBPF 程序、更新 BPF Map
|
|
cilium-operator
|
集群级单例(或多副本)
|
处理 IPAM 池管理、CRD 清理、BGP CP 资源协调等集群级任务
|
路由与封装术语(routingMode / tunnel)
|
术语
|
定义
|
作用
|
|---|---|---|
|
routingMode: tunnel
|
节点间建立 UDP 隧道网格,Pod 包外层封装节点 IP
|
对底层网络要求最少——只要节点 IP 通 + 放行 UDP 端口
|
|
routingMode: native
|
不封装,Pod 包直接交给 Linux 内核路由
|
无封装、全 MTU、线速;要求底层网络能路由 PodCIDR
|
|
tunnel: vxlan
|
VXLAN 封装,UDP 8472,Header 固定 50B
|
tunnel 模式的默认协议,兼容性最好
|
|
tunnel: geneve
|
Geneve 封装,UDP 6081,Header 可变长
|
支持把 Cilium identity 和 DSR service info 编码进 Option;VXLAN 不支持隧道 DSR
|
|
autoDirectNodeRoutes
|
Cilium 自动在主机路由表加直连路由
|
仅同 L2 有效;跨子网必须 false
|
|
ipv4NativeRoutingCIDR
|
声明哪些 CIDR 走 native routing
|
native 模式必配,告诉 Cilium "这些 PodCIDR 走内核路由,别封装"
|
|
BPF masquerade
|
用 eBPF 做 SNAT 替代 iptables
|
bpf.masquerade=true 开启,性能优于 iptables SNAT |
|
BPF host routing
|
用 eBPF 处理主机出口路由
|
绕过主机协议栈,进一步降低延迟(要求内核 ≥ 5.10)
|
负载均衡术语(loadBalancer.*)
|
术语
|
定义
|
作用
|
|---|---|---|
|
loadBalancer.mode: snat
|
默认模式,backend 回包经 LB 节点反向 SNAT
|
通用兼容,但 backend 看不到真实客户端 IP,回程多一跳
|
|
loadBalancer.mode: dsr
|
Direct Server Return,backend 直接回客户端
|
保留客户端真实 IP、回程少一跳;要求底层关源 IP 校验;VXLAN 隧道不支持,必须 geneve
|
|
loadBalancer.mode: hybrid
|
TCP 走 DSR + UDP 走 SNAT
|
生产推荐,兼顾 DSR 收益与 UDP 兼容性
|
|
loadBalancer.algorithm: random
|
默认算法,每包独立随机选 backend
|
无状态,backend 变更时所有连接重映射
|
|
loadBalancer.algorithm: maglev
|
Google Maglev 一致性哈希算法
|
backend 增删时无关 backend 重映射 ≤ 1%;只对南北向(外部→Service)生效,东西向走 socket-LB 不经 Maglev
|
|
maglev.tableSize
|
查找表大小,必须素数
|
建议 > 单 Service 最大 backend 数 × 100;65521 支撑 ~650 backend
|
|
maglev.hashSeed
|
集群级哈希种子
|
集群内所有 agent 必须一致,否则同一客户端在不同节点落到不同 backend
|
|
loadBalancer.acceleration: native
|
用 XDP 加速 NodePort/LB 入站
|
网卡驱动支持 native XDP 时开启(i40e/mlx5/bnxt 等)
|
|
dsrDispatch
|
DSR 模式下 service info 的携带方式
|
opt(native 同 L2)/ geneve(隧道场景)/ ipip |
|
externalTrafficPolicy
|
外部流量是否跨节点转发
|
Local 保留客户端 IP;Cluster 默认允许跨节点 |
|
internalTrafficPolicy
|
内部 Pod→Service 是否允许跨节点
|
Local 仅本节点 backend(DaemonSet 类场景);Cluster 默认 |
IPAM 与对外发布术语
|
术语
|
定义
|
作用
|
|---|---|---|
|
IPAM (IP Address Management)
|
Pod IP 分配管理
|
cluster-pool(裸金属默认)/ kubernetes(kube-controller 分配)/ eni(AWS)/ azure(AKS) |
|
cluster-pool
|
Cilium Operator 通过 CiliumNode CRD 给每节点分一段 PodCIDR
|
裸金属/自建集群最常用的 IPAM 模式
|
|
clusterPoolIPv4PodCIDRList
|
集群 PodCIDR 总池
|
跨子网大集群给 /12 留 4x 扩容余量
|
|
clusterPoolIPv4MaskSize
|
每节点 PodCIDR 掩码
|
24 = 每节点 254 Pod;25 = 128 Pod
|
|
LB IPAM (LoadBalancer IP Address Management)
|
管理 LoadBalancer 类型 Service 的 IP 分配
|
Cilium 内置,替代 MetalLB
|
|
CiliumLoadBalancerIPPool
|
定义 LB IP 地址池的 CRD
|
从运维段抠一段 IP 给 LB Service 用
|
|
L2 Announcement
|
通过 ARP/NDP 在 L2 广播域通告 LB IP
|
替代 MetalLB L2 模式;跨子网无效(ARP 出不了广播域)
|
|
CiliumL2AnnouncementPolicy
|
L2 通告策略 CRD
|
指定哪个 interface、哪个节点做 ARP 应答
|
|
ENI mode
|
AWS 场景 Pod IP 直接从 AWS ENI 分配
|
VPC 内原生可路由,无 SNAT、无封装
|
|
Prefix Delegation
|
AWS ENI 前缀委托,一次给 /28(16 个 IP)
|
大幅提升单节点 Pod 密度
|
BGP 术语(跨子网核心)
|
术语
|
定义
|
作用
|
|---|---|---|
|
BGP (Border Gateway Protocol)
|
自治系统间的路由协议
|
Cilium 用来向物理网络通告 PodCIDR/LB IP
|
|
ASN (Autonomous System Number)
|
BGP 的"自治域编号"
|
私有段 64512-65534;Cilium 侧 localASN,TOR 侧 peerASN;AS 不同走 eBGP
|
|
TOR (Top of Rack)
|
机柜顶部交换机
|
Cilium BGP 的邻居,peerAddress 就是 TOR 的 SVI IP
|
|
Spine-Leaf
|
数据中心 CLOS 拓扑
|
TOR(Leaf)上联 Spine,Spine 间 ECMP
|
|
eBGP
|
AS 不同的 BGP 邻居
|
Cilium 与 TOR 的标准建邻方式(TTL=1,单跳)
|
|
iBGP
|
AS 相同的 BGP 邻居
|
需要 multi-hop + route reflector,配置复杂
|
|
Cilium BGP Control Plane
|
Cilium 1.12+ 内置的 BGP 能力
|
每台节点 cilium-agent 自带 GoBGP,替代外挂 Bird/FRR
|
|
CiliumBGPClusterConfig
|
按 nodeSelector 分组定义 BGP 实例的 CRD
|
用户侧按 rack 写,operator 自动生成 NodeConfig
|
|
CiliumBGPPeerConfig
|
peer 通用参数(timers、GR、family)的 CRD
|
全局复用一份
|
|
CiliumBGPAdvertisement
|
宣告什么前缀(PodCIDR/Service)的 CRD
|
全局复用一份
|
|
CiliumBGPNodeConfig
|
每台节点的实际 BGP 实例
|
operator 自动生成,用户不写
|
|
ECMP
|
Equal-Cost Multi-Path,等价多路径
|
TOR/Spine 层面实现多节点多路径负载
|
网络策略与安全术语
|
术语
|
定义
|
作用
|
|---|---|---|
|
Identity
|
基于 Pod label 的身份标识(数字哈希)
|
Cilium 安全模型的基石——"按身份决策,不按 IP"
|
|
CiliumNetworkPolicy (CNP)
|
Cilium 的 L3/L4/L7 网络策略 CRD(命名空间级)
|
扩展 K8s NetworkPolicy,支持 L7(HTTP/gRPC/Kafka/DNS)
|
|
CiliumClusterwideNetworkPolicy (CCNP)
|
集群级 CNP
|
跨命名空间的策略
|
|
Endpoint
|
Cilium 管理的网络端点(通常是 Pod)
|
每个 Endpoint 有自己的 eBPF 程序和数据路径
|
|
CiliumEndpoint (CE)
|
描述 Pod 网络身份的 CRD
|
大规模集群数量巨大,需开 CiliumEndpointSlice 打包
|
|
L3/L4 Policy
|
基于身份+端口/协议的策略
|
eBPF 直接丢包,性能极高
|
|
L7 Policy
|
基于 HTTP method/path、gRPC、Kafka topic 的策略
|
通过 Envoy proxy(嵌入 Cilium agent)实现
|
|
Host Firewall
|
主机层面的防火墙策略
|
保护节点自身流量
|
|
Transparent Encryption
|
透明加密(IPsec/WireGuard)
|
Pod 间通信加密
|
|
Egress Gateway
|
出站流量网关
|
统一 SNAT 出口,便于防火墙策略
|
可观测性与运维术语
|
术语
|
定义
|
作用
|
|---|---|---|
|
Hubble
|
Cilium 的可观测性层
|
提供流级别网络可见性,无需 sidecar
|
|
Hubble Relay
|
Hubble 中继组件
|
聚合所有节点的流事件,端口 4244/TCP
|
|
Hubble UI
|
Hubble 可视化界面
|
服务依赖图、流日志查询
|
|
hubble observe
|
CLI 实时观察流量
|
hubble observe --verdict DROPPED 调试 NetworkPolicy 最有效 |
|
Service Map
|
服务依赖关系图
|
基于 Hubble 流数据自动构建
|
|
Cilium Status
|
cilium status 查看数据路径状态 |
验证 kube-proxy replacement、BGP、Hubble 等是否生效
|
|
BPF Map Sizing
|
eBPF map 大小调优
|
bpf.mapDynamicSizeRatio 按节点内存比例自动扩 |
|
Distributed LRU
|
1.18+ 的 CT/NAT 分布式 LRU
|
替代 node-global LRU,防高并发自旋
|
|
Cluster Mesh
|
多集群互联
|
跨集群 Service 发现、故障转移
|
|
Bandwidth Manager
|
带宽管理(EDT/BBR)
|
基于 eBPF 的拥塞控制
|
术语间的关系图
eBPF/XDP 是基石
↓
Cilium 用 eBPF 实现:
├── 路由封装(routingMode: tunnel/native + vxlan/geneve)
├── 负载均衡(kubeProxyReplacement + loadBalancer.mode + Maglev)
├── IPAM(cluster-pool/eni + LB IPAM)
├── BGP CP(跨子网通告 PodCIDR)
├── 网络策略(Identity + CNP + L7 via Envoy)
└── 可观测性(Hubble)
↓
跨子网场景的两大路径:
├── 无 BGP → tunnel + vxlan(封装,零网络耦合)
└── 有 BGP → native + BGP CP(无封装,性能最优)

浙公网安备 33010602011771号