Стадия жизненного цикла модуля: Общедоступная версия
У модуля есть требования для установки
v0.8.1
Дата релиза: 2026-10-01
Агент удаляет ресурсы BlockDevice, остающиеся в состоянии Missing дольше настраиваемого срока, расширение планировщика в режиме HA больше не обещает одно и то же свободное место дважды, а неактивные тонкие тома снова активируются.
Ключевые изменения
Изменения в этом релизе:
- Новая настройка модуля
missingBlockDeviceRetentionHours(по умолчанию 24):BlockDevice, устройство которого отсутствует так долго и который не использует ни одинLVMVolumeGroup, удаляется, и на узлах с динамически подключаемыми LUN ресурсыMissingбольше не копятся бесконечно. - При двух репликах
sds-common-scheduler-extender(режим HA (high availability, высокая доступность)) резервирования места обслуживает одна выбранная реплика, поэтому двум подам больше не может быть обещано одно и то же свободное место тонкого пула. - Тонкий
LVMLogicalVolume, деактивированный при активном тонком пуле, агент снова активирует.
Новый функционал
В этом релизе добавлено:
- Настройка модуля
missingBlockDeviceRetentionHours(в часах, от 0 до 8760, по умолчанию 24).BlockDevice, который нельзя использовать, при пропаже устройства не удаляется: ему выставляется condition (условие)Missing, переходящий вTrueпосле 10 минут отсутствия устройства. Теперь агент удаляет такой ресурс своего узла, когдаMissingостаётсяTrueдольше этого срока, если ни одинLVMVolumeGroupне перечисляет его вstatus.nodesи егоstatus.lvmVolumeGroupNameне указывает на существующийLVMVolumeGroup: физический том, пропавший из-под работающей группы томов, остаётся на виду. Если устройство вернётся, ресурс создаётся заново.0отключает удаление. Новая метрикаsds_node_configurator_block_devices_missing{node,reason}считает оставшиеся ресурсы сMissing=True; каждое удаление агент пишет в лог. - В DKP 1.78 и новее роли доступа модуля следуют схеме RBAC capability/scope (возможность/область действия): ClusterRole
d8:system-capability:sds-node-configurator:viewиd8:system-capability:sds-node-configurator:editдают доступ только на чтение и полный доступ кBlockDevice,LVMVolumeGroup,LVMVolumeGroupSet,LVMLogicalVolumeиLVMLogicalVolumeSnapshot. В версиях ниже 1.78 модуль сохраняет ролиd8:manage:permission:module:sds-node-configurator:viewи:edit.
Исправления
В этом релизе исправлено:
- В режиме HA каждая из двух реплик
sds-common-scheduler-extenderхранила свои резервирования места в памяти, поэтому запросам планирования, на которые отвечали разные реплики, могло быть обещано одно и то же свободное место с переподпиской тонкого пула. Теперь реплики выбирают лидера через Lease (аренду)d8-sds-node-configurator/sds-common-scheduler-extender; запросы фильтрации, оценки и резервирования обслуживает только лидер, вторая реплика пересылает их ему и отвечает503, пока лидер недоступен. - Тонкий
LVMLogicalVolume, деактивированный сам по себе (например, командойlvchange -an) при активном тонком пуле, больше никогда не активировался, и том оставался недоступен. Теперь агент выполняетvgchange -ayдля его группы томов, как уже делал для толстых томов и тонких пулов. Логические тома с флагом пропуска активации, который модуль никогда не выставляет, по-прежнему остаются неактивными.
Рекомендации по обновлению
Перед обновлением учтите следующее:
- Удаление ресурсов
Missingвключено по умолчанию. Сразу после обновления агент удалит каждыйBlockDevice, который уже больше 24 часов находится вMissing=Trueи не используетсяLVMVolumeGroup. Чтобы сохранить их, до обновления задайтеmissingBlockDeviceRetentionHoursравным0или большему значению. - В DKP 1.78 и новее ClusterRole
d8:manage:permission:module:sds-node-configurator:viewи:editзаменяются наd8:system-capability:sds-node-configurator:viewи:edit. Привязки, которые ссылаются на старые имена ролей напрямую, нужно перевести на новые.
Документация
Изменения в документации:
- Русскоязычный справочник
BlockDeviceтеперь описываетstatus.conditionsи его поля.
Зависимости
Обновления зависимостей:
LVM2 (lvm,dmsetupна узлах):снимок ветки main→2.03.42(changelog)- Статические
lvmиdmsetup, которые модуль ставит на узлы, теперь берутся из выпуска LVM2 2.03.42. Прежняя сборка закрепляла ревизию, но не переключалась на неё, поэтому на узлы попадал невыпущенный снимок ветки main LVM2.
- Статические
v0.8.0
Дата релиза: 2026-09-24
Файлы модуля на узле переезжают из /opt/deckhouse/sds в /var/lib/deckhouse/sds, агент перестаёт читать LVM с дисков виртуальных машин, а тонким снимкам больше не нужен модуль ядра dm_snapshot.
Ключевые изменения
Изменения в этом релизе:
- Дерево модуля на узле переезжает в
/var/lib/deckhouse/sds, куда можно писать и на узлах, где/optдоступен только для чтения, а значениеfileDevicesDirectoryпо умолчанию становится/var/lib/deckhouse/sds/file-devices. Существующие записиspec.fileDevicesв старом каталоге продолжают работать там же. - На узле с виртуальными машинами группы томов, которые вложенный кластер создаёт на своих дисках, больше не превращаются в ресурсы
LVMVolumeGroupиBlockDeviceкластера-хозяина. LVMLogicalVolumeSnapshot, восстановление из VolumeSnapshot и клоны тонких томов работают на узлах без модуля ядраdm_snapshot.
Улучшения
В этом релизе улучшено:
- Новые метрики:
sds_node_configurator_published_block_devicesиsds_node_configurator_published_devices_directory_presentпоказывают, сколько устройств на узле агент не пускает в LVM и нашёл ли он там каталог kubelet с опубликованными блочными томами, аsds_node_configurator_legacy_file_devices_directory_lvgsсчитает ресурсыLVMVolumeGroup, у которыхspec.fileDevicesвсё ещё указывает на/opt/deckhouse/sds/file-devices; их имена выводятся в лог модуля.
Исправления
В этом релизе исправлено:
- На узле с виртуальными машинами (DVP) агент читал LVM внутри дисков ВМ: группы томов гостевого кластера появлялись как ресурсы
LVMVolumeGroup, а его диски — как ресурсыBlockDeviceкластера-хозяина. Теперь командыlvmагента отвергают каждое устройство, которое kubelet опубликовал в под как блочный том, вместе с его разделами и всем, что построено поверх, для любого CSI-драйвера. Ресурсы, созданные так до обновления, выходят изReady, и их можно удалить; группа томов внутри ВМ при этом не затрагивается. - Группа томов с тегом
storage.deckhouse.io/lvmVolumeGroupName=<name>, указывающим наLVMVolumeGroup, которого в этом кластере нет, импортировалась как новый ресурс, хотя такой тег пишет только модуль в другом кластере (например, внутри виртуальной машины). Теперь она не импортируется: агент один раз пишет отказ в лог и учитывает его вsds_node_configurator_lvm_volume_group_import_refused_total. Группа томов, переданная модулю тегомstorage.deckhouse.io/enabled=trueбез тега с именем, импортируется как прежде, как и группа на файлах-подложках. - Создание
LVMLogicalVolumeSnapshot, восстановление из VolumeSnapshot и клонирование тонкогоLVMLogicalVolumeпадали на узлах без загруженного модуля ядраdm_snapshotс ошибкойsnapshot: Required device-mapper target(s) not detected in your kernel. Теперь тонкие снимки создаются без этого модуля. Агент по-прежнему загружаетdm_snapshotна каждом узле с тонким выделением, а узел, где его нет, больше не мешает агенту запуститься. - Встроенный
lvmне мог сам загрузить недостающий модуль ядра device-mapper и вместо этого сообщал, что цель не найдена. Теперь он вызывает/sbin/modprobeузла.
Несовместимые изменения
Изменения, влияющие на обратную совместимость:
- Модуль больше не устанавливает
lvmиdmsetupв/opt/deckhouse/sds/binи удаляет старые копии с узлов. Скрипты вне модуля, которые запускали их оттуда, должны перейти на/var/lib/deckhouse/sds/bin/.
Рекомендации по обновлению
Перед обновлением учтите следующее:
- Руками делать ничего не нужно. После перезапуска пода агента на узле следующий прогон bashible удаляет файлы, которые модуль раньше устанавливал в
/opt/deckhouse/sds; файлы других модулей и файлы-подложки там остаются на месте. Скрипты, которые запускали/opt/deckhouse/sds/bin/lvmилиdmsetup, должны перейти на/var/lib/deckhouse/sds/bin/. - Поле
spec.fileDevices[].directoryнеизменяемое, поэтому записи, созданные со старым значением по умолчанию/opt/deckhouse/sds/file-devices, продолжают на него указывать, и агент продолжает его принимать. Не переносите их файлы-подложки руками: как перевести запись в новый каталог без остановки, описано в FAQ. Новые записи создавайте в новом каталоге по умолчанию. ЗначениеfileDevicesDirectory, явно заданное в настройках модуля, остаётся как есть.
Документация
Изменения в документации:
- FAQ: раздел о файлах-подложках, созданных до переноса базового каталога, с порядком перевода записи в новый каталог через
pvmove.
v0.7.5
Дата релиза: 2026-09-14
Scheduler extender теперь работает на узлах control plane — рядом с kube-scheduler, который к нему обращается.
Ключевые изменения
Изменения в этом релизе:
- Под
sds-common-scheduler-extenderразмещается на узлах control plane, а не на системных, и терпит их taint (метку-ограничение, запрещающую планирование обычных подов).
Исправления
В этом релизе исправлено:
- Deployment
sds-common-scheduler-extenderзапрашивал системные узлы и нёс tolerations стратегииsystem, которая не терпит ни taint узлов control plane, ни пользовательские, поэтому под не мог быть размещён на узле control plane. Теперь он выбирает master-узлы — с откатом на системные в кластерах, где роль master не объявлена, — и терпит любой узел, что ставит его рядом с kube-scheduler, который вызывает его при каждой попытке планирования в модулях, зарегистрировавших расширение.
v0.7.4
Дата релиза: 2026-09-11
Метрики контроллера и scheduler extender теперь публикуются через kube-rbac-proxy, а LVMLogicalVolume с размером в процентах больше не отклоняется при создании и не остаётся в Failed после того, как достиг запрошенного размера.
Ключевые изменения
Изменения в этом релизе:
- Эндпоинты
/metricsконтроллера и scheduler extender больше недоступны без аутентификации: оба слушают на127.0.0.1, а публикует их kube-rbac-proxy, поэтому для сбора нужно правоgetнаdeployments/prometheus-metrics. LVMLogicalVolumeс размером в процентах —100%FREEцелой группы томов, как их выдаёт sds-elastic по одной на OSD, — больше не отклоняется при создании и не остаётся вFailedсunable to extend LV, err: not enough space.- Скан LVM, дошедший до multipath-карты, у которой не осталось путей, больше не блокирует агент: узел продолжает сообщать о своих блочных устройствах, а его RWO-тома могут переехать на другой узел.
Улучшения
В этом релизе улучшено:
- Метрики scheduler extender собираются впервые: порт всегда был открыт менеджером, но никто его не объявлял и не опрашивал.
utils_commands_execution_count_totalиutils_commands_errors_count_totalнаконец экспортируются. Оба инкрементировались примерно в сорока местах агента и контроллера, но не были зарегистрированы, поэтому подсчитанное никуда не попадало.- Все бинарники модуля пишут логи через один общий логгер. Имя компонента, выдавшего запись, теперь лежит в поле записи (
logger), а не в виде префикса в тексте сообщения.
Исправления
В этом релизе исправлено:
- Размер
LVMLogicalVolume, заданный процентом вspec.size, вычисляется от ёмкости, которую LVM сообщает как сумму устройств, а она не выровнена по extent’ам. Округление запроса вверх давало на один extent больше этой ёмкости, из-за чего запрос 100% группы томов считался в неё не влезающим: создание отклонялось, а extender переводил вFailedтом, уже занимающий всё место. Теперь процентные размеры округляются вниз, к границе extent’а. LVMLogicalVolume, помеченныйFailedиз-за того, что свободное место группы ещё не догнало только что созданный LV, оставался вFailedдо конца жизни: последующие проходы завершались раньше, увидев том уже нужного размера. Теперь такой том переходит вCreated.- Агент мог сообщить
block device size is invalidдля исправного устройства: переменная для результата ioctl лежала на стеке, и рост стека во время вызова перемещал её, поэтому размер записывался по старому адресу и оставался нулевым. - Скан LVM, дошедший до multipath-карты без путей, блокировался в ядре вместо отказа, и каждый зависший скан держал карту открытой. Из-за этого агент останавливался,
multipath -fне мог удалить карту, а том оставался вNode.status.volumesInUseи не подключался на другом узле. Теперь такие карты — device-mapper с UUIDmpath-и без slaves — отбрасываются вglobal_filterкаждой команды LVM.
Обновления безопасности
Обновления безопасности в этом релизе:
- Закрыт анонимный доступ к метрикам контроллера и scheduler extender. Раньше эндпоинты никого не аутентифицировали, были доступны из любого пода кластера, а ServiceMonitor отправлял на них токен ServiceAccount’а Prometheus по обычному HTTP.
golang.org/x/crypto, используемый хуками модуля, обновлён до 0.56.0 — это закрывает CVE-2026-56854 (критическая, обход аутентификации вx/crypto/ssh), CVE-2026-56855 и CVE-2026-78662.
Рекомендации по обновлению
Перед обновлением учтите следующее:
- Для метрик руками делать нечего: поставляемый с модулем ServiceMonitor уже опрашивает прокси по HTTPS с токеном. Перенастроить придётся только собственный сборщик, который читал метрики контроллера напрямую по HTTP: его нужно направить на порт прокси и выдать ему право
getнаdeployments/prometheus-metrics. - Формат записей лога изменился, поэтому фильтр, искавший имя компонента внутри текста сообщения, нужно перевести на поле
logger.
v0.7.3
- Добавлено условие Missing у BlockDevice: исчезнувшее, но занятое устройство (например, входящее в LVM Physical Volume) больше не остаётся навсегда с устаревшим status.path. Сначала выставляется Unknown, True — только если устройство отсутствует непрерывно 10 минут, поэтому мигающий путь iSCSI, восстановившийся сам, не помечается. Условие снимается, как только устройство находится снова; сам объект не удаляется, чтобы не рвать ссылки из LVMVolumeGroup и LVMLogicalVolume
- Исправление: агент больше не падает на закэшированном логическом томе без атрибутов LVM
- Исправление: потолки VPA для агента, scheduler-extender и контроллера подняты до измеренного потребления
- Исправление: релизный образ больше не собирается из кэша с устаревшим changelog.yaml — зависимости git-маппинга привязаны к стадии install, на которой файл и копируется
- Обновление базовых образов до v2.1.3 и lib-helm до 1.72.14
- Документация: описаны серийные номера виртуальных дисков
- Внутренние изменения в сборке модуля
v0.7.2
- Исправление: контроллеру выданы права на запись событий (create и patch) — раньше запись события отклонялась по правам
- Фиксы CVE
- Внутренние изменения в сборке: обновлён CI, в релизный образ добавлены crds, docs и openapi
v0.7.1
- Исправление: одно «осиротевшее» устройство device-mapper без диска больше не останавливает обнаружение BlockDevice на всём узле — раньше из-за него агент не создавал ни одного BlockDevice на ноде, включая исправные диски
- Исправление: LVMVolumeGroup с единственным PV, чьё имя не удалось определить сразу, больше не зависает в Pending навсегда — устранены пустая публикация status.nodes и отсутствие повторной попытки при отсутствии udev-событий
- Исправление: агент подставляет унаследованный от родительского устройства серийный номер, если прямое чтение серийника не удалось (участники multipath, crypt/dm-устройства) — раньше такие устройства пропускались при обнаружении BlockDevice
- Опциональные ресурсы (VerticalPodAutoscaler, PodMonitor/ServiceMonitor) теперь включаются по факту наличия CRD в API, а не по списку enabledModules
- Документация: исправлено дублирование ключа description в русских CRD LVMVolumeGroup, ломавшее docs-builder, добавлено недостающее описание status.extentSize и восстановлено описание blockDevice
v0.7.0
- Исправление: агент больше не принимает за свои LVM-структуры внутри блочных устройств, отданных виртуальным машинам, — в LVM global_filter возвращено исключение /dev/loop. Устранены вызванные этим отказы LVMVolumeGroup с причинами CacheEmpty и ScanFailed — имя VG больше не считается идентификатором, а предупреждение LVM о дубликате чужого имени не приписывается нашей группе
- Добавлена поддержка LVM на файлах: поле spec.fileDevices у LVMVolumeGroup и LVMVolumeGroupSet. Агент создаёт файл, подключает его как loop-устройство и использует как PV, что даёт LVM-хранилище на узле без свободного диска; поле blockDeviceSelector стало необязательным
- Планировщик (scheduler-extender) учитывает PVC, перечисленные в аннотации пода extra-pvcs
- LVMLogicalVolume, LVMLogicalVolumeSnapshot и LVMVolumeGroupSet публикуют status.conditions; у BlockDevice появилось условие Consumable, объясняющее, почему устройство нельзя использовать; обработка условий LVMVolumeGroup приведена к общему виду
- Исправление: том, созданный из снапшота или клонированием, расширяется до запрошенного размера — раньше PVC оставался в Pending в ожидании размера, который никогда не появлялся
- Исправление: тонкий пул, заданный процентом от размера VG, больше не застревает в VGConfigurationApplied=False из-за округления LVM на один экстент
- Исправление: холостой вызов lvextend распознаётся как безобидный и на LVM 2.03.16 — иначе LVMVolumeGroup оставался в NotReady
- Исправление: при взятии существующей VG под управление blockDeviceSelector больше не остаётся пустым
- Исправление: после pvcreate и vgcreate агент вызывает udevadm, чтобы обновить базу udev
- Исправление: при включённом storage-foundation агент загружает модуль ядра dm_snapshot
- Удалён устаревший CRD LvmVolumeGroupBackup, оставшийся от разовой миграции: новый хук снимает финализаторы с остатков и удаляет сам CRD
- Добавлен экспериментальный режим обнаружения блочных устройств через netlink, включаемый флагом ENABLE_NETLINK_BLOCK_DEVICE_DISCOVERY
- Обновление базовых образов до v1.3.25, Go 1.26.5 и lib-helm до 1.72.13
- Устранены уязвимости в golang.org/x/net, golang.org/x/sys и golang.org/x/crypto
- Внутренние изменения в сборке модуля и CI, значительно расширен набор e2e-тестов
v0.6.10
- Из LVM global_filter удалено общее accept-правило, которое приводило к сканированию нестандартных путей (/dev/disk/by-diskseq/*) и дублированию имён VG
v0.6.9
- Агент теперь игнорирует «чужие» блочные устройства (rbd, drbd, nbd, loop) при сканировании LVM
- Исправлена обработка дублирующихся имён VG: статус LVMVolumeGroup больше не повреждается
- Устранена блокировка запуска пода агента; добавлены таймауты на LVM-команды
- Улучшена стабильность имён устаревших блочных устройств: сопоставление по серийному номеру или WWN предотвращает пересоздание при смене имени
- Исправлена валидация селектора BlockDevice: оператор In теперь единственный допустимый
v0.6.8
- Исправлена гонка в scheduler-extender при пустом PVC.Status.Phase: решение о привязке PVC теперь принимается по Spec.VolumeName, узлы без подходящей LVMVolumeGroup всегда отбраковываются
- Agent теперь планируется также на узлах данных sds-elastic
- Обновление базовых образов и lib-helm до 1.72.0
v0.6.7
- Обновление базовых образов, Go 1.25.10 и lib-helm 1.71.12
- Внутренние изменения в структуре и сборке модуля
v0.6.6
- Внутренние изменения в структуре и сборке модуля
v0.6.5
- Обновление базовых образов, Go 1.25.10 и lib-helm 1.71.11
- Внутренние изменения в сборку модуля
v0.6.4
- Исправления в структуру модуля
v0.6.3
- scheduler-extender: PVC с отсутствующим StorageClass больше не блокируют планирование пода
v0.6.2
- Изменения в CI: DistroPackagesProxy и env прокси в werf, доработки CVE-сканов (role_name, checkout)
- Добавлены кластерные роли user-authz в шаблонах
v0.6.1
- Добавлено определение точек монтирования через парсер mountinfo в агенте
- Добавлен учёт locality реплик в scheduler-extender для replicated-томов
- Исправлены гонки и зацикливание реконсиляции в контроллерах LVG/LLV
- Учтён ExtentSize при сравнении в discoverer и добавлен fallback 4Mi в контроллере LLV
- Убрана ложная пометка LLV как Failed при actualSize > spec.size
- Исправлено двойное вычитание Failed LLV с actualSize при подсчёте свободного места в scheduler-extender
- Обновление базовых образов и lib-helm
v0.6.0
- Фиксы CVE
- Переход на общий scheduler для SDS
- Замена фиксированной resize delta на автоматическое определение дельты размера LVM раздела
- Автоактивация LVM разделов при операциях с томами
v0.5.16
- Добавлен хук для очистки ресурсов при выключении модуля
- Убрана настройка enableThinProvisioning, предполагаем, что thin provisioning всегда включен
- Обновление module-sdk для фикса CVE, обновление golang
v0.5.15
- Добавлены метрики для LVM томов
- Обновление module-sdk для фикса CVE
- Рефакторинг манифестов
v0.5.14
- Обновлены версии базовых образов и lib-helm
- Установлено значение по умолчанию для
enableThinProvisioningвtrue - Улучшены документация
- Исправления в манифестах
- Добавлена поддержка HA mode
v0.5.13
- Обновлена версия базовых образов
v0.5.12
- Обновлена версия Go до 1.24.9
- Обновлена lib-helm до deckhouse_lib_helm-1.64.1
- Обновлены документации
v0.5.11
- Исправлена очистка томов в некоторых ОС
v0.5.10
- Удалены requirements к Python
v0.5.9
- Исправлена ошибка с инактивированными логическими томами
v0.5.8
- Добавлены файлы release notes
v0.5.7
- Исправлена ошибка при установке модуля на нодах с containerd v2
v0.5.6
- Добавлена дополнительные монтирования для поддержки containerd v2
v0.5.5
- Фиксы CVE
v0.5.4
- Фиксы CVE
- Внутренние изменения для поддержки containerd v2
v0.5.3
- Поправлен баг, препятствующий обновлению статусов LVG при наличии в кластере missed/notready нод
v0.5.2
- Убрана поддержка модуля sds-drbd
- Добавлено сокрытие устройств csi-scsi-generic
v0.5.1
- Технический релиз, рефакторинг модуля
v0.5.0
- Добавлена возможность затирания данных в enterprise версиях
- Множественные правки в документацию
v0.4.6
- Технический релиз. Убран статус “Превью” в документации
v0.4.5
- Многочисленные правки в документации
- Добавлены LVMVolumeGroupSet и LVMLogicalVolumeSnapshots
- Исправлена работа с labels и finalizers в ряде внутренних объектов
- Добавлена загрузка dm_snapshot при необходимости
v0.4.3
- Устранено падение скрипта миграции BlockDevices при отсутствии финалайзеров на ресурсах
v0.4.2
- Фикс для поддержки серийных номеров BlockDevice длиной до 63 символов
v0.4.1
- Исправлена потенциальная проблема с отсутствующими labels в хуке миграции LvmVolumeGroup->LVMVolumeGroup
- Добавлен контроллер, отслеживающий labels на ресурсах BlockDevice для оперативной актуализации ресурсов LVMVolumeGroup
v0.4.0
- Ресурсы LvmVolumeGroups будут мигированы в LVMVolumeGroups
- Точные списки BlockDevices в LVMVolumeGroups будут мигрированы в селекторы
- Множественные правки в контроллеры и документации
v0.3.2
- Фикс в работе sds-health-watcher-controller, из-за которого он мог некорректно обрабатывать статус некоторых нод
v0.3.1
- Обновление golang до актуальной 1.22.6 для закрытия известных уязвимостей
v0.3.0
- Добавлена настройка thin provisioning в mc, для автоматической подгрузки модуля dm_thin_pool
- Образы переведены на distroless
- Добавлены labels к сущности BlockDevices (для будущего использования в BlockDevicesSelectors)
- Множественные правки багов и документации
v0.2.5
- Добавлены метрики и их сбор в Prometheus, порты хелсчеков переведены на правильные
v0.2.4
- Добавлено авторасширение для thin pools LVM volume groups и LVM logical volumes
v0.2.3
- Добавлен внутренний кэш для ускорения работы
- Добавлены health и readiness проверки в контроллер
- Улучшено отображение ресурсов в cli
- Теперь LVM volume group удаляются при удалении соответствующего ресурса k8s, а не при добавлении аннотации
- Добавлено указание размера LVM volume group в процентах
- Добавлена поддержка AllocationLimit в LVM volume group
- Добавлена поддержка непрерывных (contiguous) томов в sds-local-volume
v0.2.1
- Добавили поддержку multipath устройств
v0.2.0
- Добавлен LVMLogicalVolumeWatcher CRDs
- Добавлены дополнительные тестовые случаи
- Добавлена функция AreSizesEqualWithinDelta
- Исправлен resize для thinPools
- Добавлены тесты к LvmLogicalVolumeWatcher контроллеру
- Исправлено именование в LVMLogicalVolume
- Добавлена node affinity
- Улучшена обработка LVMLogicalVolume: логирование, отображение размера и обработка событий
- Статически скомпонованные nsenter, lsblk и lvm утилиты
- Исправлено последовательное обнаружение путем переключения на динамический lsblk
- Переписан bin-copier скрипт на Golang
- Перемещены lsblk и его библиотеки в образ агента
- Добавлено поле age
- Реализована фильтрация stderr для команд LVM
- Добавлены bench-тесты для LVMLogicalVolume контроллера
- Изменен тип размера со string на quantity
- Добавлена параллельная обработка в lvm_logical_volume_watcher и валидация размера VG в lvm_volume_group_watcher