K8s 调度器源码速读:Predicate、Priority 与自定义调度
前言
在 Kubernetes 集群中,kube-scheduler是控制平面的核心大脑,负责为每一个新创建的 Pod 分配合适的 Node 节点。绝大多数开发者仅停留在使用nodeSelector、affinity、tolerations等上层配置,却对其底层的调度逻辑知之甚少。
本文将避开基础概念讲解,直接深入kube-scheduler 核心源码,重点拆解Predicate(预选/过滤)与Priority(优选/打分)两大核心机制,并基于Scheduler Framework实战编写自定义调度插件,解决 GPU 调度、业务专属亲和性等复杂场景需求。全文源码导向、逻辑严谨、实战性强,适合希望深入底层、具备二次开发能力的云原生工程师。
一、调度器核心架构与源码入口
1.1 核心定位与工作流
kube-scheduler 的核心职责是:监听 Pending Pod → 过滤可用节点 → 节点打分排序 → 绑定最优节点。整个流程分为两大核心阶段:
- 预选阶段(Pr