nodefs:保存 kubelet 的卷和守护进程日志等。 imagefs:在容器运行时,用于保存镜像以及可写入层。
有 Imagefs 如果 nodefs 触发了驱逐,Kubelet 会用 nodefs 的使用对 Pod 进行排序 – Pod 中所有容器的本地卷和日志。
如果 imagefs 触发了驱逐,Kubelet 会根据 Pod 中所有容器的消耗的可写入层进行排序。
没有 Imagefs 如果 nodefs 触发了驱逐,Kubelet 会对各个 Pod 的所有容器的总体磁盘消耗进行排序 —— 本地卷 + 日志 + 写入层。
在某些场景下,驱逐 Pod 可能只回收了很少的资源。这就导致了 kubelet 反复触发驱逐阈值。另外回收资源例如磁盘资源,是需要消耗时间的。
要缓和这种状况,Kubelet 能够对每种资源定义 minimum-reclaim。kubelet 一旦发现了资源压力,就会试着回收至少 minimum-reclaim 的资源,使得资源消耗量回到期望范围。
例如下面的配置:
–eviction-hard=memory.available<500Mi,nodefs.available<1Gi,imagefs.available<100Gi –eviction-minimum-reclaim=“memory.available=0Mi,nodefs.available=500Mi,imagefs.available=2Gi”` 如果 memory.available 被触发,Kubelet 会启动回收,让 memory.available 至少有 500Mi。 如果是 nodefs.available,Kubelet 就要想法子让 nodefs.available 回到至少 1.5Gi。 而对于 imagefs.available, kubelet 就要回收到最少 102Gi。 缺省情况下,所有资源的 eviction-minimum-reclaim 为 0。