
在Kubernetes的日常操作中,我们可能会遇到各种各样的挑战和问题。最近,我遇到了一个特别棘手的问题:即使Pod 和Persistent Volume (PV) 已经被删除,它们之间的挂载关系仍然存在,导致整个集群的节点都无法使用 df -h 命令。本文将分享我是如何发现并解决这个问题的。
问题描述
在Kubernetes集群的日常维护中,我们发现所有节点都无法正常执行 df -h 命令。这个命令通常用来查看文件系统的磁盘空间使用情况,它的卡住不仅影响了监控和日志分析,还暴露了可能存在的更深层次问题。
排查过程

kubectl get pods --all-namespaces -o json | jq --arg UID "025bbccb-93fe-447a-9270-6e2589d25a33" '.items[] | select(.metadata.uid == $UID)'
kubectl get pv --all-namespaces |grep pvc-c60a0c76-462c-4371-a2e5-6c92e8524598

解决过程
好了,在查清楚来龙去脉之后,解决这个问题也就分分钟的事了,我们可以通过umount -l <挂载的目录>进行卸载,也就是所谓的“懒卸载”(lazy unmount),好的,在执行后我们的df -h可以正常执行了。

总结
Kubernetes是一个强大但复杂的系统,正如我们所见,它有时也会出现一些不易察觉的问题。通过分享这次经历希望可以帮助到大家,当然也在提醒我们监控和日常巡检的重要性。
- END -