Kubernetes 源码剖析与实战
孔令飞
前腾讯云专家工程师
1858 人已学习
新⼈⾸单¥68
登录后,你可以任选4讲全文学习
课程目录
已更新 53 讲/共 55 讲
Kubernetes 源码剖析与实战
15
15
1.0x
00:00/00:00
登录|注册

50|动手实现一个Kubernetes调度器插件

你好,我是孔令飞。
本专栏我们介绍了 Kubernetes 的 kube-scheduler 组件的源码。kube-scheduler 通过插件化的方式实现了众多的调度器插件。本节课就带你实现一个 Kubernetes 调度器插件。

scheduler-plugins 项目介绍

kube-scheduler 虽然提供了比较丰富的原生调度策略,例如:NodeSelector、NodeResourcesBalancedAllocation、NodeAffinity 等。但是在真实的企业 Kuberentes 环境中,这些调度器插件还不能满足企业内对 Pod 调度的诉求。例如,在企业中,经常需要根据内部的 Node 真实的负载情况来调度 Pod。此时,就需要开发自己的调度策略。
为了让开发者更快捷的开发调度策略,Kubernetes 提供了 scheduler framework 框架。scheduler framework 分别在调度器的调度循环和绑定循环中提供了多个扩展点,来供开发者实现自己的调度能力。例如:Score 阶段可以实现自定义的 Node 打分策略,Filter 可以过滤掉不符合要求的 Node 节点。
为了更好的帮助开发者使用 out-of-tree 插件,Kubernetes 社区创建了 scheduler-plugins 项目。该项目集成了众多的调度插件,并且支持很轻松的开发自定义调度器插件。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
  • 解释
  • 总结

1. Kubernetes 的 kube-scheduler 组件支持插件化的调度器插件,企业通常需要根据内部 Node 的负载情况来调度 Pod,因此需要开发自定义调度策略。 2. Kubernetes 提供了 scheduler framework 框架,包括 Score 阶段和 Filter 等扩展点,可供开发者实现自定义调度能力。 3. Kubernetes 社区创建了 scheduler-plugins 项目,集成了多个调度插件,并支持轻松开发自定义调度器插件,以帮助开发者使用 out-of-tree 插件。 4. 实现自定义调度插件的步骤包括编写插件的主逻辑、注册逻辑和配置文件。 5. 开发完调度插件后,需要将插件注册到调度器中,以便调度器初始化时能够加载自定义插件。 6. Kubernetes 为调度器提供了标准的配置方式,可以通过配置文件指定调度器名称、插件使用情况以及其他参数。 7. 本地启动 scheduler-plugins 项目后,可以通过提交具有特定 annotation 的 Pod 进行测试,观察调度效果。 8. Kubernetes 原生调度器提供的调度插件通常不能满足企业需求,因此需要自行开发调度器插件。 9. 基于 scheduler-plugins 项目实现企业自己的调度器插件是目前流行的方式,本文通过一个极简的例子介绍了如何开发一个调度器插件,并给出了测试结果。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《Kubernetes 源码剖析与实战》
新⼈⾸单¥68
立即购买
登录 后留言

精选留言

由作者筛选后的优质留言将会公开显示,欢迎踊跃留言。
收起评论
显示
设置
留言
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部
文章页面操作
MAC
windows
作用
esc
esc
退出沉浸式阅读
shift + f
f11
进入/退出沉浸式
command + ⬆️
home
滚动到页面顶部
command + ⬇️
end
滚动到页面底部
⬅️ (仅针对订阅)
⬅️ (仅针对订阅)
上一篇
➡️ (仅针对订阅)
➡️ (仅针对订阅)
下一篇
command + j
page up
向下滚动一屏
command + k
page down
向上滚动一屏
p
p
音频播放/暂停
j
j
向下滚动一点
k
k
向上滚动一点
空格
空格
向下滚动一屏
播放器操作
MAC
windows
作用
esc
esc
退出全屏
⬅️
⬅️
快退
➡️
➡️
快进
空格
空格
视频播放/暂停(视频全屏时生效)