如何排查Kubernetes容器ephemeral-storage的使用详情?
排查Kubernetes容器临时存储耗尽的方法
1. 先定位异常容器
用kubectl top查看Pod内各容器的临时存储使用量,快速定位哪个容器超标:
kubectl top pod <你的Pod名称> --containers
也可以通过kubectl describe查看Pod的存储状态细节,包括已使用量和事件中的告警:
kubectl describe pod <你的Pod名称>
在输出的Status -> Containers部分能找到对应容器的Used ephemeral storage数值,Events里可能会有存储资源不足的提示。
2. 进入容器内部排查具体文件
直接进入目标容器,用常规Linux命令分析存储占用:
# 进入指定容器,替换Pod名和容器名 kubectl exec -it <你的Pod名称> -c <容器名称> -- /bin/bash
进入后用以下命令排查:
- 查看容器内挂载的存储情况:
df -h(这里的结果是容器自身的存储视图,不是节点的) - 统计根目录下各文件夹大小:
du -sh /* - 深入排查大文件:
find / -type f -size +1G(查找大于1GB的文件)
3. 通过节点文件系统直接查看容器存储
如果容器无法进入(比如已挂掉),可以登录Pod所在节点进行排查:
- 先获取Pod所在节点:
kubectl describe pod <你的Pod名称> | grep -E 'Node:'
- SSH登录该节点,找到容器ID:
- 若用Docker runtime:
docker ps | grep <你的Pod名称> - 若用Containerd runtime:
crictl ps | grep <你的Pod名称>
- 若用Docker runtime:
- 定位容器的根文件系统路径:
- Docker:
/var/lib/docker/containers/<容器ID>/rootfs - Containerd:
/var/lib/containerd/io.containerd.runtime.v1.linux/k8s.io/<容器ID>/rootfs
- Docker:
- 统计该路径的存储占用或查看具体文件:
# 统计总大小 du -sh <容器根路径> # 查找大文件 find <容器根路径> -type f -size +1G
内容的提问来源于stack exchange,提问作者AXEL BORJA
相关产品推荐
相关产品推荐

