镜像文件系统:配置 Kubernetes 将容器存储在独立的文件系统上
参考:https://kubernetes.io/zh-cn/blog/2024/01/23/kubernetes-separate-image-filesystem/
在 Kubernetes 节点资源检测里,nodefs 并不是指传统意义上的根目录 / 文件系统,而是:
-
nodefs→ kubelet 运行时认为的 “节点文件系统”,通常指/var/lib/kubelet所在的分区/磁盘。-
kubelet 会把容器运行时(containerd/docker)、镜像、Pod 的卷挂载点等目录都放在
/var/lib/kubelet下。 -
所以当
nodefs.available < 10%时,表示这个磁盘分区(而不是/根分区)空间不足。
-
-
imagefs(如果和nodefs不同分区时才会单独存在) → 容器运行时镜像存储所在的分区,比如 containerd 的/var/lib/containerd或 docker 的/var/lib/docker。
Kubernetes 的 驱逐条件 (eviction thresholds) 默认就包含这类检测,比如:
--eviction-hard=nodefs.available<10%,nodefs.inodesFree<5%,imagefs.available<15%
意思是:
-
当
nodefs的可用空间低于 10% → 触发驱逐 -
当
nodefs可用 inode 少于 5% → 触发驱逐 -
当
imagefs的可用空间低于 15% → 触发驱逐
📌 和大多数 POSIX 系统的区别
-
POSIX/Linux 系统里,“根文件系统”通常指
/挂载点所在的分区。 -
但在 K8s 的 kubelet 语境下,“节点文件系统 (nodefs)” = kubelet 所依赖的存储路径,实际就是
/var/lib/kubelet所在分区。
浙公网安备 33010602011771号