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。 ...

2024-02-01 · xhy

[译] kubernetes:kube-scheduler 调度器代码结构概述

1本文翻译自 https://github.com/kubernetes/community/blob/master/contributors/devel/sig-scheduling/scheduling_code_hierarchy_overview.md 2译者:xhy 调度器代码层次结构概述 介绍 调度器监视新创建的还没有分配节点的 Pod。当发现这样的 Pod 后,调度器将 Pod 调度到最适合它的节点。一般来说,调度是计算机科学中一个相当广泛的领域,它考虑了各种各样的约束和限制。调度器的每个工作负载可能需要不同的方法来实现最佳调度结果。Kubernetes 项目提供的 kube-scheduler 调度器的目标是以简单为代价提供高吞吐量。为了帮助构建调度器(默认或者定制化)和共享调度逻辑,kube-scheduler 实现了 调度框架。该框架没有提供构建新调度器的所有部分。组装一个功能齐全的单元仍然需要队列、缓存、调度算法和其他构建元素。本文档旨在描述所有单独的部分是如何组合在一起,以及它们在整个体系结构中的作用,以便开发人员能够快速了解调度器代码。 ...

2024-01-20 · xhy