专业的编程技术博客社区

网站首页 > 博客文章 正文

k8s调度原理(k8s调度机制)

baijin 2024-09-11 00:42:02 博客文章 6 ℃ 0 评论

原文:https://mp.weixin.qq.com/s/Xkvz7P6LgGROuJLHBI0yTw

Kubernetes default scheduler 的特点:

基于队列的调度器

一次只调度一个Pod

调度时刻全局最优

Kubernetes scheduler架构和调度流程

图中虚线部分为Kubernetes的主要组件 ,包含Informer、调度队列、调度器的cache以及调度主循环。

  • Informer通过 list/watch机制获取资源信息变化,更新queue和 cache;
  • NextPod() 从待调度队列获取队首的Pod;
  • 从cache中获取Node列表;
  • 针对Pod和NodeList执行Predicate算法,过滤掉不合适的节点;
  • 针对Pod和NodeList执行Priority算法,给节点打分;
  • 根据打分,计算出得分最高的节点;
  • 当高优先级的Pod没有找到合适的节点时,调度器尝试为其抢占优先级低的Pod;
  • 当调度器为Pod选择了一个合适的节点时,通过Bind将Pod和节点进行绑定;


Kubernetes的调度策略与算法

主要有两类算法:Predicate和Priority。Predicate是对于所有的node进行筛选,滤除不合格的节点,Priority是对于Predicate筛选过的node进行打分,挑选最优的节点。通过Predicate策略筛选符合条件的Node,主要是node上不同的pod会存在资源冲突,Predicate主要的目的是为了避免资源冲突、节点超载、端口的冲突等。


典型Predicate算法


典型Priority算法

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表