Резервные копии Velero: восстановление Statefulset (например, couchbase) приводит к "ошибке множественного подключения для тома"
Я делаю резервную копию дивана на кубернетах с помощью велеро. Бэкапы работают нормально, даже хранилища пространств имен и PV,PVC. Тем не менее, узел (узлы) couchbase не может появиться после восстановления из-за того, что, по-видимому, является неким состоянием гонки, в результате которого создаются два PV и пытаются подключиться к модулю couchbase, причем один PV находится на неправильных кубернетах. узел.
Восстановление и восстановление приложений, не относящихся к Statefulset, проходит успешно, но с Statefulset успешно выполняется только резервное копирование, восстановление, но не восстановление, в соответствии с процедурой:
- Сделайте резервную копию пространства имен, содержащего один набор состояний (couchbase), на котором запущена только 1 реплика.
- Полностью удалите пространство имен.
- Восстановить из резервной копии пространства имен
Результат:
- Единственный модуль остается в ContainerCreating.
- Создаются два PV, связанных с модулем.
- В состоянии "Потеряно" создается отдельный PVC.
- В журнале событий отображается следующая ошибка:
23m Warning FailedAttachVolume pod/couchbase-0 Multi-Attach error for volume "pvc-1b9860c6-0208-11ea-b826-5a269cbf3473" Volume is already exclusively attached to one node and can't be attached to another
14m Warning FailedMount pod/couchbase-0 Unable to mount volumes for pod "couchbase-0_lolcorp-uat-az1-test-cbdeploy(f7092210-0231-11ea-b826-5a269cbf3473)": timeout expired waiting for volumes to attach or mount for pod "lolcorp-uat-az1-test-cbdeploy"/"couchbase-0". list of unmounted volumes=[datadir]. list of unattached volumes=[datadir default-token-xdl76]
У меня вопрос:
- Как правильно настроить восстановление statefulset (в частности, couchbase), чтобы избежать этой ситуации?
В идеале это должно произойти:
- PVC, PV и POD будут восстановлены вместе с пространством имен
- Один PV будет успешно смонтирован
- Только одна заявка будет связана с PV и пакетом
- Модуль statefuleset перейдет в состояние "Running"
Подробная информация о настройке:
- Версия Velero (используйте
velero version
):
0.1.1
- Функции Velero (используйте
velero client config get features
):
features: <NOT SET>
- Версия Kubernetes (используйте
kubectl version
):
Client Version: version.Info{Major:"1", Minor:"14", GitVersion:"v1.14.3", GitCommit:"5e53fd6bc17c0dec8434817e69b04a25d8ae0ff0", GitTreeState:"clean", BuildDate:"2019-06-06T01:44:30Z", GoVersion:"go1.12.5", Compiler:"gc", Platform:"linux/amd64"}
Server Version: version.Info{Major:"1", Minor:"14", GitVersion:"v1.14.8", GitCommit:"211047e9a1922595eaa3a1127ed365e9299a6c23", GitTreeState:"clean", BuildDate:"2019-10-15T12:02:12Z", GoVersion:"go1.12.10", Compiler:"gc", Platform:"linux/amd64"
- Установщик и версия Kubernetes:
Azure Kubernetes: AKS
- Облачный провайдер или конфигурация оборудования:
Лазурь
- ОС (например, из
/etc/os-release
):
Ubuntu 18.