K8s调度器如何为Pod挑合适节点,K8s调度策略有哪些?

Kubernetes调度器为Pod挑选节点的过程,本质上是一个先排除“不能用的”,再从“能用的”里面挑“最合适的”的两阶段筛选机制。它通过过滤(Predicates)和打分(Priorities)两个步骤,结合资源请求、亲和性规则、数据卷位置等约束条件,最终为每个Pod锁定一个最优的宿主机节点。

调度器挑选节点的完整两阶段流程

调度器在实际工作时不跟Pod直接对话,而是通过API Server获取集群里所有Node的信息,它干活的顺序可以拆解为两个明确的阶段。

阿里技术大牛 30 分钟讲透 Kubernetes : 调度器的调度流程和算法介绍
加载中
阿里技术大牛 30 分钟讲透 Kubernetes : 调度器的调度流程和算法介绍

第一阶段:过滤(Predicates)淘汰不符合条件的节点

调度的第一步是“排雷”,调度器会把集群里所有Node扫一遍,把那些不满足Pod硬性要求的节点直接划掉,这些硬性条件包括几个常见维度:

  • 资源是否够用:Pod声明的CPU、内存请求值,加上该节点上已经分配出去的资源总和,不能超过节点的可分配容量。
  • 端口是否冲突:如果Pod指定了hostPort,而这个端口已经被同节点上其他Pod占用,那这个节点要被淘汰。
  • 磁盘和卷限制:Pod用到的持久化卷声明,必须能挂载到目标节点上,有些卷是区域性的,Node不在那个区域也直接被排除。
  • 节点状态:节点处于NotReady或者被标记为不可调度(Cordon状态),直接跳过。
  • 容忍度检查:如果Pod没有设置Tolerations,而节点上有Taints(污点),那这个节点不参与后续的打分阶段。

这个阶段没有任何人情味,只按Pod的规格要求硬性筛选,只有全部规则都满足的节点,才能进入下一轮。

第二阶段:打分(Priorities)给节点排名次

过滤完之后剩下来的节点,都是“能满足基本生存需求”的节点,可到底选哪个?这就需要给每个节点打分,得分最高的胜出,Kubernetes内置了多个评分策略,最终得分是各项策略按权重计算后的总和。

常用的打分策略有以下几种:

  • LeastRequestedPriority:计算节点的资源空闲率,空闲资源比例越大的节点得分越高,这能保证集群负载相对均衡,避免资源都堆在一台机器上。
  • BalancedResourceAllocation:查看CPU和内存的使用比例是否接近,如果一台机器CPU吃紧但内存空闲,得分会偏低。
  • NodeAffinity:根据Pod的affinity规则匹配程度来加分,越匹配分越高。
  • K8s调度器如何为Pod挑合适节点,K8s调度策略有哪些?

  • TaintToleration:能容忍更多污点的节点,分数会更高一些,这意味着即使Pod能通过阶段一的容忍检查,阶段二仍会把它推向更“宽松”的节点。
  • InterPodAffinity:如果两个Pod需要部署在一起,那目标节点上已经运行了符合条件的相邻Pod,该节点会得到额外加分。

打分结果出来后,调度器会选分数最高的节点,如果恰好有两个节点分数并列,调度器会按轮询规则随机选一个,这在一定程度上保证了均衡性。

如何让Pod更容易被调度到合适的节点?实操维度的优先级规则

上面是调度器自动完成的工作,但实际运维时,除了让调度器自动判断,我们经常需要主动干预,让它定向选择某个节点或某几个节点的组合,这是通过节点选择策略实现的。

常用节点选择策略之间的对比

不同类型的策略,使用特性和覆盖范围差别很大,用一个表格来比较最直观:

K8s调度器如何为Pod挑合适节点,K8s调度策略有哪些?

策略类型 匹配方式 是否强制 表达能力 推荐场景
nodeName 直接指定节点名称 强制 最弱 测试调试、临时固定节点
nodeSelector 匹配节点上的label键值对 强制 较弱 简单环境区分,比如按GPU型号分
nodeAffinity 基于label的表达式,支持In、NotIn、Exists等操作符 支持软性(preferred)和硬性(required) 强 复杂业务规则,如按可用区、按机型
Pod亲和性/反亲和性 以其他Pod的label为参照物 支持软硬 强 微服务就近部署,或高可用分散部署

nodeSelector 和 nodeAffinity 在百度搜索中的高频对比问题

在百度上经常有人搜索 k8s nodeSelector 与 nodeAffinity 区别,用户普遍不太能理解为什么有了nodeSelector,官方还要推出nodeAffinity,这个问题的核心答案在于:nodeSelector只能做“等于”匹配,而nodeAffinity支持复杂的表达式逻辑。

  • nodeSelector匹配的是“磁盘类型=SSD”这种键值对,如果集群需要表达“磁盘是SSD或者NVMe”这种逻辑,nodeSelector就无能为力了。
  • nodeAffinity则支持operator: In的写法,可以把两个取值放在一个集合里,同时还额外支持NotIn排除特定节点,以及preferredDuringSchedulingIgnoredDuringExecution软性调度即使不满足条件,调度器也不会报错,系统会退而求其次选一个其他节点。

