Skip to content
Latchkey

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.

kubectl describe pod
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 another

Common 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.

Terminal
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-attach

Avoid concurrent attach on rollout

  1. Use the Recreate strategy for stateful RWO workloads so the old pod releases the volume before the new one attaches.
  2. For a dead node, allow the detach grace period (or remediate the node) before expecting re-attach.
  3. If genuine shared access is needed, use a ReadWriteMany-capable backend instead of RWO.

How to prevent it

  • Use Recreate (not RollingUpdate) 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.

Frequently asked questions

What causes ""Multi-Attach error for 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.
How do I fix "Multi-Attach error for volume"?
See the VolumeAttachment and the old pod; the controller re-attaches once the old reference clears.
Can Latchkey fix this automatically?
Yes. Latchkey runs your GitHub Actions on managed runners that detect this failure, apply the fix, and retry the job automatically - self-healing is on by default.

Related guides

References

Latchkey auto-heals failures like this one - detected, fixed, and retried without you. Start free → 30-day trial · No credit card