3、租户隔离蓝图概述
3.1 什么是租户隔离蓝图
租户隔离蓝图是一套面向多租户 Kubernetes 集群的网络与安全策略组合,它通过 CNI 网络插件、Kubernetes NetworkPolicy 和 Service Mesh 三大核心组件的协同工作,在数据平面构建出逻辑上完全隔离的租户网络边界。在 eBPF 观测场景下,蓝图不仅定义了“流量应该怎么走”,还定义了“丢包应该在哪里被捕获”。
核心目标:确保租户 A 的 Pod 无法直接访问租户 B 的 Pod,同时允许通过显式定义的网关或 Sidecar 代理进行受控通信。所有跨节点流量必须经过 eBPF 探针的观测点。
3.2 蓝图的核心组件
| 组件 | 职责 | 在丢包防护中的角色 |
|---|---|---|
| CNI 网络插件 | 分配 Pod IP、配置 Veth 对、路由规则 | 决定数据包从 Pod 到宿主机网桥的路径;跨节点时依赖底层网络(Overlay/Underlay) |
| Kubernetes NetworkPolicy | 基于标签的 L3/L4 访问控制 | 在 eBPF 层面转化为 BPF 程序,过滤非法流量;丢包可能发生在策略匹配阶段 |
| Service Mesh(Sidecar Proxy) | L7 流量治理、mTLS、可观测性 | 引入额外的 Envoy/Istio 代理跳数,增加丢包风险点;eBPF 需观测 Sidecar 进出流量 |
3.3 蓝图的部署架构
租户隔离蓝图采用分层叠加的部署模式,从底层网络到上层应用策略逐层收紧。下图展示了跨节点场景下,两个租户的 Pod 如何通过蓝图组件进行隔离通信。
3.4 蓝图分层逻辑
从数据包穿越路径来看,租户隔离蓝图可拆解为三个逻辑层,每一层都可能引入丢包:
- 基础设施层(CNI):Pod 网络命名空间 → Veth 对 → 宿主机网桥(cni0) → 路由决策 → 物理网卡。跨节点时经过隧道封装。
- 安全策略层(NetworkPolicy):eBPF 程序在 XDP 或 TC 钩子点执行策略匹配,不匹配的包直接丢弃。
- 服务治理层(Service Mesh):流量经过 Sidecar 的 Inbound Listener → Envoy 处理 → Outbound Listener,每个环节都可能因连接超时、缓冲区满、TLS 握手失败而丢包。
验证重点:在跨节点场景下,eBPF 探针需要同时观测 CNI 层的隧道端点、NetworkPolicy 层的 TC 钩子、以及 Sidecar 的 Ingress/Egress 接口,才能完整覆盖蓝图的丢包路径。
3.5 蓝图与 eBPF 观测的映射关系
| 蓝图组件 | eBPF 挂载点 | 观测指标 |
|---|---|---|
| CNI(Veth/网桥) | TC ingress/egress on cni0, veth | 包计数、字节数、丢包原因(ENOBUFS) |
| NetworkPolicy | XDP / TC on Pod 宿主机端 | 策略命中次数、丢弃规则 ID |
| Service Mesh Sidecar | TC on eth0 (Pod), uprobe on Envoy | 连接数、延迟、重置次数 |
通过上述映射,SRE 团队可以在蓝图上线前,针对每个组件层编写 eBPF 观测程序,提前捕获跨节点丢包事件,避免隔离策略上线后出现“黑屏”故障。