CodeRoadMap
首页路线题库资源库文章社区
CodeRoadMap

程序员的学习成长路线图。内容免费开放,登录后可同步路线图与课时进度。

由 程序员柏风 独立维护 · 关于作者

学习

  • 路线图
  • 课程
  • 面试题
  • 文章
  • 我

更多

  • 资源
  • 社区
  • 关于作者
  • 内容说明

© 2026 CodeRoadMap

津ICP备2026012044号-1·津公网安备12011002026155号·coderoadmap@126.com
Kubernetes 进阶/课时/资源管理与驱逐
RawBlame
课时目录12 节

Kubernetes 进阶

  1. 01K8s 进阶概览
  2. 02托管集群选型
  3. 03自建 vs 托管
  4. 04控制平面与工作节点
  5. 05多集群管理
  6. 06污点和容忍度
  7. 07拓扑分布约束
  8. 08CRD 与自定义控制器
  9. 09资源管理与驱逐
  10. 10集群可观测性
  11. 11资源监控与优化
  12. 12综合练习

资源管理与驱逐

resource-management、evictions。

30 分钟

资源管理与驱逐

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

字段作用
requestsScheduler 扣减节点 可分配 资源;保证「至少能调度」
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 告警见 与 。

prometheus-essentials
k8a-monitor

ResourceQuota 与 LimitRange

ResourceQuota(namespace 级):限制总 CPU/内存/Pod 数。

LimitRange(namespace 级):默认 requests/limits、单 Pod 上下限。

# LimitRange 片段:防止「零 request」Pod 进 prod namespace
spec:
  limits:
    - type: Container
      defaultRequest:
        cpu: 100m
        memory: 128Mi
      max:
        cpu: "2"
        memory: 4Gi

多租户集群或 staging 防资源耗尽 常用;GitOps 仓库里 namespace manifest 与 chart 一并管理,见 gitops-repo。

PriorityClass 与 PDB

机制作用
PriorityClass高优先级 Pod 可 抢占 低优先级
PDB限制 自愿 中断(drain、滚动)时可用副本下限

与 k8a-topology 的 spread 组合,避免 drain 时违反 minAvailable。

CodeRoadMap 建议

namespace: backend-prod
  LimitRange: 默认 request/limit
  ResourceQuota: 总 CPU/内存上限
  Deployment backend: requests=limits(Guaranteed 或对齐 JVM)
  PDB: minAvailable 2
  HPA: 基于 CPU + 自定义指标(见 prom 自定义指标)

练习

  • 给一个 Spring Boot 容器写 requests/limits,并说明与 -Xmx 关系
  • 解释为何 BestEffort Pod 在节点压力下最先被驱逐
  • 为 staging namespace 写 ResourceQuota 两行关键字段

小结

Request 管调度,Limit 管运行,QoS 管谁先被牺牲。 下一课把视角拉到集群级可观测性。

加载本节练习…
← 上一课CRD 与自定义控制器下一课 →集群可观测性