Доступно в редакциях:  Ultimate/EE

Входит в расширения:  Интеграция с системами хранения данных

Стадия жизненного цикла модуля: Экспериментальная версия

У модуля есть требования для установки

Модуль csi-mind-ustor позволяет рабочим нагрузкам кластера хранить данные на томах uStor. Тома подключаются к узлам по протоколу NBD (Network Block Device).

Подключение к кластеру uStor описывается кастомным ресурсом MindUstorStorageConnection, а каждый StorageClass драйвера — кастомным ресурсом MindUstorStorageClass. Модуль устанавливает на узлы клиент uStor и поддерживает его конфигурацию в соответствии с подключением.

Основные возможности

Модуль предоставляет следующие возможности:

  • StorageClass для пулов uStor, описываемые ресурсами MindUstorStorageClass;
  • постоянные тома в uStor, подключаемые к узлам по NBD;
  • расширение томов без перезапуска пода;
  • тома с файловой системой ext4 или xfs, а также блочные тома (Block);
  • снимки томов и восстановление томов из них;
  • блочные тома с доступом ReadWriteMany для живой миграции виртуальных машин модуля virtualization;
  • автоматическая установка и настройка клиента uStor (ustor-client, ustor-nbd) на узлах;
  • метрики заполненности томов для алертов и дашбордов PersistentVolumeClaim;
  • регулярная проверка входа в API управления uStor и алерты, если подключение или StorageClass не готовы.

Как работает модуль

Модуль работает следующим образом:

  1. После включения модуль устанавливает клиент uStor на все узлы кластера с поддерживаемой ОС и назначает этим узлам лейбл storage.deckhouse.io/csi-mind-ustor-client-ready=true. CSI node plugin работает только на узлах с этим лейблом.
  2. Администратор создаёт секреты с учётными данными пользователя uStor и клиентскими сертификатами, а также MindUstorStorageConnection, который ссылается на них.
  3. Модуль записывает конфигурацию клиента uStor и сертификаты в /etc/ustor на узлах, выбранных параметром dataPlane.nodeSelector подключения, оставляет CSI node plugin только на них и запускает CSI-контроллер. Раз в час модуль выполняет вход в API управления uStor с учётными данными подключения.
  4. Администратор создаёт MindUstorStorageClass. Модуль создаёт StorageClass с тем же именем для драйвера ustor-nbd.csi.mindsw.io.
  5. Когда создаётся PersistentVolumeClaim с этим StorageClass, драйвер создаёт образ в пуле uStor. Под, использующий том, планируется только на узел, где работает CSI node plugin. Когда под запускается, том подключается к его узлу по NBD и монтируется.

StorageClass драйвера ustor-nbd.csi.mindsw.io создаются, изменяются и удаляются только через MindUstorStorageClass. Напрямую можно менять только их аннотации.

Системные требования и рекомендации

Для работы модуля требуется:

  • Deckhouse Platform (DP) версии 1.72 или новее;
  • кластер uStor 1.6, API управления которого доступен из кластера Kubernetes;
  • доступ узлов, на которых монтируются тома uStor, к etcd и OSD uStor по сети данных uStor;
  • возможность загрузить модуль ядра nbd на этих узлах;
  • ОС узлов: Astra Linux 1.8, РЕД ОС 8, Ubuntu 22.04 или 24.04, Debian 12; на узлах с другой ОС тома uStor смонтировать нельзя;
  • отдельный пользователь uStor для CSI-контроллера, подготовленный, как описано в разделе «Подготовка пользователя uStor»;
  • для снимков томов — модуль, предоставляющий API snapshot.storage.k8s.io, например snapshot-controller.

На узлах, выбранных параметром dataPlane.nodeSelector подключения, модуль заменяет /etc/ustor/ustor.conf и сертификаты в /etc/ustor/certs конфигурацией клиента. Если на узле есть собственная конфигурация uStor (например, на сервере uStor), исключите его с помощью dataPlane.nodeSelector.

Ограничения

У модуля есть следующие ограничения:

  • модуль обслуживает один кластер uStor: используется только самый старый MindUstorStorageConnection;
  • тома Filesystem поддерживают только режимы доступа ReadWriteOnce и ReadWriteOncePod;
  • тома Block поддерживают только режим доступа ReadWriteOncePod, режим ReadWriteMany разрешён только для дисков виртуальных машин модуля virtualization;
  • клонирование тома напрямую из другого PersistentVolumeClaim не поддерживается: создайте снимок и восстановите том из него;
  • эфемерные inline-тома CSI не поддерживаются;
  • параметры MindUstorStorageClass нельзя изменить после создания.