Резервное копирование Velero: восстановление Statefulset (например, couchbase) приводит к «ошибке Multi-Attach для тома» - PullRequest
0 голосов
/ 10 ноября 2019

Я создаю резервную копию на базе Kubernetes, используя Velero. Резервные копии работают хорошо, даже хранилища пространства имен и PV, PVC. Тем не менее, узел (-ы) Couchbase не могут появиться после восстановления из-за того, что, по-видимому, существует какое-то состояние гонки, в результате которого создаются два PV и пытаются подключиться к модулю couchbase, причем один PV находится на неправильном куберне. узел.

Восстановление и восстановление приложений без Statefulset выполнено успешно, но с Statefulset успешно выполняется только резервное копирование, восстановление и не восстановление, что соответствует процедуре:

  1. Резервное копирование пространства имен, содержащегоодин набор состояний (couchbase) работает только с 1 репликой.
  2. Полное удаление пространства имен.
  3. Восстановление из резервной копии пространства имен

Результат:

  • Одиночный модуль остается в ContainerCreating
  • Создаются два PV, связанные с модулем
  • Один объект PVC создается в состоянии «Lost»
  • Следующая ошибкавидно в журнале событий:
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

  • Облачный провайдер или аппаратная конфигурация:

Azure

  • ОС (например, с /etc/os-release):

Ubuntu 18.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...