修改kubelet参数导致已驱逐的Pod被重新调度
问题现象
如果节点存在Memory/Disk/PID Pressure的情况,节点会被添加系统污点。此时修改节点池kubelet组件配置参数或者重启节点kubelet后,该污点会被临时删除,可能会导致由于节点资源压力而触发驱逐的节点重新加入调度器计算流程中,Pod重新调度到该节点上,如果节点资源压力未缓解,之后节点会再次进入驱逐流程。
问题根因
当前kubelet上报Memory/Disk/PID Pressure情况(心跳)都依赖于eviction manager的检测。心跳上报和eviction manager的检测分别由两个协程并发执行。正常情况下,如果先执行eviction manager的检测,再执行心跳上报,则kubelet可以上报正确的磁盘情况,并不会删除污点。异常情况下,如果先执行心跳上报,再执行eviction manager的检测,则kubelet将会删除上一次的污点。
解决方案
对于该问题您可以无需处理,节点在一段时间后会自动驱逐Pod。