Skip to content

八、调度 ​

调度决定了每个 Pod 的命运——跑在哪个节点、何时跑、能不能跑。理解调度不是会写 YAML 就够了,要能回答"为什么 Pod 卡在 Pending"和"怎么让它按计划分布"。

1、阅读地图 ​

专题图号核心问题
调度队列与框架K8-1、K8-2调度器的架构和扩展点在哪
过滤、评分与绑定K8-3、K8-4节点如何筛选和比较
资源请求、限制与节点容量K8-5四层预算如何影响调度和驱逐
亲和性、污点与拓扑K8-6精准控制 Pod 的分布规则
优先级与抢占K8-7高优先级 Pod 如何腾出空间
卷、设备与 RuntimeClassK8-8a卷拓扑和设备如何影响放置
扩展调度:Profile、插件与 GangK8-8b多 Profile 和 Gang 的版本边界

2、版本关键差异 ​

特性v1.36 (实验环境)v1.37 (正文基准)
GenericWorkload (Gang)Alpha 关闭Beta 关闭
DRADeviceTaintsBeta 开启GA 锁定开启
DRAExtendedResourceBeta 开启GA 锁定开启
InPlacePodVerticalScalingGAGA
PodLevelResourcesBeta 开启Beta 开启

3、调度路径总览 ​

从 Pod 创建到绑定完成,经历以下决策序列:

  1. 队列:Pod 进入 activeQ(或 Waiting 队列,如果有 PodGroup)
  2. Sort:按 PriorityClass 排序
  3. Filter:逐节点检查硬性约束(资源、节点选择器、污点容忍、卷拓扑)
  4. Score:对可行节点打分(资源均衡、亲和性偏好)
  5. Reserve:暂定资源
  6. Permit:最终确认(Gang 在此做整体决策)
  7. Bind:写入 nodeName

如果任何阶段失败,Pod 回到退避队列或不可调度集合,等待集群状态变化后重试。

4、实验约定 ​

调度实验不需要额外部署组件。本章全部命令在当前 kind 集群执行,除 Gang Scheduling 因特性门控不可用外,其余功能均可验证。

本章完成后,读者应能从 kubectl describe pod 的输出中快速定位调度失败的根因,并为不同场景选择合适的分布策略。

下一章为 kubelet 与容器运行时(后续建设)。

ICP 备案号待补充 · Gitee 主页