Устранение ошибки Multi-Attach error for volume
Описание проблемы
При попытке использовать persistent volume
на нескольких подах одновременно возникют ошибки вида:
Multi-Attach error for volume "<volume-name>" Volume is already used by pod(s) <pod1>, <pod2>
;Multi-Attach error for volume "<volume-name>" Volume is already exclusively attached to one node and can't be attached to another
.
Решение
По умолчанию с кластером поставляются классы хранилищ, которые основаны на сетевых дисках, и они не поддерживают режим множественного доступа. Подробнее об этом пишем в документации Managed Service for Kubernetes. Это ограничения нашего драйвера
Также такие ошибки могут появляться, если поды, которые должны использовать volume
, находятся на разных узлах
При необходимости использовать ReadWriteMany
, рекомендуем воспользоваться CSI для нашего объектного хранилища, потому что тома на его основе поддерживают такой режим доступа. Автоматическая установка через маркетплейс или Helm-чарт описана здесь, а ручная интеграция — здесь.
Если проблема осталась
Если вышеописанные действия не помогли решить проблему, то можно организовать хранилище самостоятельно. Некоторые из возможных решений, например nfs или CEPH, поддерживают множественный доступ. Подробнее можно прочесть в официальной документации Kubernetes