1. 课程导论:服务目录平台概述、Cilium网络策略在其中的角色、常见故障场景总览
1.1 服务目录平台概述
服务目录平台是现代企业 IT 治理与云原生转型的核心组件,它通过统一的抽象层将底层基础设施(Kubernetes、虚拟机、裸金属)与上层业务应用解耦。平台的核心能力包括:
- 服务注册与发现:微服务启动后自动向目录注册元数据(名称、版本、端点、标签),消费者通过逻辑名称而非 IP 地址进行调用。
- 策略驱动的访问控制:基于服务身份(Service Identity)而非网络 IP 段定义通信规则,实现零信任网络模型。
- 多集群/混合云联邦:跨集群、跨区域的服务目录同步,使全局服务拓扑对应用透明。
- 可观测性集成:自动生成服务依赖图、调用链指标和审计日志,为排障提供数据基础。
| 组件层 | 典型实现 | 职责 |
|---|---|---|
| 服务目录 API | Kubernetes CRD + 聚合 API | 定义 Service、ServiceBinding、ServiceClass 等资源 |
| 身份与策略引擎 | SPIFFE/SPIRE + OPA | 签发服务身份证书、评估访问策略 |
| 数据平面 | Cilium (eBPF) + Envoy | 执行网络策略、负载均衡、加密传输 |
| 观测与排障 | Hubble + Grafana + Loki | 流量抓取、策略审计、日志聚合 |
排障视角提示: 服务目录平台中 80% 的网络故障并非底层链路中断,而是策略配置与目录元数据之间的语义不一致。理解目录的抽象模型是定位 Cilium 策略问题的前提。
1.2 Cilium网络策略在其中的角色
Cilium 基于 eBPF 技术,在服务目录平台中承担 数据平面执行者 和 身份感知策略引擎 的双重角色。其核心价值体现在三个层面:
- 身份驱动的策略模型:Cilium 通过
CiliumIdentity将 Kubernetes 标签、服务账户、SPIFFE ID 映射为安全标识,策略规则直接引用服务目录中的逻辑身份,而非 IP/CIDR。 - L3-L7 全栈策略:支持从网络层(TCP/UDP)到应用层(HTTP/gRPC/Kafka)的细粒度控制,例如仅允许
payment-service对ledger-service的POST /api/v1/transactions请求。 - 服务依赖自动发现:Cilium 与 Hubble 联动,实时生成服务间通信拓扑,策略变更前可模拟影响范围,避免误阻断。
1.3 常见故障场景总览
基于生产环境排障案例的统计,服务目录平台中 Cilium 网络策略相关的故障可归纳为以下六大类。本课程将逐一深入剖析每个场景的根因、排查方法和修复策略。
| 故障类别 | 典型现象 | 根因方向 | 课程章节 |
|---|---|---|---|
| 身份映射失效 | 服务 A 无法访问服务 B,但策略规则看起来正确 | 标签选择器不匹配、身份未同步、SPIRE 证书过期 | 第 3 章 |
| 策略顺序与优先级冲突 | 部分流量被意外放行或阻断 | 默认拒绝未生效、策略叠加顺序错误、集群策略与命名空间策略冲突 | 第 5 章 |
| L7 策略解析失败 | HTTP/gRPC 请求返回 403 或连接重置 | Envoy 代理配置错误、协议检测失败、TLS 透传导致 L7 不可见 | 第 7 章 |
| 服务目录元数据不一致 | 策略引用已删除或重命名的服务 | 目录缓存未刷新、ServiceBinding 状态过期、跨集群同步延迟 | 第 9 章 |
| Hubble 观测数据缺失 | 排障时看不到被拒绝的流量记录 | Hubble 过滤规则遗漏、流日志采样率过低、eBPF map 溢出 | 第 11 章 |
| 性能退化与连接超时 | 策略生效后延迟飙升、吞吐下降 | eBPF 程序复杂度超限、加密开销、策略规则数量过多 | 第 13 章 |
课程路线图: 本课程共 30 章,前 6 章夯实身份与策略基础,第 7–14 章深入 L7 策略与观测排障,第 15–20 章覆盖多集群与混合云场景,第 21–30 章聚焦性能调优、安全加固与生产实战案例。每章均包含可复现的排障步骤和 Cilium/Hubble 命令行示例。
排障第一原则: 在服务目录平台中,永远不要假设策略规则“看起来正确”就等于实际生效。必须通过
hubble observe 实时流量和 cilium identity list 身份映射来验证。本课程所有案例均遵循“先观测、后分析、再变更”的排障流程。