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 如何通过蓝图组件进行隔离通信。

租户隔离蓝图跨节点部署架构 Node-A(租户 X) Pod-X1 Pod-X2 Sidecar Proxy Sidecar Proxy Node-B(租户 Y) Pod-Y1 Pod-Y2 Sidecar Proxy Sidecar Proxy 跨节点 Overlay 网络(VXLAN / Geneve) eBPF 探针部署点:隧道端点、宿主机网桥、Pod veth Kubernetes API Server NetworkPolicy / CRD 下发 🔍 丢包防护验证关键点: 1. Sidecar 入站 → 出站 丢包 | 2. 宿主机网桥 → 隧道端点 丢包 | 3. NetworkPolicy 规则匹配丢弃

3.4 蓝图分层逻辑

从数据包穿越路径来看,租户隔离蓝图可拆解为三个逻辑层,每一层都可能引入丢包:

  1. 基础设施层(CNI):Pod 网络命名空间 → Veth 对 → 宿主机网桥(cni0) → 路由决策 → 物理网卡。跨节点时经过隧道封装。
  2. 安全策略层(NetworkPolicy):eBPF 程序在 XDP 或 TC 钩子点执行策略匹配,不匹配的包直接丢弃。
  3. 服务治理层(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 观测程序,提前捕获跨节点丢包事件,避免隔离策略上线后出现“黑屏”故障。