(1)整体流程
image.png
(2)调度过程
image.png
(3)抢占过程
image.png
抢占过程解析:
抢占过程主要弄清楚三个问题:
(1)该pod能不能进行抢占?
图中第一个是判断有没有开启抢占这个功能。
第二个判断是判断 该pod是否已经和某个node有关联了。不允许二次抢占
(2)如果从node上删选出要被抢占的pod?
这里k8s使用的规则是:
a. 尽量少抢占 有pdb(pod中断预算)的pod。
b. 尽量少抢占优先级高的pod
具体做法
a. 首先是将所有的比 p1(抢占者)低优先级的pod都找出来。
b. 然后判断该node能不能抢占,如果所有低优先级pod都删了还不能的话。这个node当前没办法运行p1。
c. 然后从这些pod中尽可能多的删除 pod, 即使得该node删除的pod更少。
d. 删除规则就是 先删含有pdb的pod(按优先级),然后再删普通的。
(3)如何从满足条件的nodes中选一个node 进行抢占
这里k8s使用的规则是:
a. 选node含有的pdb pod总数量最小的node
b. 如果上面的一样,选pod pod中最高优先级 较低的那个node
c. 如果上面的一样,选优先级总数最低的那个node
d. 如果上面的一样,选要被抢占的pod数量最小的那个node
e. 如果上面的一样,选第一个出现的node (不在往下判断了,到这里了,无论抢占哪个node,代价都差不多,直接选第一个)
网友评论