本文转自本人空间:http://user.qzone.qq.com/29185807/blog/1459831332
源码为k8s v1.1.1稳定版本
一、主要流程
1、main入口
源码在k8s.io/kubernetes/plugin/cmd/kube-scheduler
这种封装是k8s里面一贯的封装风格,就不再多说了

源码在k8s.io/kubernetes/plugin/cmd/kube-scheduler/app
继续往下

真正的入口

下面有个ratelimiter

在factory.NewConfigFactory之后调用了func (s *SchedulerServer) createConfig

2、configFactory
源码k8s.io/kubernetes/plugin/pkg/scheduler/factory
先看下结构体

1、client 与apiserver的接口
2、podqueue,ScheduledPodLister,scheduledPodPopulator 这个是关键数据,稍后分析
3、PodLister ,NodeLister,ServiceLister,ControllerLister 调度的时候需要用到的数据
4、BindPodsRateLimiter,在入口初始化的ratelimiter
5、modeler,pod信息处理部分
我们继续
以下代码,做了简单的初始化。其中重要的初始化有modeler

本文详细分析了k8s的kube-scheduler源码,包括主要流程、modeler的三个关键队列(queuedPods、scheduledPods、assumedPods)的管理,以及genericScheduler的工作原理。调度算法在algorithmprovider中定义,整个调度系统分为模型管理、调度计算和调度组织三个部分,各自负责pod信息管理、计算host和协调调度。
最低0.47元/天 解锁文章
1203

被折叠的 条评论
为什么被折叠?



