Kubernetes:kube-scheduler 源码分析
前言 [译] kubernetes:kube-scheduler 调度器代码结构概述 介绍了 kube-scheduler 的代码结构。本文围绕代码结构,从源码角度出发,分析 kube-scheduler 的调度逻辑。 启动 kube-scheduler kube-scheduler 使用 Cobra 框架初始化参数,配置和应用。 1// kubernetes/cmd/kube-scheduler/scheduler.go 2func main() { 3 // 启动 kube-scheduler 入口 4 command := app.NewSchedulerCommand() 5 ... 6} 7 8// kubernetes/cmd/kube-scheduler/app/server.go 9func NewSchedulerCommand(registryOptions ...Option) *cobra.Command { 10 // 创建 kube-scheduler 选项 11 opts := options.NewOptions() 12 13 cmd := &cobra.Command{ 14 Use: "kube-scheduler", 15 ... 16 RunE: func(cmd *cobra.Command, args []string) error { 17 return runCommand(cmd, opts, registryOptions...) 18 }, 19 ... 20 } 21 ... 22} 23 24// 运行 kube-scheduler 25func runCommand(cmd *cobra.Command, opts *options.Options, registryOptions ...Option) error { 26 ... 27 // 创建 kube-scheduler 配置 cc 28 // 创建 kube-scheduler 实例 sched 29 cc, sched, err := Setup(ctx, opts, registryOptions...) 30 if err != nil { 31 return err 32 } 33 ... 34 return Run(ctx, cc, sched) 35} 从启动命令来看,这里重点关注的是 Setup 函数。在该函数内,创建 kube-scheduler 配置 cc 和调度器实例 sched。 ...