镜像文件系统:配置 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 所在分区。


 

posted on 2025-08-22 17:29  吃草的青蛙  阅读(15)  评论(0)    收藏  举报

导航