在kubernetes里,pod的驱逐机制分为kubelet驱逐(被动驱逐)和主动驱逐两种。
kubelet驱逐
在node节点的资源紧缺的条件下,kubelet为了保证node节点的稳定性,回触发主动驱逐pod的机制,流程如下
注意:流程图根据个人理解所画,如有错误之处,烦请指出。
如果kubelet无法通过节点级别的资源回收获取足够的资源,就会开始驱逐用户的Pod,kubelet会按照下面的标准对Pod的驱逐行为进行判断
- Pod要求的服务质量(BestEffor,Bustable,Guaranteed)
- 根据Pod调度请求的被耗尽资源的消耗量
驱逐的逻辑如下:
BestEffort:对紧缺资源消耗最多的Pod最先被驱逐
Burstbale:根据相对请求(request)来判断,对紧缺资源消耗最多的Pod最先被驱逐,如果没有Pod超出它们的请求,则策略回瞄准紧缺资源消耗量最大的Pod
Guaranteed:根据相对请求(request)来判断,对紧缺资源消耗最多的Pod最先被驱逐,如果没有Pod超出它们的要求,策略回瞄准紧缺资源消耗量最大的Pod
所以
重要的Pod以及Daemonset尽量不要设置成BestEffort (