调度算法

Kubernetes调度算法介绍

别等时光非礼了梦想. 提交于 2020-03-02 03:49:33
调度流程 调度器就是一个独立的进程,负责不断从apiserver拉取还没有被调度的pod,以及可调度的node列表,通过一些列算法筛选,选出一个node并与该pod绑定,将绑定的结果写回apiserver 调度算法 下面讲解基于k8s v1.6.6的源码 算法需要经过两个阶段,分别是过滤和打分,首先过滤掉一部分,保证剩余的节点都是可调度的,接着在打分阶段选出最高分节点,该节点就是scheduler的输出节点。 算法流程: 过滤 过滤环节就是一条过滤器链,包含多个过滤器,每个相当于一个函数,接收node和待调度的pod作为参数,返回bool来确定是否可调度。通过组合多个函数可以完成一条可扩展的过滤器链。目前k8s中已注册的过滤器函数如下: 算法名称 是否默认 详细说明 NoVolumeZoneConflict 是 当主机上zone-label(地区)包含pod中PersistentVolume卷下的zone label时,可以调度。当主机没有zone-label,表示没有没有zone限制,也可调度 MaxEBSVolumeCount 是 当主机上被挂载的AWS EBS Volume超过了默认限制39,就不调度到该主机 MaxGCEPDVolumeCount 是 当主机上被挂载的GCD Persistent Disk超过了默认限制16,就不调度到该机器