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

如果 Bind 失败 , 会把 Pod 重新丢回到 unschedulableQ 队列里面 。 在调度队列中 , 什么情况下 Pod 会到 backoffQ 中呢?这是一个很细节的点 。 如果在这么一个调度周期里面 , Cache 发生了变化 , 会把 Pod 放到 backoffQ 里面 。 在 backoffQ 里面等待的时间会比在 unschedulableQ 里面时间更短 , backoffQ 里有一个降级策略 , 是 2 的指数次幂降级 。 假设重试第一次为 1s , 那第二次就是 2s , 第三次就是 4s , 第四次就是 8s , 最大到 10s 。

调度算法实现

Predicates (过滤器)

Filter 根据功能用途可以把它们分为四类:

  • 存储匹配相关

  • Pode 和 Node 匹配相关

  • Pod 和 Pod 匹配相关

  • Pod 打散相关

存储相关

存储相关的几个过滤器的功能: