概述
kube-controller-manager驱逐主要依靠NodeLifecycleController
以及其中的TaintManager
;
kube-controller-manager驱逐分类
(1)开启了污点驱逐:node上有NoExecute
污点后,立马驱逐不能容忍污点的pod,对于能容忍该污点的pod,则等待pod上配置的污点容忍时间里的最小值后,pod会被驱逐;
(2)未开启污点驱逐:当node的ready Condition
值为false或unknown且已经持续了一段时间(通过kcm启动参数--pod-eviction-timeout
配置,默认5分钟)时,对该node上的pod做驱逐操作;
NodeLifecycleController
NodeLifecycleController
主要负责以下工作:
(1)定期检查node的心跳上报,某个node间隔一定时间都没有心跳上报时,更新node的ready condition
值为false或unknown,开启了污点驱逐的情况下,给该node添加NoExecute
的污点;
(2)未开启污点驱逐时的pod驱逐工作;
(3)根据kcm启动参数配置,决