当前位置: 首页 > news >正文

面试总被追问k8s调度器工作原理, 收藏 == 学废

kube-scheduler负责将k8s pod调度到worker节点上。

当你部署pod时,在manifest文件pod规格上会指定cpu、memory、亲和性affinity、污点taints、优先级、持久盘等。

调度器的主要工作是识别create request然后选择满足要求的最佳节点。

image

分步解释:

  1. Pod Create Request: 外部系统(kubectl、cicd)发出了创建一个新pod的请求。

  2. kube-api server收到请求,然后将pod状态保存到etcd(集群的分布式kv存储)。

  3. api server给外部系统回发确认信息。

  4. kube scheduler持续监听unassignedods (使用watch机制),注意到新的pod。

4.1. scheduler会根据pod的规格(cpu、memory、亲和性)决定pod应在哪个节点上运行,并创建pod-node binding,它会将此绑定决定通知api server。

  1. scheduler更新etcd中pod的状态(通过api server): ① 标记pod为“scheduled”状态 ② 记录被分配的节点。

  2. 被选中节点上的kubelet, 也会持续监听新pod分配(使用watch机制),侦测到最新的已经分配的pod。

  3. kubeletapi server拉取pod manifest信息, 内容包含启动需要的镜像、volume、网关配置。

  4. kubelet指示容器运行时为pod启动容器。

  5. kubelet 通知apiserver: 现在 pod 已与节点绑定。

  6. api server更新etcd 中pod的最终状态,确保当前状态正确反映到集群数据库etcd。


4.1 kube-scheduler是如何选中节点?

在k8s集群,会存在不止一个节点,scheduler是如何从所有worker节点中选中节点。

scheduler一般包含两阶段:

  • 调度期
  • 绑定期

image

调度期

在这个时期,kueb-scheduler使用过滤打分策略选择最佳节点。

过滤Filtering :cheduler找到pod能被调度的最合适的节点。

从本质上讲,它会利用pod规格(cpu、memory、亲和性、污点、持久盘)过滤掉不适合运行特定pod的节点。

对于大集群, 过滤之后, 也不会对剩下的所有节点都做打分。
scheduler有一个配置参数percentageOfNodesToScore决定了参与打分的节点比例。 默认值取决与集群大小:小集群50%--->大集群5%

即使这个百分比被设置的很小,scheduler会持续搜索直到找到了𝗺𝗶𝗻𝗙𝗲𝗮𝘀𝗶𝗯𝗹𝗲𝗡𝗼𝗱𝗲𝘀𝗧𝗼𝗙𝗶𝗻𝗱数量。

Scoring: 给节点打分, scheduler给节点排名

k8s使用Priorities(Scorers)来给节点打分,打分机制通过各种scheduling 插件来实现。

  1. pod priority: 高优先级的pod通过影响打分过程影响节点选择(高优Pod会先于低优Pod被调度)。
  2. pod拓扑分布: 确保 pod 分布在不同的拓扑域(如区域或节点)中,避免在一个地方集中过多pod。

scheduler通过调用多个调度插件给节点打分, 每个插件都会根据特定标准对节点进行评估,并累计到最终得分。

最后,排名最高的worker节点会被选中调度pod。如果所有节点的排名相同,则会随机选择一个节点。

一旦节点被选中,调度器在api server创建了binding event(pod+node)。

绑定期

scheduler尝试将pod绑定到得分最高的节点,如果绑定失败,scheduler一般会选用次高得分的节点。


自定义Scheduler

开发者可以创建自定义scheduler,在集群内和原生调度器一起运行。

当部署pod时,可以在pod manifest文件指定自定义的Scheduler, 这样调度器的调度决定就会基于你自定义的调度逻辑。

Pluggable Scheduling Framework

调度器有一个可插拔的调度框架,这意味着开发者可以在调度工作流中添加自定义的插件。

http://www.rkmt.cn/news/30748.html

相关文章:

  • 题解:十二重计数法
  • 2025 年 10 月厨房排烟、厨房排烟罩、厨房排烟系统厂家最新推荐,资质、案例、售后三维测评与选购指南
  • # Ubuntu 根目录空间扩展操作手册(基于 RAID 关联磁盘 /dev/sdb2)
  • Perplexity Comet AI浏览器「等待网络链接」解决方案
  • 新地球
  • 实用指南:Android 常见界面布局详解
  • 2025 年 10 月食堂厨房设备厂家最新推荐,聚焦资质、案例、售后的食堂场景深度解读
  • 基于深度学习神经网络协同过滤模型(NCF)的视频推荐体系
  • 给安卓设置背景色的时候保持默认按钮样式(关于使用setBackgroundColor导致丢失默认按钮样式的问题)
  • 分片上传与断点续传实现详解
  • Kanass入门到实战(6) - 如何进行缺陷管理 - 指南
  • 数据处理方法汇总
  • 2025 年 10 月展示柜厂家最新推荐,技术实力与市场口碑深度解析!
  • 2025年10月益生菌品牌推荐榜:全维度对比与榜单解读
  • 2025年10月美容仪品牌推荐:无创无痛对比评测榜
  • 2025年10月中国遗产继承律师推荐榜:五强对比全解析
  • php特性
  • 2025年10月深圳近视手术医生推荐榜:五强对比与口碑评价
  • php_sha1函数特性
  • php非法参数
  • php原生类的使用
  • 2025 年 10 月仿石漆厂家最新推荐,精准检测与稳定性能深度解析
  • 下午选歌
  • 分治算法在查找第k小元素中的应用与分析
  • 2025年10月中国装饰公司对比榜:十家口碑与实力排行
  • 2025年10月电竞显示器品牌评价榜:五强对比与选购要点
  • 2025年10月食品展会推荐榜:NHNE领衔五大展会对比评测
  • 2025年10月连锁酒店排行榜推荐:丽柏丽怡领衔对比评测榜
  • 关于克服 libwebsockets 库编译时遇到的困难的实用的方法:
  • 2025年10月暖风机口碑榜:主流机型对比与选购避坑指南