3. 容量规划基础:资源模型、预留与超卖策略、水位线设计

多租户故障域隔离的底层支撑是精确的容量规划。若资源模型不清晰、超卖策略失控或水位线缺失,节点宕机后的重调度将引发级联过载。本节从资源建模、分配策略与动态阈值三个维度构建容量规划基础。

3.1 四维资源模型:CPU / 内存 / 磁盘 / 网络

每个物理节点或虚拟机需抽象为四维资源向量。租户的容器/Pod 请求(request)与限制(limit)均基于此模型进行调度决策。

资源维度 可压缩性 隔离粒度 关键指标 常见超卖风险
CPU 可压缩 核(core) / 毫核(mCPU) 使用率、节流(throttling) CPU 竞争导致延迟抖动
内存 不可压缩 字节(MiB / GiB) RSS、OOM 事件 OOM Killer 杀进程
磁盘 不可压缩(空间) 字节 / IOPS / 吞吐 inode 使用率、延迟 磁盘写满 → 节点 NotReady
网络 可压缩(带宽) bps / pps / 连接数 丢包率、重传率 带宽抢占 → 租户间干扰
容量规划第一原则:不可压缩资源(内存、磁盘)必须严格按 request 预留,不可超卖;可压缩资源(CPU、网络带宽)可适度超卖,但需设置硬性上限(limit)防止单租户饿死其他租户。

3.2 预留与超卖策略

资源分配策略直接影响集群利用率与故障隔离能力。核心公式如下:

节点可调度资源 = 节点总容量 - 系统预留 - kubelet 预留 - 已分配 request
超卖比 = 节点所有 Pod limit 之和 / 节点总容量
安全超卖阈值 = 节点总容量 × 超卖系数(通常 1.2 ~ 1.8)

三种主流策略对比:

策略 描述 适用场景 故障隔离影响
静态预留 为系统组件、DaemonSet 预留固定资源 控制面节点、数据库节点 强隔离,但利用率低
动态超卖 基于历史使用率动态调整超卖比 在线业务与离线混部 需配合弹性限流,否则隔离弱
QoS 分级超卖 Guaranteed / Burstable / BestEffort 三级 多租户共享集群 高优先级租户获得强隔离
超卖陷阱:当超卖比 > 2.0 且节点宕机时,重调度器可能将大量 Pod 挤入剩余节点,导致内存 OOM 或磁盘 IO 打满,引发二次故障。建议生产环境超卖比控制在 1.5 以内,并配合 PodDisruptionBudget 与弹性伸缩。

3.3 水位线设计:从触发到回填

水位线(Watermark)是容量规划的可执行层。通过多级水位线驱动自动扩缩容、重调度与告警。

四段水位线模型:
  • 低水位(Low Watermark, LWM): 节点资源使用率 < 40%。允许缩容或合并负载。
  • 安全水位(Safe Watermark, SWM): 40% ~ 70%。正常调度区间,无需干预。
  • 高水位(High Watermark, HWM): 70% ~ 85%。触发预扩容或 Pod 驱逐。
  • 紧急水位(Critical Watermark, CWM): > 85%。立即触发节点级重调度与告警。
四段水位线模型与动作映射 四段水位线模型与动作映射 低水位 LWM 安全水位 SWM 高水位 HWM 紧急水位 CWM 0% ~ 40% 40% ~ 70% 70% ~ 85% 85% ~ 100% 缩容 / 合并 正常调度 预扩容 / 驱逐 紧急重调度 注:水位线阈值可根据节点规格与租户 SLA 动态调整

3.4 多租户场景下的水位线联动

当节点水位线触发高水位或紧急水位时,容量规划引擎需联动租户重调度策略:

  1. 识别过载租户:按租户维度聚合资源使用率,找出 Top-N 资源消耗者。
  2. 计算可驱逐优先级:基于租户 QoS 等级、PodDisruptionBudget、运行时长排序。
  3. 执行平滑驱逐:先驱逐 BestEffort 租户,再驱逐 Burstable 租户,最后考虑 Guaranteed 租户。
  4. 目标节点校验:确保目标节点接收后水位不超过安全水位(SWM)。
水位线联动重调度流程 水位线联动重调度流程 节点水位监控 水位 > HWM? 是 识别过载租户 按 QoS 排序驱逐 目标节点校验 执行重调度 持续监控,水位回落后恢复 否 继续监控

3.5 容量规划最佳实践清单

  • 预留基线化:为系统组件(kubelet、操作系统、监控 Agent)预留 5% ~ 10% 资源,避免被租户抢占。
  • 超卖可观测:每个节点暴露当前超卖比、实际使用率、节流率三个指标,用于容量审计。
  • 水位线差异化:不同租户等级使用不同水位线阈值。例如:金级租户节点 HWM=75%,银级租户节点 HWM=85%。
  • 反亲和性约束:同一租户的多个副本尽量分散到不同故障域,避免单节点水位线过高。
  • 定期压力测试:每季度执行一次节点故障模拟,验证水位线触发后的重调度是否导致其他节点越线。
容量规划核心公式回顾:
节点安全容量 = min( 总容量 × 超卖系数, 总容量 - 系统预留 - 不可压缩资源超卖上限 )
重调度触发条件 = 任意资源维度水位 > HWM 且持续超过 30 秒