k8s 中调度优先级问题

站在设计的角度上去考虑,任何一个系统都会有优先级的问题。最典型的栗子就是 操作系统的调度问题。

如果学过操作系统,知道内核的调度流程,理解k8s的调度不会吃力。这其实就是学习的殊途同归的地方,也是读内核源码最大的魅力。

对于k8s也同样是。不过k8s的调度问题没有操作系统调度那么复杂。简单的来学习一下吧!

 

问题提炼

分配之前的阶段- 如何排Pod的优先级?

分配之后的阶段-当资源不足时,如何抢占资源?

抢占策略是什么?

 

调度优先级问题

  对于提交的Pod的申请,一定会有轻重缓急。比如,机器资源 90G内存。四个Pod,一个20G,那么最后一个Pod肯定得不到分配。假如前边的Pod不是那么重要,或者说优先级没有那么高,则可以先把前边的关了,先把后边的Pod起来。

 

优先级策略-两种

  • 先到先得策略 (FIFO) -简单、相对公平,上手快
  • 优先级策略 (Priority) - 符合日常公司业务特点

在实际生产中,如果使用先到先得策略,是一种不公平的策略,因为公司业务里面肯定是有高优先级的业务和低优先级的业务,所以优先级策略会比先到先得策略更能够符合日常公司业务特点。

接着介绍一下优先级策略下的优先级调度是什么样的一个概念。比如说有一个 Node 已经被一个 Pod 占用了,这个 Node 只有 2 个 CPU。另一个高优先级 Pod 来的时候,低优先级的 Pod 应该把这两个 CPU 让给高优先级的 Pod 去使用。低优先级的 Pod 需要回到等待队列,或者是业务重新提交。这样的流程就是优先级抢占调度的一个流程。

在 Kubernetes 里,PodPriority 和 Preemption,就是优先级和抢占的特点,在 v1.14 版本中变成了 stable。并且 PodPriority 和 Preemption 默认都是开启的。

 

如何配置优先级

如何使用优先级调度呢?需要创建一个 priorityClass,然后再为每个 Pod 配置上不同的 priorityClassName,这样就完成了优先级以及优先级调度的配置。

 

调度过程

对于都未分配资源的Pod,进入调度队列以后,则根据优先级来优先的分配资源。比方Pod1和Pod2,pod2的优先级比较高,它们都在任务队列,则下次资源分配一定是先分配Pod2。

 

资源抢占过程

  其实资源抢占,也是资源合理利用的一种手段。因为策略是由人定的,人可以根据任务的优先级,来分配调度的优先级。当资源不足时,具有优先级的理应优先使用资源,可以把抢占优先级低的Pod的资源,从而做到资源最合理的利用。

 

优先级抢占策略

上图右侧是整个优先级抢占的调度流程,也就是 kube-scheduler 的工作流程。首先一个 Pod 进入抢占的时候,会判断 Pod 是否拥有抢占的资格,有可能上次已经抢占过一次。如果符合抢占资格,它会先对所有的节点进行一次过滤,过滤出符合这次抢占要求的节点,如果不符合就过滤掉这批节点。

接着从过滤剩下的节点中,挑选出合适的节点进行抢占。这次抢占的过程会模拟一次调度,也就是把上面优先级低的 Pod 先移除出去,再把待抢占的 Pod 尝试能否放置到此节点上。然后通过这个过程选出一批节点,进入下一个过程叫 ProcessPreemptionWithExtenders。这是一个扩展的钩子,用户可以在这里加一些自己抢占节点的策略,如果没有扩展的钩子,这里面是不做任何动作的。

接下来的流程叫做 PickOneNodeForPreemption,就是从上面 selectNodeForPreemption list 里面挑选出最合适的一个节点,这是有一定的策略的。上图左侧简单介绍了一下策略:

  • 优先选择打破 PDB 最少的节点;
  • 其次选择待抢占 Pods 中最大优先级最小的节点;
  • 再次选择待抢占 Pods 优先级加和最小的节点;
  • 接下来选择待抢占 Pods 数目最小的节点;
  • 最后选择拥有最晚启动 Pod 的节点;

通过这五步串行策略过滤之后,会选出一个最合适的节点。然后对这个节点上待抢占的 Pod 进行 delete,这样就完成了一次待抢占的过程。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值