给运维人员的实操建议:在临时验证或节点数量较少的小集群中,优先用nodeSelector,简单直观不易出错,在超过50个节点、存在多可用区或多实例类型的生产集群中,更推荐使用nodeAffinity,它的可维护性和扩展性都远好于前者。

自定义调度器与多调度器共存场景

Kubernetes允许集群中同时运行多个调度器,默认的kube-scheduler处理大多数普通工作负载没问题,但在某些场景下,性能不够或者规则不满足业务需求时,就需要换一个调度器上场。

何时需要换掉默认调度器

行业共识认为,默认调度器应对业务是够用的,多数情况下不需要额外更换,但下面几种场景值得考虑自定义实现:

  • 异构资源调度:默认调度器不认识GPU显存、FPGA等专用资源,需要扩展调度器才能感知并分配。
  • 复杂的多阶段约束:有些业务要求Pod必须分前后批次在不同时间调度到不同节点上,默认的“选择-绑定”一锤子买卖模式无法支持。
  • 数据本地性优先:希望调度器优先把计算Pod调度到存储节点上,以减少跨机网络数据读取延迟,默认调度器对存储位置的感知能力有限。

如何指定Pod使用哪个调度器?

实现起来不复杂,只需在Pod的YAML文件中声明schedulerName字段即可。

apiVersion: v1
kind: Pod
metadata:
  name: custom-scheduled-pod
spec:
  schedulerName: my-scheduler
  containers:
  - name: nginx
    image: nginx:1.25

K8s调度器如何为Pod挑合适节点,K8s调度策略有哪些?

这里对 Kubernetes调度器 设置优先级 也是类似逻辑,除了通过打分权重调整外,还可以通过配置多个调度器配合优先级类(PriorityClass)来实现队列内的分级调度,高优先级Pod在资源紧张时会优先被调度,甚至通过抢占机制驱逐低优先级Pod来腾出空间。

调度过程中需要避开的常见性能和反馈问题

调度器不是瞬间完成工作的,如果在生产环境发现Pod长时间停留在Pending状态,大部分原因都出在过滤阶段,我们需要按顺序检查:

  • 输入kubectl describe pod <pod-name>查看Events事件。
  • 查看输出中是否有 0/N nodes are available 字样,后面会列出失败的具体原因。
  • 根据原因逐个排查是资源不足、节点亲和性不满足、还是污点未容忍。
  • 如果事件里什么都没提示,检查是否有多个调度器竞争同一个Pod,查看API Server的审计日志能明确究竟是谁在处理绑定请求。

当集群规模扩大、节点数超过100个时,调度器的调度吞吐量会下降,虽然调度器内部有缓存机制,但如果每个节点心跳上报的延迟非常高,决策依据也会变得不精准,配套做法是给大规模集群单独设置更高的--kube-api-qps参数,或者将管控平面与业务负载隔离部署。

常见问题模块

Kubernetes调度器原理 中的过滤和打分顺序能颠倒吗?

不能颠倒,过滤阶段是为了保证Pod的基础运行条件,不满足条件的节点如果进入打分阶段,被选中后Pod根本无法运行,会导致调度失败反复重试,打分阶段只对通过过滤的节点生效,顺序颠倒会破坏调度的正确性。

如果所有节点都不满足过滤条件会发生什么?

Pod会一直停留在Pending状态,且调度器会持续重试,调度器内部有失败记录机制,但Pod不会进入Failed状态,也不会被自动删除,此时需要人工介入调整Pod规格或者增加集群节点资源,调度器会定期重新评估集群状态,一旦某个节点腾出资源或新节点加入,调度操作会立即恢复执行。

软性节点亲和性(preferred)在什么情况下会被忽略?

当所有候选节点都不满足软性节点亲和性规则时,调度器不会直接判定失败,它会将这些节点标记为低分参与打分流程,并在打分表末尾给这些节点补上一个适当的保底分,Pod依然可以调度到其中某个节点上,这个机制保证了业务可用性优先于规则的强制约束。

首发原创文章,作者:王坚‌,如若转载,请注明出处:https://idctop.com/article/640971.html

赞 (0)
为什么无状态应用适合容器集群,容器化部署有哪些优势?
上一篇 2026年9月11日 01:34
容器运行时是什么?它和镜像如何协作, 二者有何区别?
下一篇 2026年9月11日 01:35

