当计算节点(安装kubelet的节点)资源不足时,会触发驱赶行为。
驱赶行为的触发条件主要包括
镜像文件系统主要保存镜像分层及运行时最上面的读写层。
kubelet可以针对这些指标设置软阈值和硬阈值。
所以,软阈值相对于硬阈值设置的数值要稍大,针对可用内存memory.available,通常软阈值为1.5Gi,而硬阈值为0.5Gi。 这种思想很常见,比如redis rdb持久化策略、redis主从同步缓冲区设置策略…
当某个资源出现不足后,节点将会发出驱赶策略,并标记节点状态为MemoryPressure内存压力或者DiskPressure磁盘压力。当回收部分资源后(删除无用的镜像、回收死亡的容器、删除低优先级的Pod),节点将重新标记为正常运行,并重新接收新Pod创建,那么也可能会出现资源不足的情况。
为了避免节点一直处于频繁切换“资源不足”和“资源充足”状态,kubelet通过两种机制保证,一是通过eviction-minimum-reclaim指定一次回收中至少回收的资源,另一个是通过eviction-pressure-transition-period设置延迟周期,需要计算节点保持“资源充足”的状态超过eviction-pressure-transition-period设定时间后,才可以将节点设置为“资源充足”状态。