2. 容量管理基础理论

2.1 什么是容量管理

容量管理(Capacity Management)是一套持续性的规划、监控与调整流程,旨在确保 IT 资源在正确的时间、以正确的规模、满足业务负载需求,同时避免过度投资或资源浪费。在 Kubernetes 语境下,容量管理聚焦于集群的 计算(CPU)、内存、存储 和 网络 四大维度。

核心定义:容量管理 = 需求预测 + 资源供给 + 持续调优,三者形成闭环。

容量管理并非一次性规划,而是贯穿集群全生命周期的动态过程。它需要回答三个关键问题:

  1. 当前容量够吗?——实时监控与告警
  2. 未来容量够吗?——趋势分析与预测
  3. 如何高效利用?——调度策略与资源优化

2.2 容量管理的目标:SLA / SLO / SLI

容量管理的最终目标是通过量化的服务等级协议(SLA)、服务等级目标(SLO)和服务等级指标(SLI)来驱动决策。三者构成一个从抽象承诺到具体测量的层级体系。

术语 定义 示例(K8s 场景) 责任方
SLA(Service Level Agreement) 对外承诺的合同级协议,通常包含惩罚条款 “集群月度可用性 ≥ 99.99%” 业务方 / 客户
SLO(Service Level Objective) 内部设定的可达成目标,比 SLA 更严格 “Pod 调度延迟 P99 ≤ 2s” SRE / 平台团队
SLI(Service Level Indicator) 实际测量的量化指标,用于评估 SLO 达成情况 “过去 30 天 Pod 调度延迟 P99 = 1.8s” 监控系统
实践要点:SLO 通常比 SLA 严格 10%~30%,为意外留出缓冲。例如 SLA 要求 99.9% 可用性,内部 SLO 应设为 99.95% 或更高。

容量管理直接服务于 SLO 的达成。当 SLI 持续偏离 SLO 阈值时,容量管理流程应自动触发扩容、缩容或调度策略调整。

SLA/SLO/SLI 层级关系与容量管理闭环 SLA / SLO / SLI 层级关系与容量管理闭环 SLA(服务等级协议) SLO(服务等级目标) SLI(服务等级指标) 容量管理闭环 ① 需求预测 ② 资源供给 ③ 持续监控 ④ 策略调优 ↻ 循环迭代 驱动 保障

2.3 容量管理在 K8s 中的重要性

Kubernetes 的动态调度、弹性伸缩和声明式管理特性,使得容量管理比传统虚拟机环境更具挑战性,也更具价值。以下是 K8s 场景下容量管理的五个关键重要性维度:

维度 重要性说明 典型风险
资源碎片化 Pod 调度不均导致节点资源碎片,无法调度大 Pod 集群利用率低,需额外节点
突发流量 HPA / VPA 依赖容量预留,否则扩容无资源可用 服务雪崩,SLA 违约
成本控制 云上节点按需付费,容量过剩直接增加账单 月成本超预算 30%~50%
节点故障 Pod 重新调度需要空闲容量作为缓冲 故障恢复时间延长
版本升级 节点滚动升级需要额外容量承载迁移 Pod 升级阻塞,集群不可用
常见误区:很多团队认为 K8s 自动伸缩(CA/HPA)可以完全替代容量规划。实际上,自动伸缩是容量管理的执行工具,而非规划本身。没有合理的容量基线,自动伸缩可能导致“扩容来不及”或“缩容太激进”的双重问题。
K8s 容量管理核心要素与影响 K8s 容量管理核心要素与影响 K8s 容量管理 CPU / 内存 / 存储 / 网络 资源碎片化 突发流量 节点故障 成本控制 版本升级 弹性伸缩 容量管理缺失 → 资源利用率低 + 服务稳定性差 + 成本失控 容量管理到位 → 高可用 + 低成本 + 弹性敏捷

2.4 容量管理的核心流程

一个完整的容量管理流程包含以下五个阶段,形成持续改进的闭环:

  1. 需求分析:收集业务负载特征(QPS、并发数、数据量),转换为资源需求(CPU 核数、内存 GB、存储 IOPS)。
  2. 基线建立:通过历史监控数据建立资源使用基线,识别波峰波谷周期。
  3. 容量规划:基于基线 + 增长预测,制定节点规格、数量、预留缓冲比例。
  4. 执行与监控:部署 Cluster Autoscaler、HPA/VPA,实时跟踪 SLI 指标。
  5. 审计与优化:定期复盘容量利用率,调整 Request/Limit、节点池配置、调度策略。
关键指标速查:
  • 集群利用率:(已分配 Request / 总容量)× 100%,建议目标 60%~80%
  • 节点装箱率:(节点已分配资源 / 节点可分配资源)× 100%,避免超过 90% 导致调度失败
  • 扩缩容延迟:从触发条件到 Pod Ready 的时间,目标 < 5 分钟