Платформа: OEL 7.7 + kube 1.15.5 + docker 19.03.1
Мы создаем хранилище объектов с кодированием стирания на k8s, используя подход контейнерного кублета. Нам нелегко придумать жизнеспособный подход к жизненному циклу диска. Как и сейчас, мы должны предоставить аргумент «extra_binds» для кублета, который указывает базовую точку монтирования, где монтируются наши блочные устройства. (80 твердотельных накопителей на узел, отформатированные как ext4)
Это все работает нормально. Создание PV и развертывание приложений работает нормально. Наша проблема возникает, когда PV C удаляется, и мы хотим очистить диски, которые были использованы, и снова сделать диски доступными.
Пока единственное, что работает, это оцепление этот узел, удалите лишние привязки из kubelet, сбросьте узел, перенастройте блочное устройство, заново добавьте привязки kubelet. Очевидно, это слишком неуклюже для производства. Для начала прыгающий кубелет не вариант.
Как только PV используется, что-то блокирует это блочное устройство, даже если проверка lsof на голой металлической системе показывает, что ручки не открыты. Я не могу размонтировать или создать новую файловую систему на устройстве. Просто подпрыгивающий kubelet не освобождает «замок».
Кто-нибудь, использующий плоскость управления kubernetes в контейнере, с приложением, использующим локальные диски подобным образом? Кто-нибудь нашел приемлемый способ обойти эту проблему?
Наш долгосрочный план - написать оператор, который управляет дисками, но даже с оператором я не понимаю, как это может решить эту проблему.
Спасибо за любую помощь,