1. 多租户故障域概述
1.1 什么是多租户故障域
在 Kubernetes 多租户集群中,故障域(Fault Domain) 是指一组共享同一故障风险边界的资源集合。当集群同时运行多个租户的工作负载时,一个租户的异常行为(如资源泄露、异常 Pod 激增、节点级故障)不应扩散到其他租户的命名空间或节点组。多租户故障域的核心目标就是隔离故障边界,确保一个租户的故障不会演变为整个集群的灾难。
关键概念: 多租户故障域 = 租户级资源隔离 + 故障边界定义 + 自动驱逐与重调度机制。
典型的故障域层级包括:
| 故障域层级 | 隔离粒度 | 典型故障场景 |
|---|---|---|
| 节点级 | 物理/虚拟机 | 节点宕机、内核崩溃、磁盘故障 |
| 租户级 | 命名空间 / 租户标识 | 资源配额耗尽、异常 Pod 风暴 |
| 工作负载级 | Deployment / StatefulSet | 应用 OOM、死锁、无限重启 |
| 集群级 | 控制平面 | API Server 过载、etcd 慢查询 |
1.2 为什么需要 Pod 驱逐与租户重调度
没有故障域隔离的多租户集群,就像没有防火墙的办公大楼——一个房间起火,整栋楼都可能被波及。Pod 驱逐与租户重调度是故障域管理的两大核心操作:
- Pod 驱逐(Eviction):当节点或租户触发故障边界条件时,系统主动终止异常 Pod,释放资源,防止故障扩散。
- 租户重调度(Rescheduling):驱逐后,将健康的 Pod 重新调度到符合租户隔离策略的节点上,维持服务可用性。
典型触发场景: 节点磁盘压力达到 85%、租户内存使用超过配额 120%、Pod 连续重启超过 5 次。这些阈值一旦触发,系统必须立即执行驱逐,否则整个节点或租户域可能崩溃。
下表对比了有无故障域隔离机制的关键差异:
| 对比维度 | 无故障域隔离 | 有故障域隔离 + 驱逐/重调度 |
|---|---|---|
| 故障影响范围 | 可能扩散到整个集群 | 限制在单个租户或节点域内 |
| 资源回收速度 | 依赖人工介入,分钟级 | 自动驱逐,秒级 |
| 租户 SLA 保障 | 无保障,相互干扰 | 通过配额和优先级保障 |
| 运维复杂度 | 故障定位困难,需全局排查 | 故障域边界清晰,快速定位 |
1.3 多租户故障域核心架构
下图展示了多租户故障域的核心组件与驱逐/重调度流程:
1.4 课程目标与学习路径
本课程旨在帮助你掌握 Kubernetes 多租户环境下故障域管理的完整技能栈。完成本课程后,你将能够:
- 理解故障域模型:掌握节点级、租户级、工作负载级故障域的定义与边界条件。
- 配置驱逐策略:使用
kubectl drain、PodDisruptionBudget、自定义驱逐控制器实现精细化驱逐。 - 实现租户重调度:基于节点亲和性、污点容忍、拓扑分布约束,确保租户 Pod 在驱逐后正确重调度。
- 构建自动化运维:结合 Operator 模式与事件驱动架构,实现故障域的自动检测、驱逐与恢复。
前置要求: 建议你已掌握 Kubernetes 基础(Pod、Deployment、Service、Namespace)、kubectl 常用命令、YAML 编写能力。如果你对上述概念还不熟悉,建议先学习《Kubernetes 入门实战》课程。
学习路径分为四个阶段:
| 阶段 | 章节范围 | 核心产出 |
|---|---|---|
| 基础篇 | 第 1-8 章 | 理解故障域模型,掌握驱逐与重调度基础操作 |
| 进阶篇 | 第 9-16 章 | 配置多租户隔离策略,实现自定义驱逐控制器 |
| 实战篇 | 第 17-24 章 | 构建生产级故障域管理系统,集成监控与告警 |
| 高阶篇 | 第 25-30 章 | 大规模集群优化、混沌工程验证、故障域审计 |
每章都包含理论讲解、可运行的代码示例、故障模拟实验和课后思考题。建议你准备一个至少 3 节点的 Kubernetes 集群(可使用 Kind 或 Minikube 模拟),跟随课程逐步实践。
学习建议: 多租户故障域是一个实践性极强的主题。不要只停留在阅读代码,务必在集群中执行驱逐和重调度操作,观察 Pod 状态变化和调度日志。只有亲手触发过故障域边界,才能真正理解其设计哲学。