Kubernetes Scheduler 源码全解析(附流程图)

最近的一个项目,需要对 kube-scheduler 进行改造,因此就系统性地阅读了下它的源码。几点阅读感受:

  1. Scheduler 的代码整体上代码可读性较好,不同的逻辑之间做了较好的解耦;
  2. 可能正是在设计之初,就想把调度模块做彻底解耦,因此该模块内外都存在一些问题:
    • 我阅读的 Kubernetes 版本(v1.6.6)里 Scheduler 模块位于 plugin 目录下,在最新的 Kubernetes 中,Scheduler 的主体已经被从 plugin 目录移出,和其他组件处于同一目录下;
    • Scheduler 模块代码中存在若干过度设计,当然这只是个人观点;
  3. GO 语言的设计增加了语言的灵活性,但一定程度上也降低了代码的可读性,最简单的例子就是接口;

Scheduler 是什么

Kubernetes 是 Google 团队发起并维护的基于 Docker 的开源容器集群管理系统,它不仅支持常见的云平台,而且支持内部数据中心。Scheduler(下称 kube-scheduler ) 在 Kubernetes 架构 中的位置如下图所示:

阅读更多

:D 一言句子获取中...