1. 课程导论:Pod资源争抢与租户重调度的背景、目标与课程大纲概览

1.1 为什么需要关注 Pod 资源争抢?

在 Kubernetes 多租户集群中,多个工作负载(Deployment、StatefulSet、DaemonSet)共享同一组物理节点。当多个 Pod 同时竞争 CPU、内存、磁盘 IO 或网络带宽时,会发生资源争抢。这种争抢不仅导致单个 Pod 性能下降,还可能引发级联故障:

  • CPU 节流:超出 CPU 限制的 Pod 被内核强制限频,响应延迟飙升。
  • OOM Kill:内存使用超过 limits 的 Pod 被 kubelet 杀死,导致 Deployment 副本数不足。
  • 磁盘 IO 抢占:日志写入密集的 Pod 拖慢同一节点的数据库 Pod。
  • 网络带宽争抢:大数据传输 Pod 挤占在线服务的网络连接。
核心矛盾:Kubernetes 默认调度器只保证 Pod 的 Requests 资源,不保证 Limits 资源。当 Limits 总和超过节点容量时,超卖导致争抢。

1.2 租户重调度的必要性

当资源争抢已经发生,仅靠 QoS 优先级(Guaranteed / Burstable / BestEffort)无法彻底解决问题。需要引入租户重调度机制:

场景 问题 重调度方案
节点 CPU 超卖 > 150% 所有 Pod 延迟升高 驱逐低优 Pod,迁移到空闲节点
内存碎片化 大内存 Pod 无法调度 碎片整理 + Pod 重分布
租户间干扰 离线任务影响在线服务 拓扑感知调度 + 节点隔离
节点故障 Pod 漂移后资源失衡 Descheduler 重新平衡
课程目标:通过本课程,你将掌握如何设计、测试和验证 Deployment 在多租户环境下的资源隔离与重调度策略,确保 SLA 达标。
Pod 资源争抢与租户重调度全景图 资源争抢场景 CPU 节流 & OOM 磁盘 IO 抢占 网络带宽争抢 内存碎片化 触发 租户重调度策略 QoS 优先级驱逐 Descheduler 重平衡 拓扑感知调度 节点隔离与碎片整理 测试验证目标 1. 争抢可复现 2. 重调度可触发 3. SLA 可度量

1.3 课程大纲概览

本课程共 30 章,分为 5 个模块,从原理到实战逐步深入:

模块 章节范围 核心内容 实验环境
基础篇 1-6 资源模型、QoS、LimitRange、ResourceQuota minikube + 3 节点
争抢模拟篇 7-12 CPU 压力、内存压力、磁盘 IO 争抢、网络带宽争抢 stress-ng + iperf3
重调度策略篇 13-20 Descheduler 策略、PodDisruptionBudget、拓扑调度、节点亲和性 kube-descheduler + 自定义策略
多租户隔离篇 21-26 Namespace 隔离、租户资源配额、优先级抢占、动态资源调整 多租户集群 + VPA
测试与验证篇 27-30 混沌工程、SLA 监控、故障注入、自动化测试框架 chaos-mesh + Prometheus
前置要求:你需要具备 Kubernetes 基础操作能力(kubectl、Deployment、Service),了解 Pod 生命周期和调度基本概念。建议准备一个至少 3 个工作节点的集群用于实验。
课程模块与学习路径 基础篇 资源模型 & QoS LimitRange & Quota 争抢模拟篇 CPU/内存/IO/网络 stress-ng 压测 重调度策略篇 Descheduler PDB & 拓扑调度 多租户隔离篇 Namespace 隔离 VPA 动态调整 测试验证篇 混沌工程 SLA 监控 学习产出 掌握 Deployment 在多租户环境下的资源争抢模拟、重调度策略配置与故障注入测试 能够独立设计资源隔离方案,并通过混沌工程验证 SLA 达标

1.4 关键术语与概念

在进入后续章节前,先统一以下核心术语:

术语 定义 本课程中的角色
Requests Pod 保证能获得的最小资源量 调度决策依据
Limits Pod 允许使用的最大资源量 超卖与争抢的根源
QoS Class Guaranteed / Burstable / BestEffort 驱逐优先级
Descheduler Kubernetes 官方重调度组件 核心测试对象
PodDisruptionBudget 保证最小可用 Pod 数的策略 重调度保护机制
Chaos Mesh 云原生混沌工程平台 故障注入工具
学习建议:每章结束后,请完成对应的实验操作。本课程的所有测试用例均可在 minikube 或 kind 集群上复现,建议使用 kubectl get pods -o wide 实时观察 Pod 分布变化。