Восстановление тома
Longhorn предоставляет два механизма для сохранения работоспособности томов в различных ситуациях.
1. Автоматическое удаление Pod’ов с нагрузкой
Этот механизм восстановления включается настройкой Автоматическое удаление Pod рабочих нагрузок.
Когда происходит одна из следующих ситуаций, Longhorn автоматически пытается удалить pod’ы с нагрузкой, которые управляются контроллером (например, Deployment, StatefulSet или DaemonSet). После удаления контроллер перезапускает pod, а Kubernetes выполняет повторное подключение и монтирование тома.
-
Том был неожиданно отсоединен из-за обновления Kubernetes, проблем с сетевой связностью или сбоя движка тома.
-
Том был автоматически восстановлен после того, как все реплики стали неисправными, например, из-за сетевой проблемы.Longhorn пытается определить исправные реплики и использовать их для тома.
-
Произошла ошибка в pod’е Share Manager, который использует том типа RWX.
Если вы хотите предотвратить автоматическое удаление pod’ов Longhorn’ом, отключите параметр Automatically Delete Workload Pod when The Volume Is Detached Unexpectedly в интерфейсе Longhorn.
Longhorn не удаляет pod’ы, не управляемые контроллером, поскольку такие pod’ы невозможно автоматически перезапустить после удаления. Чтобы восстановить тома, которые были неожиданно отсоединены, необходимо вручную удалить и перезапустить pod без контроллера.
2. Автоматическое повторное монтирование тома
Этот механизм восстановления не управляется отдельной настройкой.
Том может перейти в состояние только для чтения, если возникают ошибки вводавывода (IO errors). Причины ошибок IO могут быть разными, в том числе:
-
Потеря сетевого соединения: прервано соединение между движком (engine) и репликами.
-
Высокая задержка диска: значительная задержка передачи данных между репликой и ее диском.
Longhorn проверяет состояние глобальной точки монтирования тома каждые 10 секунд. Когда файловая система тома переходит в режим "только для чтения", Longhorn обновляет соответствующее состояние в движке данных тома. Затем Longhorn автоматически пытается перемонтировать глобальную точку монтирования на узле, чтобы вернуть режим "чтение-запись". Если перемонтирование проходит успешно, рабочие pod’ы продолжают функционировать без перебоев. Однако если точка монтирования становится защищенной от записи и Longhorn не удаётся ее перемонтировать, может потребоваться вручную пересоздать рабочую нагрузку (workload), чтобы инициировать повторное подключение и монтирование тома.
|
Этот механизм может не работать в некоторых ситуациях. Например, если происходит сбой движка данных тома, Longhorn автоматически отсоединяет и повторно подключает том. В этом случае файловая система переходит в режим "только для чтения". Longhorn определит этот режим и обновит состояние, но механизм автоматического перемонтирования не сможет вернуть режим "чтениезапись", поскольку устройство теперь защищено от записи. В такой ситуации можно полагаться только на механизм автоматического удаления pod’ов, поскольку пересоздание pod’а позволяет выполнить повторное монтирование тома. |
3. Результат
Автоматическое удаление Pod рабочих нагрузок срабатывает при возникновении неожиданных сбоев. Контроллер удаляет pod и затем перезапускает его, а Kubernetes выполняет повторное подключение и монтирование тома. Этот процесс может привести к кратковременным перебоям в работе приложения. Если вы хотите предотвратить автоматическое удаление pod’ов Longhorn’ом, отключите параметр Automatically Delete Workload Pod when The Volume Is Detached Unexpectedly в интерфейсе Longhorn.
Автоматическое повторное монтирование тома срабатывает, когда файловая система тома переходит в режим «только чтение». Longhorn перемонтирует глобальную точку монтирования на хосте, возвращая режим "чтение-запись".