Текущая версия модуля устарела и больше не поддерживается. Переключитесь на использование модуля sds-drbd.
Работоспособность модуля гарантируется только в следующих случаях:
- при использовании стоковых ядер, поставляемых вместе с поддерживаемыми дистрибутивами;
- при использовании сети 10Gbps.
Работоспособность модуля в других условиях возможна, но не гарантируется.
После включения модуля кластер автоматически настраивается на использование LINSTOR и остается только сконфигурировать хранилище.
Отдельные функции модуля могут потребовать указания мастер-пароля (к примеру, использование резервного копирования в удаленное S3-хранилище).
Чтобы задать мастер-пароль, создайте Secret в пространстве имен d8-system
:
apiVersion: v1
kind: Secret
metadata:
name: linstor-passphrase
namespace: d8-system
immutable: true
stringData:
MASTER_PASSPHRASE: *!пароль* # Мастер-пароль для LINSTOR.
Подойдите ответственно к выбору мастер-пароля для LINSTOR. При его потере зашифрованные данные окажутся недоступными.
Конфигурация хранилища LINSTOR
Конфигурация LINSTOR в Deckhouse осуществляется посредством назначения специального тега linstor-<имя_пула>
на LVM-группу томов или LVMThin-пул.
-
Выберите имя тега.
Имя тега должно быть уникальным в пределах одного узла. Поэтому каждый раз, прежде чем назначить новый тег, убедитесь в отсутствии этого тега у других групп томов и пулов.
Выполните следующие команды, чтобы вывести список групп томов и пулов:
# LVM пулы vgs -o+tags | awk 'NR==1;$NF~/linstor-/' # LVMThin пулы lvs -o+tags | awk 'NR==1;$NF~/linstor-/'
-
Добавьте пулы.
Создайте пулы хранения на всех узлах, где вы планируете хранить ваши данные. Используйте одинаковые имена пулов хранения на разных узлах, если хотите иметь для них общий StorageClass.
-
Чтобы добавить пул LVM, создайте группу томов с тегом
linstor-<имя_пула>
либо добавьте тегlinstor-<имя_пула>
существующей группе.Пример команды создания группы томов
vg0
с тегомlinstor-data
:vgcreate vg0 /dev/nvme0n1 /dev/nvme1n1 --add-tag linstor-data
Пример команды добавления тега
linstor-data
существующей группе томовvg0
:vgchange vg0 --add-tag linstor-data
-
Чтобы добавить пул LVMThin, создайте LVMThin-пул с тегом
linstor-<имя_пула>
.Пример команды создания LVMThin-пула
vg0/thindata
с тегомlinstor-data
:vgcreate vg0 /dev/nvme0n1 /dev/nvme1n1 lvcreate -l 100%FREE -T vg0/thindata --add-tag linstor-thindata
Обратите внимание, что сама группа томов не обязана содержать какой-либо тег.
-
-
Проверьте создание StorageClass.
Когда все пулы хранения будут созданы, появятся три новых StorageClass’а. Проверьте, что они создались, выполнив в кластере Kubernetes команду:
kubectl get storageclass
Пример вывода списка StorageClass:
$ kubectl get storageclass NAME PROVISIONER AGE linstor-data-r1 linstor.csi.linbit.com 143s linstor-data-r2 linstor.csi.linbit.com 142s linstor-data-r3 linstor.csi.linbit.com 142s
Каждый StorageClass можно использовать для создания томов соответственно с одной, двумя или тремя репликами в ваших пулах хранения.
При необходимости изучите пример расширенной конфигурации LINSTOR, но мы рекомендуем придерживаться приведенного выше упрощенного руководства.
Дополнительные возможности для приложений, использующих хранилище LINSTOR
Размещение приложения «поближе» к данным (data locality)
В случае гиперконвергентной инфраструктуры может возникнуть задача по приоритетному размещению пода приложения на узлах, где необходимые ему данные хранилища расположены локально. Это позволит получить максимальную производительность хранилища.
Для решения этой задачи модуль linstor предоставляет специальный планировщик linstor
, который учитывает размещение данных в хранилище и старается размещать под в первую очередь на тех узлах, где данные доступны локально.
Любой под, использующий тома linstor, будет автоматически настроен на использование планировщика linstor
.
Перенос приложения при проблемах с узлом (storage-based fencing)
Если приложение не умеет работать в режиме высокой доступности и работает в одном экземпляре, может возникнуть задача принудительного переноса приложения с узла, на котором возникли проблемы (например, если возникли проблемы с сетевой, дисковой подсистемой и т. д.).
Модуль linstor автоматически удалит поды с узла, где возникли проблемы (с хранилищем, сетью и т. п.), и вешает дополнительный taint на него, что позволяет перезапустить поды на других исправных узлах в кластере.