Работоспособность гарантируется только при использовании стоковых ядер, поставляемых вместе с поддерживаемыми дистрибутивами. При использовании нестандартных ядер или дистрибутивов поведение может быть непредсказуемым.
Причины, по которым в кластере не создаются ресурсы BlockDevice
Чаще всего ресурсы BlockDevice не создаются, потому что имеющиеся устройства не проходят фильтры контроллера. Убедитесь, что устройства удовлетворяют требованиям.
Причины, по которым в кластере не создаются ресурсы LVMVolumeGroup
- Отсутствие BlockDevice — контроллер не создаст LVMVolumeGroup, если в кластере нет ресурсов BlockDevice, указанных в её спецификации.
- Отсутствие тега — если ресурсы BlockDevice присутствуют, но LVMVolumeGroup отсутствует, проверьте, что у соответствующей LVM-группы на узле задан тег
storage.deckhouse.io/enabled=true.
Причины, по которым после удаления LVMVolumeGroup ресурс и Volume Group остаются
Ситуация возможна в двух случаях:
-
В Volume Group имеются логические тома — контроллер не отвечает за удаление логических томов (Logical Volumes) на узле, поэтому, если в созданной посредством ресурса Volume Group есть какие-либо логические тома, необходимо удалить их вручную. После этого и ресурс LVMVolumeGroup, и сама Volume Group (включая физические тома) будут удалены автоматически.
-
Для ресурса установлена аннотация
storage.deckhouse.io/deletion-protection— данная аннотация защищает ресурс от удаления, а вместе с ним и связанную Volume Group. Уберите аннотацию командой:d8 k annotate lvg <имя-ресурса> storage.deckhouse.io/deletion-protection-После этого ресурс LVMVolumeGroup и соответствующая Volume Group будут удалены автоматически.
Причины неуспешного создания Volume Group с помощью ресурса LVMVolumeGroup
Вероятнее всего ресурс не прошёл валидацию контроллера (в отличие от схемы Kubernetes). Причину можно узнать в поле status.message ресурса LVMVolumeGroup или в логах контроллера.
Проверьте, что указанные BlockDevice соответствуют условиям:
- поле
consumableустановлено вtrue; - для
spec.type: Localвсе BlockDevice принадлежат одному узлу; - используются актуальные имена ресурсов BlockDevice.
Поведение ресурса LVMVolumeGroup при отключении одного из устройств в Volume Group
Ресурс LVMVolumeGroup остаётся, пока существует одноимённая LVM‑группа. При недоступности устройства группа переходит в ошибочное состояние — это отражается в поле status.
После восстановления устройства группа возвращается в статус Healthy, а статус ресурса обновляется автоматически.
Передача управления существующей на узле Volume Group контроллеру
Добавьте тег storage.deckhouse.io/enabled=true нужной Volume Group:
vgchange myvg-0 --addtag storage.deckhouse.io/enabled=true
Контроллер создаст соответствующий ресурс LVMVolumeGroup и возьмёт группу под управление.
Отключение отслеживания LVM Volume Group контроллером
Удалите тег storage.deckhouse.io/enabled=true:
vgchange myvg-0 --deltag storage.deckhouse.io/enabled=true
Контроллер прекратит отслеживание и удалит связанный ресурс LVMVolumeGroup.
Причины автоматической установки тега storage.deckhouse.io/enabled=true для Volume Group
Контроллер добавляет тег при создании Volume Group через ресурс LVMVolumeGroup.
При миграции с модуля linstor на sds‑node‑configurator и sds‑replicated-volume все теги linstor-* заменяются на storage.deckhouse.io/enabled=true, чтобы передать управление новой логике.
Использование ресурса LVMVolumeGroupSet для создания LVMVolumeGroup
Ресурс LVMVolumeGroupSet позволяет создавать LVMVolumeGroup на узлах на основе шаблонов. Сейчас поддерживается стратегия PerNode — по одному ресурсу на каждый узел, удовлетворяющий селектору.
Пример спецификации LVMVolumeGroupSet:
apiVersion: storage.deckhouse.io/v1alpha1
kind: LVMVolumeGroupSet
metadata:
name: my-lvm-volume-group-set
labels:
my-label: my-value
spec:
strategy: PerNode
nodeSelector:
matchLabels:
node-role.kubernetes.io/worker: ""
lvmVolumeGroupTemplate:
metadata:
labels:
my-label-for-lvg: my-value-for-lvg
spec:
type: Local
blockDeviceSelector:
matchLabels:
status.blockdevice.storage.deckhouse.io/model: <model>
actualVGNameOnTheNode: <имя-VG-на-узле>
Лейблы, добавляемые контроллером к ресурсам BlockDevice
status.blockdevice.storage.deckhouse.io/type— тип LVM;status.blockdevice.storage.deckhouse.io/fstype— тип файловой системы;status.blockdevice.storage.deckhouse.io/pvuuid— UUID физического тома (PV);status.blockdevice.storage.deckhouse.io/vguuid— UUID группы томов (VG);status.blockdevice.storage.deckhouse.io/partuuid— UUID раздела;status.blockdevice.storage.deckhouse.io/lvmvolumegroupname— имя ресурса LVMVolumeGroup;status.blockdevice.storage.deckhouse.io/actualvgnameonthenode— имя LVM Volume Group на узле;status.blockdevice.storage.deckhouse.io/wwn— WWN (World Wide Name) устройства;status.blockdevice.storage.deckhouse.io/serial— серийный номер устройства;status.blockdevice.storage.deckhouse.io/size— размер устройства;status.blockdevice.storage.deckhouse.io/model— модель устройства;status.blockdevice.storage.deckhouse.io/rota— флаг ротационного устройства;status.blockdevice.storage.deckhouse.io/hotplug— возможность горячего подключения;status.blockdevice.storage.deckhouse.io/machineid— идентификатор машины, где установлено устройство.