Kubernetes "FailedAttachVolume: Multi-Attach error" - Fix RWO Volume Stuck in CI
A ReadWriteOnce volume can be attached to only one node at a time. When a pod reschedules to a new node before the volume detaches from the old one, the new attach is refused with a Multi-Attach error until the old attachment releases.
What this error means
A rescheduled pod is stuck in ContainerCreating with Warning FailedAttachVolume ... Multi-Attach error for volume "pvc-..." Volume is already exclusively attached to one node and can't be attached to another. It commonly clears once the old node detaches the volume.
Warning FailedAttachVolume attachdetach-controller Multi-Attach error for
volume "pvc-9f2c..." Volume is already exclusively attached to one node and can't
be attached to anotherCommon causes
Old pod/node has not released the RWO volume
The previous pod is still terminating (or its node is unreachable), so the attach/detach controller has not detached the ReadWriteOnce volume. The new node cannot attach it concurrently.
Node went unreachable without clean detach
If the old node crashed or lost network, the volume stays "attached" to it from the control plane’s view until the node is confirmed gone, blocking re-attach for up to the detach grace period.
How to fix it
Check where the volume is still attached, then let it detach
See the VolumeAttachment and the old pod; the controller re-attaches once the old reference clears.
kubectl get volumeattachment | grep <pv-name>
kubectl get pods -A -o wide | grep <pvc-or-app>
kubectl describe pod <new-pod> | grep -A2 -i multi-attachAvoid concurrent attach on rollout
- Use the
Recreatestrategy for stateful RWO workloads so the old pod releases the volume before the new one attaches. - For a dead node, allow the detach grace period (or remediate the node) before expecting re-attach.
- If genuine shared access is needed, use a ReadWriteMany-capable backend instead of RWO.
How to prevent it
- Use
Recreate(notRollingUpdate) for single-RWO-volume stateful pods. - Run one replica per RWO volume; never expect two pods to share it.
- Keep node health monitored so unreachable nodes are detected and volumes detach promptly.