引言
在Kubernetes的日常操作中,我们可能会遇到各种各样的挑战和问题。最近,我遇到了一个特别棘手的问题:即使Pod 和Persistent Volume (PV) 已经被删除,它们之间的挂载关系仍然存在,导致整个集群的节点都无法使用 df -h 命令。本文将分享我是如何发现并解决这个问题的。
问题描述
在Kubernetes集群的日常维护中,我们发现所有节点都无法正常执行 df -h 命令。这个命令通常用来查看文件系统的磁盘空间使用情况,它的卡住不仅影响了监控和日志分析,还暴露了可能存在的更深层次问题。
排查过程
-
通过mount -l 查看是否有挂载了停用的nas,发现并没有
-
通过lsblk查看磁盘识别是否正常,发现是挺正常的
-
通过ls访问已挂载磁盘是否可以正常读取,发现也是正常的
-
通过使用 strace df -h 命令进行跟踪
-
因为kubectl的指令无法直接通过uid查找到pod,所以我们通过输出json结果,然后进行查找,发现并没有这个pod存在
kubectl get pods --all-namespaces -o json | jq --arg UID "025bbccb-93fe-447a-9270-6e2589d25a33" '.items[] | select