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 多租户故障域核心架构

下图展示了多租户故障域的核心组件与驱逐/重调度流程:

多租户故障域核心架构图 多租户故障域核心架构 租户 A 故障域 Pod A-1 Pod A-2 Pod A-3 (异常) Pod A-4 租户 B 故障域 Pod B-1 Pod B-2 Pod B-3 Pod B-4 驱逐控制器 Eviction Controller 租户重调度器 Tenant Rescheduler 驱逐控制器检测到租户 A 的 Pod A-3 异常,触发驱逐; 重调度器将健康的 Pod 重新分配到租户 B 域或其他可用节点,保障服务连续性。 健康 Pod 异常 Pod 驱逐控制器 重调度器

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 状态变化和调度日志。只有亲手触发过故障域边界,才能真正理解其设计哲学。