资源管理与驱逐
resource-management、evictions。
资源管理与驱逐
Pod 的 requests/limits 决定 Scheduler 如何装箱;节点资源 不足 时 kubelet 会 驱逐(Eviction) Pod。本课对应路线图 resource-management 与 evictions——在 kubernetes-essentials 入门 requests 之上,理解 QoS、配额、优先级与稳定性。
学习目标
- 区分 requests、limits 对调度与 cgroup 限流的影响
- 说出 Guaranteed / Burstable / BestEffort 三档 QoS 与驱逐顺序
- 为 namespace 设计 ResourceQuota + LimitRange 草案
Requests 与 Limits
| 字段 | 作用 |
|---|---|
| requests | Scheduler 扣减节点 可分配 资源;保证「至少能调度」 |
| limits | 运行时上限;CPU 可 throttle,内存超限可能 OOMKill |
k8s-resources 入门已设 cpu/memory;生产必须为 每个容器 设 requests,limits 与 JVM/Spring 堆配置 对齐(避免 Java 进程 OOM 与 limit 打架)。
resources:
requests:
cpu: "250m"
memory: "512Mi"
limits:
cpu: "500m"
memory: "768Mi"
QoS 等级
Kubernetes 根据 requests/limits 是否相等、是否设置 自动分类:
| QoS | 条件 | 驱逐优先级 |
|---|---|---|
| Guaranteed | 所有容器 limits = requests 且全设 | 最后 |
| Burstable | 至少一个容器设了 request | 中间 |
| BestEffort | 都没设 | 最先 |
prod 核心服务目标 Guaranteed 或 Burstable + 合理 limits;Job 临时任务可用 Burstable。
节点压力驱逐
Node 内存 / 磁盘 / inode 低于 eviction threshold
→ kubelet 按优先级驱逐 Pod
→ 典型顺序:BestEffort → 超 requests 的 Burstable → Guaranteed
与 k8a-taints 的 NoExecute 策略驱逐 不同——这是 资源保护 机制。监控节点 memory.available、node_pressure 告警见 与 。