相关推荐

  • 迅雷cdn节点百万个是啥意思,迅雷cdn节点

    截至2026年,迅雷CDN节点规模已突破百万级,通过“边缘计算+P2P混合加速”架构,实现全国99.9%区域毫秒级覆盖,显著降低带宽成本并提升大文件传输效率,迅雷CDN百万节点的技术底座与行业地位在2026年的数字基础设施版图中,CDN(内容分发网络)已不再仅仅是静态资源的缓存服务器,而是演变为具备智能调度能力……

    2026年5月27日
    5200
  • A记录CDN怎么配置,A记录CDN配置教程

    A记录CDN通过配置CNAME或修改DNS解析指向CDN节点,实现流量分发与加速,其核心优势在于降低源站负载、提升全球访问速度及增强安全性,是目前企业构建高性能Web架构的标准解决方案,A记录与CDN的技术协同机制在2026年的网络架构中,单纯依赖物理距离优化已无法满足毫秒级响应需求,A记录(Address R……

    2026年6月14日
    2200
  • cdn index文件找不到怎么办?CDN配置index文件

    CDN加速的核心价值在于通过边缘节点缓存静态资源,显著降低首屏加载时间并提升并发处理能力,其本质是解决网络延迟与带宽瓶颈的技术方案,在2026年的数字化生态中,内容分发网络(CDN)已不再是单纯的加速工具,而是构建高可用、低延迟数字体验的基础设施,随着AI生成内容(AIGC)爆发式增长及5G-A(5.5G)网络……

    2026年6月9日
    3800
  • 95峰值计费对流量平稳的业务更划算吗,如何计费

    95峰值计费对平时流量平稳的业务,多数情况下并不划算,甚至可能让你多花冤枉钱,这套计费规则是为“高峰明显、低谷拉胯”的突发型流量设计的,而流量平稳的业务恰好在规则里吃亏,下面把账算明白,95峰值计费到底是什么算的业内专家指出,95计费的本质是削峰填谷,它不看你的平均流量,只看你的“高水位”,国内云厂商和IDC机……

    2026年9月11日
    300
  • w2ui cdn是什么,w2ui cdn加载失败怎么办

    w2ui cdn加速能显著提升前端页面加载速度,但需结合CDN厂商的实际节点分布与缓存策略进行针对性配置,而非单纯依赖CDN服务本身,在Web前端开发的浩瀚生态中,w2ui作为一个轻量级且功能强大的jQuery UI组件库,常被用于构建复杂的企业管理后台和数据密集型应用,随着用户访问习惯向移动端和高速网络迁移……

    云计算 2026年5月25日
    3800
  • 博客打赏功能怎么用?博客打赏功能

    博客打赏功能并非简单的金钱交易,而是通过即时正向反馈机制,将读者的认可转化为创作者持续输出的核心动力,同时为独立开发者提供了一条绕过广告依赖的轻量级变现路径,创作日益内卷的当下,传统的流量变现模式正面临巨大挑战,广告不仅影响阅读体验,且收益波动极大,相比之下,打赏功能以其低门槛、高自由度的特点,成为许多优质博主……

    2026年7月3日
    21400
  • cdn取消备案怎么操作?cdn备案注销流程

    2026年CDN取消备案并非简单的“删除操作”,而是涉及域名解析回源、CDN节点解绑及ICP备案状态变更的系统性工程,需严格遵循工信部及云服务商规范,否则将导致业务中断或合规风险,随着云计算架构的演进,许多企业在业务调整、架构简化或迁移至边缘计算节点时,会面临取消CDN服务的需求,这一过程不仅仅是技术层面的解绑……

    2026年6月5日
    4200
  • 上海ai大模型费用到底怎么样?上海AI大模型收费标准是多少

    上海AI大模型的费用并非像外界传言那样高不可攀,实际上呈现出极其明显的“阶梯化”特征,企业完全可以根据自身需求在“公有云调用”与“私有化部署”之间找到性价比最优解,核心结论在于:对于绝大多数中小型企业及创业团队,直接调用API接口的综合成本极低,甚至低于传统的人力运营成本;而对于对数据安全有极高要求的大型企业……

    2026年3月22日
    13500
  • 4芯片cdn流量盒子是什么,cdn流量盒子原理

    2026年部署4芯片CDN流量盒子,是中小网站及边缘节点实现高并发低延迟、突破带宽瓶颈的最优解,其核心优势在于通过硬件级负载均衡与多链路聚合,将访问响应速度提升40%以上,且综合运维成本低于传统云CDN方案约30%,4芯片架构的技术底层逻辑与性能优势在2026年的网络基础设施环境中,单一芯片已难以应对复杂的边缘……

    2026年5月17日
    6600
  • 腾讯to b大模型深度测评,腾讯大模型怎么样

    经过连续数周的高强度实测与场景化验证,腾讯To B大模型展现出了极其鲜明的“实业派”特征:它并非单纯追求参数规模的军备竞赛,而是将核心竞争力锁定在“产业落地”与“安全可控”两大维度, 核心结论非常清晰:对于追求数据隐私安全、业务流程深度耦合的企业级用户而言,腾讯混元大模型及其配套的“大模型知识引擎”是目前市场上……

    2026年3月14日
    13100

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注