type
status
date
slug
summary
category
tags
create_time
Aug 13, 2025 08:46 PM
icon
password
my_create_time
📝 前言
在 Kubernetes 中,Pod 是工作负载的最小调度单元,但 Pod 并不会自己选择在哪个节点(Node)上运行。
这个关键决策过程由
kube-scheduler
完成,它是 Kubernetes 控制平面中负责资源调度的重要组件。本文是《云原生之旅》系列第三部分的第四篇,深入解析
kube-scheduler
的核心原理与调优策略,帮助提升集群资源利用率与稳定性。🧭 背景介绍
曾经在一个项目中,我们通过 Jenkins On Kubernetes 实现了应用的 CI/CD 自动化构建,但发现每次构建任务都会被分配到同一个节点运行,而集群中的其他节点几乎处于空闲状态。
这种情况导致该节点的 CPU 和内存利用率居高不下,构建速度也逐渐下降,而其他节点的资源却被浪费。
经过分析,发现是调度策略没有生效,Pod 默认落在某个节点上。
我们调整了
kube-scheduler
的配置,启用了更合理的 资源分配策略(如最少资源使用优先 + 拓扑分布约束),才让构建任务能够分散到多个节点运行,实现了资源的充分利用与构建速度的显著提升。🧠 本章知识卡片

🚀 本章小节
1️⃣ 什么是 kube-scheduler ?
kube-scheduler
是控制平面的核心组件,负责监视新创建的、未指定运行节点(node)的 Pods,并选择节点来让 Pod 在上面运行。调度决策考虑的因素包括单个 Pod 及 Pods 集合的资源需求、软硬件及策略约束、亲和性及反亲和性规范、数据位置、工作负载间的干扰及最后时限。
2️⃣ kube-scheduler 工作原理
kube-scheduler 的调度逻辑主要分为两个阶段:
- 过滤(Filtering)
- 排除不满足条件的节点,例如资源不足、标签不匹配、污点不可容忍等。
2. 打分(Scoring)
- 对剩余节点进行打分,常见策略包括最少资源使用、平衡资源分配、节点亲和性等。
- 最终选择得分最高的节点,将 Pod 与之绑定。
此外,它还支持:
- 抢占机制(Preemption):高优先级 Pod 无法调度时,可驱逐低优先级 Pod。
- 扩展机制(Scheduling Framework):允许通过插件扩展调度逻辑,支持多调度器共存。
大致工作流程图如下所示:

3️⃣ kube-scheduler 在 Kubernetes 中的作用
kube-scheduler 在 Kubernetes 中扮演着“资源调度大脑”的角色,主要作用包括:
- 节点选择:根据 Pod 请求的 CPU、内存、GPU 等资源,分配最合适的节点。
- 约束管理:支持节点亲和性/反亲和性、污点与容忍、拓扑分布策略。
- 负载均衡:避免节点过载,提升整体资源利用率。
- 扩展性支持:支持多调度器、插件机制(Scheduling Framework),便于开发自定义调度逻辑。
4️⃣ 常见启动参数
kube-scheduler 的配置文件通常是在:
/etc/kubernetes/manifests/kube-scheduler.yaml
其中常见的启动参数包括如下:
参数 | 说明 | 常用取值/示例 |
--leader-elect | 是否启用领导者选举,防止多实例冲突 | true (生产环境建议开启) |
--bind-address | 调度器监听的地址 | 0.0.0.0 (监听所有地址) |
--secure-port | HTTPS 安全端口 | 10259 (默认) |
--config | 指定调度器配置文件(KubeSchedulerConfiguration),支持更复杂的策略与插件配置 | /etc/kubernetes/kube-scheduler-config.yaml |
--v | 日志详细等级 | 2 (调试时可调大,如 4 或 6 ) |
--authentication-kubeconfig | 认证 kubeconfig 文件路径 | /etc/kubernetes/scheduler.conf |
--authorization-kubeconfig | 授权 kubeconfig 文件路径 | /etc/kubernetes/scheduler.conf |
--feature-gates | 控制调度器的实验性或可选功能开关 | PodAffinityNamespaceSelector=true,PodTopologySpread=true |
5️⃣ 生产环境优化
在大规模集群或高负载环境中,调度器的性能和稳定性至关重要,可考虑以下优化措施:
- 并行度调优:通过配置调度器并行调度的数量,提高调度效率。
- 缓存优化:利用调度缓存(Scheduler Cache)减少频繁的 API 请求。
- 插件管理:按需启用/禁用插件,例如
ImageLocality
插件在大规模集群中可能带来额外开销。
- 多 Profile 支持:通过
profiles
配置,为不同类型的 Pod 使用不同的调度策略。
- 高可用部署:开启
-leader-elect
并运行多个调度器实例,提高容错能力。
✅ 总结
kube-scheduler 是 Kubernetes 的核心控制平面组件之一,承担着 Pod 到 Node 的自动调度任务。
它通过过滤和打分机制综合评估集群资源,并支持亲和性、污点、拓扑等复杂约束。
在生产环境中,合理的配置与优化能显著提升调度效率和集群稳定性。
换句话说,kube-scheduler 是 Kubernetes 集群能否“聪明地”运转的关键所在。
有关文章的任何疑问,欢迎您在底部评论区留言,一起交流~
若文章对您有帮助,欢迎 请我喝杯咖啡~
- 作者:青萍叙事
- 链接:https://blog.lusyoe.com/article/kubernetes-kube-scheduler-intro
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。