从零开始入门 K8s | 调度器的调度流程和算法介绍( 四 )

作者 | 汪萌海(木苏)  阿里巴巴技术专家

调度流程

调度流程概览

Kubernetes 作为当下最主流的容器自动化运维平台 , 作为 K8s 的容器编排的核心组件 kube-scheduler 将是我今天介绍的主角 , 如下介绍的版本都是以 release-1.16 为基础 , 下图是 kube-scheduler 的主要几大组件:

Policy

Scheduler 的调度策略启动配置目前支持三种方式 , 配置文件 / 命令行参数 / ConfigMap 。 调度策略可以配置指定调度主流程中要用哪些过滤器 (Predicates)、打分器 (Priorities) 、外部扩展的调度器 (Extenders) , 以及最新支持的 SchedulerFramwork 的自定义扩展点 (Plugins) 。

Informer

Scheduler 在启动的时候通过 K8s 的 informer 机制以 List+Watch 从 kube-apiserver 获取调度需要的数据例如:Pods、Nodes、Persistant Volume(PV) Persistant Volume Claim(PVC) 等等 , 并将这些数据做一定的预处理作为调度器的的 Cache 。

调度流水线

通过 Informer 将需要调度的 Pod 插入 Queue 中 , Pipeline 会循环从 Queue Pop 等待调度的 Pod 放入 Pipeline 执行 。

推荐阅读