imagefs和rootfs 3

资源类型官方 metric官方触发条件官方含义官方文档kubelet检查路径源码位置
nodefs nodefs.available nodefs.available < evictionHard 节点磁盘(宿主机 filesystem) https://kubernetes.io/docs/concepts/scheduling-eviction/node-pressure-eviction/ //var/lib/kubelet、node filesystem stats kubelet/stats/factory.go
imagefs imagefs.available imagefs.available < evictionHard 镜像层占用磁盘 https://kubernetes.io/docs/concepts/containers/images/ /var/lib/docker 或 containerd snapshotter kubelet/stats/fs_resource_analyzer.go
containerfs containerfs.usage containerfs.usage > container limit 容器 writable layer https://kubernetes.io/docs/concepts/policy/limit-range/ overlay upperdir(容器可写层) kubelet/container/runtime_stats.go
ephemeral-storage 聚合 nodefs + containerfs request/limit 超限 Pod 临时存储 https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/#ephemeral-storage pod rootfs + writable layer kubelet/eviction/eviction_manager.go

 

 

 

类型官方语义kubelet实现来源真实计算方式作用范围包含内容怎么查看
nodefs Node main filesystem statfs("/") root filesystem device usage Node级 kubelet数据、logs、emptyDir、系统文件 1. df -h /2. kubectl describe node 查看 ephemeral-storage3. kubelet /stats/summary API
imagefs container runtime image storage filesystem statfs(runtimeRoot) runtime目录所在filesystem device Node级 images、read-only layers、snapshot 1. df -h /var/lib/containerd/var/lib/docker2. crictl imagefsinfo3. kubectl describe node
containerfs writable container filesystem usage cadvisor metrics per-container FS统计 Container级 writable layer、logs、container local storage 1. kubelet /metrics/cadvisor2. Prometheus指标:container_fs_usage_bytes3. kubectl top pod --containers(部分可见)
rootfs container writable layer(overlay upperdir) overlayfs + cadvisor container_fs_usage_bytes Container级 upperdir diff、写层 1. du -sh /var/lib/containerd/io.containerd.snapshotter.v1.overlayfs(或docker overlay2)2. cadvisor指标3. 进入Pod后 df -h

🔍 补充说明(关键区别)

1️⃣ nodefs vs imagefs

  • nodefs:整个节点根盘(最容易触发 DiskPressure

  • imagefs:专门给镜像用的盘(如果单独挂盘才会区分)

👉 如果没单独挂盘:

  • nodefs = imagefs(逻辑上分,但物理上同一个盘)


2️⃣ containerfs vs rootfs

这两个最容易混淆:

  • containerfs(广义)

    • kubelet/cadvisor统计的容器文件系统使用量

    • 包含:

      • rootfs(写层)

      • logs

      • volume中的本地存储(部分)

  • rootfs(狭义)

    • 只指:

      • overlay upperdir(容器写层)

👉 可以理解为:

containerfs = rootfs + logs + 其他本地写入

3️⃣ Kubernetes 资源对应关系

资源实际来源
ephemeral-storage nodefs + containerfs 汇总
eviction(驱逐) nodefs / imagefs
metrics-server 主要看 containerfs

🧪 常用排查组合(实战)

如果你在查磁盘问题,一般这么用:

📌 查节点是否爆盘

df -h
kubectl describe node

📌 查容器写爆

kubectl top pod --containers

📌 查具体哪个容器写层大

curl http://<node>:10250/metrics/cadvisor | grep container_fs_usage_bytes

📌 查 overlay 实际占用

du -sh /var/lib/containerd/*

如果你愿意,我可以帮你画一张 nodefs / imagefs / containerfs / rootfs 关系图(非常直观),或者结合你当前集群(containerd / docker)给你一套排查脚本。

posted on 2026-04-18 14:53  小镇-做题家  阅读(36)  评论(0)    收藏  举报

导航