记录主机体验,分享建站经验RSS 订阅 ↗

云服务器资源调度算法:从 Linux EEVDF 到 Kubernetes Pod 放置

更新于 2026-10-23

“调度”至少包含三个不同层次:Linux 内核决定进程何时占用 CPU;Kubernetes 决定 Pod 去哪个节点;云平台决定如何提供容量与弹性扩缩容。混用这些概念,会造成调了应用副本数却没有解决 CPU 竞争的情况。

Linux:进程如何分享 CPU

Linux 官方文档描述了从 CFS 向 EEVDF 的演进。EEVDF 使用虚拟运行时间与虚拟截止时间选取可运行任务,有利于在公平性与响应性之间安排执行。实际表现还取决于内核版本、优先级、CPU 配额和任务行为;对延迟敏感服务,先检查是否被 cgroup 限额节流,而不是未经测量调整复杂内核参数。

Linux CPU、Pod 调度、节点扩容、用户延迟四个环节的云服务器资源调度判断示意图

Kubernetes:从可用节点到最合适节点

kube-scheduler 先筛选满足约束的节点,再给候选节点评分,最终绑定 Pod。CPU/内存 requests 参与调度,limits 影响运行时资源使用,两者作用不同。Pod 一直 Pending 时,应先查看事件和资源请求,检查污点/容忍、节点亲和、持久卷拓扑与扩容能力,而非直接增加 replicas。

横向扩容不会自动解决一切

HPA 可以按资源或自定义指标增加 Pod 数量,但如果数据库或共享存储才是瓶颈,复制应用层可能进一步放大压力。节点扩容也需要时间,冷启动、镜像拉取和就绪探针都会影响实际接单速度。对重要业务,要把伸缩触发阈值与队列积压、请求延迟和错误率一起观察。

一套可执行的排障思路

从用户体验指标入手,依次核对应用日志、Pod 状态、CPU throttling、节点负载和数据库延迟。每次只改变一个主要变量,并记录流量、资源请求、版本及回滚方法。不要把未经复现的“利用率提升 65%”当作调度算法固有效果。

上线前的核对清单

  • 区分内核、容器和云平台调度层次
  • 先检查 Pod Pending 事件和 requests
  • 对延迟尖峰同时检查 CPU 限额与后端依赖
  • 用相同负载记录前后结果和回滚点

如果还需要延伸排查,可参考站内的相关部署指南。

技术资料

关键概念以Linux EEVDF 的调度机制、Kubernetes 节点筛选与打分流程为依据;实际版本、价格与机房参数请另行核对。