云其它

关注公众号 jb51net

关闭
首页 > 网站技巧 > 服务器 > 云和虚拟化 > 云其它 > k8s Pod默认调度策略

k8s Pod默认调度策略详解

作者:alden_ygq

Kubernetes的Pod默认调度由kube-scheduler负责,通过过滤和打分两个阶段,将Pod公平、高效地分配到集群节点上,默认调度策略包括资源检查、节点标签、污点容忍、亲和性等规则,默认调度器实现了负载均衡和高可用性,但在特定场景下可能需要自定义调度策略

在 Kubernetes 中,Pod 的默认调度由 kube-scheduler 负责,其核心目标是将 Pod 公平、高效地分配到集群节点上,同时满足 Pod 和节点的各种约束条件。

默认调度策略是一系列内置规则的组合,无需用户显式配置即可生效。

一、默认调度流程

kube-scheduler 的调度过程分为两个主要阶段:

二、核心默认策略详解

1. 过滤阶段(必须满足的条件)

过滤阶段会排除不满足 Pod 需求的节点,核心规则包括:

2. 打分阶段(优先选择的条件)

在过滤后的可行节点中,调度器会对节点打分(0-10 分),得分最高的节点被选中。

默认打分规则包括:

三、默认策略的特点

  1. 无感知调度:默认策略不依赖用户配置,完全基于集群资源和 Pod 基本需求调度。
  2. 负载均衡:通过 LeastRequestedPriority 和 BalancedResourceAllocation 平衡节点资源使用。
  3. 高可用倾向:通过 SelectorSpreadPriority 分散关联 Pod,降低单点风险。
  4. 可扩展性:默认策略可通过 调度配置文件(scheduler-config.yaml) 自定义(如调整权重、禁用某些规则)。

四、验证默认调度行为

可以通过 kubectl describe pod <pod-name> 查看 Pod 的调度决策细节:

kubectl describe pod my-pod | grep -A 10 "Events:"

输出中会显示调度器选择节点的原因,例如:

Events:
  Type    Reason     Age   From               Message
  ----    ------     ----  ----               -------
  Normal  Scheduled  5s    default-scheduler  Successfully assigned default/my-pod to node-1

若要查看更详细的打分过程,可开启 kube-scheduler 的调试日志(通过 --v=4 启动参数)。

总结

Kubernetes 的默认调度策略是一套兼顾资源效率、负载均衡和高可用性的规则集合,核心逻辑是:

  1. 先过滤:排除不满足 Pod 基本需求(资源、标签、污点等)的节点。
  2. 再打分:优先选择资源充足、负载均衡且符合偏好的节点。

如果默认策略无法满足需求(如特定业务需要调度到 GPU 节点),可通过 亲和性规则调度器扩展 或 自定义调度器 调整。

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

您可能感兴趣的文章:
阅读全文