kubernetes源码解析——scheduler

scheduler 源码解析

上一篇文章主要介绍了kubernetes scheduler的原理kubernetes原理解读——scheduler
本文主要对kubernetes的scheduler模块的源码进行分析。

scheduler源码结构

kubernetes scheduler 模块在kubernetes源码目录的/kubernetes/plugin下,由于调度算法不同公司往往会依据自己的需求进行定制化,这里设计成plugin形式,方便定制化开发。下面是scheduler的目录结构,会详细介绍一下各个文件的功能:

.
├── BUILD
├── OWNERS
├── cmd  # scheduler模块的启动代码
│   └── kube-scheduler
│       ├── BUILD
│       ├── OWNERS
│       ├── app  # scheduler app server的启动逻辑
│       │   ├── BUILD
│       │   ├── configurator.go  # app启动run函数中子过程的实现
│       │   ├── configurator_test.go
│       │   ├── options  
│       │   │   ├── BUILD
│       │   │   └── options.go  #定义了SchedulerServer结构体
│       │   └── server.go  # SchedulerServer启动逻辑
│       └── scheduler.go  # scheduler模块的的入口函数
└── pkg
    └── scheduler
        ├── BUILD
        ├── OWNERS
        ├── algorithm  # 预选和优选方法详细实现
        │   ├── BUILD
        │   ├── doc.go
        │   ├── listers.go  # 定义各类Lister接口
        │   ├── predicates  # predicate policy的主要函数实现
        │   │   ├── BUILD
        │   │   ├── error.go
        │   │   ├── metadata.go
        │   │   ├── predicates.go  # 各个predicate policy函数实现
        │   │   ├── predicates_test.go
        │   │   ├── utils.go
        │   │   └── utils_test.go
        │   ├── priorities  # kube自带priority policy的主要实现
        │   │   ├── BUILD
        │   │   ├── balanced_resource_allocation.go #资源均衡节点优选
        │   │   ├── balanced_resource_allocation_test.go
        │   │   ├── image_locality.go  # 已获取镜像节点优先
        │   │   ├── image_locality_test.go
        │   │   ├── interpod_affinity.go  # InterPodAffinityPriority
        │   │   ├── interpod_affinity_test.go
        │   │   ├── least_requested.go  # Least Requested Priority
        │   │   ├── least_requested_test.go
        │   │   ├── metadata.go  
        │   │   ├── metadata_test.go
        │   │   ├── most_requested.go  # MostRequestedPriority
        │   │   ├── most_requested_test.go
        │   │   ├── node_affinity.go  # CalculateNodeAffinityPriority
        │   │   ├── node_affinity_test.go
        │   │   ├── node_label.go  # 机器上是否存在label
        │   │   ├── node_label_test.go
        │   │   ├── node_prefer_avoid_pods.go 
        │   │   ├── node_prefer_avoid_pods_test.go
        │   │   ├── selector_spreading.go  # SelectorSpreadPriority
        │   │   ├── selector_spreading_test.go
        │   │   ├── taint_toleration.go #TaintTolerationPriority
        │   │   ├── taint_toleration_test.go
        │   │   ├── test_util.go
        │   │   └── util
        │   │       ├── BUILD
        │   │       ├── non_zero.go
        │   │       ├── topologies.go
        │   │       └── util.go
        │   ├── scheduler_interface.go # 定义SchedulerExtender接口和ScheduleAlgorithm接口
        │   ├── scheduler_interface_test.go
        │   └── types.go
        ├── algorithmprovider  #一组predicates和priorities的组合
        │   ├── BUILD
        │   ├── defaults
        │   │   ├── BUILD
        │   │   ├── compatibility_test.go
        │   │   └── defaults.go #kubernetes默认的预选优选policies
        │   ├── plugins.go  
        │   └── plugins_test.go
        ├── api
        │   ├── BUILD
        │   ├── latest
        │   │   ├── BUILD
        │   │   └── latest.go  #定义api版本
        
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值