Longhorn RWX PVC执行kubectl delete后长期卡在Terminating状态问题排查
可能的原因
Longhorn v1.2.2已知RWX卷删除缺陷
该版本存在RWX卷删除流程的bug:当卷存在多个挂载点但部分挂载清理未完成时,CSI Controller的ControllerUnpublishVolume请求会重复触发,但始终无法返回有效成功响应,导致后续DeleteVolume步骤完全被阻塞,最终finalizer无法自动移除。CSI组件与Longhorn Manager状态不同步
longhorn-csi-plugin与longhorn-manager之间的状态同步异常,比如Manager已完成卷的unpublish操作,但CSI插件未收到确认信号,反之亦然,导致插件持续重复发送ControllerUnpublishVolume请求,却无法推进到删除环节。RWX卷后端资源未回收
RWX卷依赖的NFS服务器Pod未正常终止,或者卷的底层replica仍处于活跃/挂载状态,导致ControllerUnpublishVolume操作无法完成,流程卡在unpublish阶段。
下一步排查步骤
检查目标PV/PVC的详细状态
执行命令查看PV的挂载、finalizer及关联状态:kubectl describe pv pvc-52d816a8-bbb2-4ac8-9e79-0b9950eafdc1 kubectl get pvc my-pvc -o jsonpath='{.metadata.finalizers}{"\n"}{.status}'重点确认PV的
Status是否为Released,以及是否存在残留的NodePublish记录或异常的finalizer。排查Longhorn组件日志
- 查看longhorn-manager的日志,搜索目标卷ID,定位
ControllerUnpublishVolume请求的处理细节:
检查是否存在卷清理失败、挂载点未找到等错误信息。kubectl logs -n longhorn-system -l app=longhorn-manager | grep pvc-52d816a8-bbb2-4ac8-9e79-0b9950eafdc1 - 查看longhorn-csi-controller的日志,确认CSI请求的处理流程是否异常:
kubectl logs -n longhorn-system -l app=longhorn-csi-controller -c csi-controller
- 查看longhorn-manager的日志,搜索目标卷ID,定位
检查Longhorn UI中的卷状态
登录Longhorn Dashboard,找到目标卷,查看卷的Attachment状态、NFS服务器运行状态、replica状态,确认是否有残留的挂载连接或未回收的资源。验证CSI Controller的运行状态
检查csi-controller Pod是否正常运行、有无重启记录:kubectl get pods -n longhorn-system -l app=longhorn-csi-controller若Pod存在重启,需排查重启原因(比如OOM、崩溃)。
查看集群事件
检索longhorn-system命名空间下的事件,寻找与目标卷相关的错误或警告:kubectl get events -n longhorn-system --field-selector involvedObject.name=pvc-52d816a8-bbb2-4ac8-9e79-0b9950eafdc1
长期解决方案建议
优先考虑升级Longhorn到v1.3.0及以上版本,官方在后续版本中修复了大量RWX卷删除流程的bug,包括finalizer残留的问题,从根源上避免此类问题重复发生。
内容的提问来源于stack exchange,提问作者Josh

