Руководство по интеграции драйвера YADRO CSI с системами управления контейнерами
В руководстве содержатся инструкции по настройке драйвера YADRO CSI (Controller Storage Interface) для интеграции TATLIN.UNIFIED Gen1, TATLIN.UNIFIED.SE, TATLIN.UNIFIED Gen2 (далее — СХД) с системами управления контейнерами.
1. Функциональные возможности драйвера YADRO CSI
| Поддерживаемые ресурсы | Имя, тип ресурсов |
|---|---|
СХД |
TATLIN.UNIFIED Gen1, TATLIN.UNIFIED Gen2, TATLIN.UNIFIED.SE |
ОС хост-сервера |
Ubuntu, РЕД ОС |
Протокол передачи данных |
iSCSI, FC, NFS |
Тип СХД |
Блочный, файловый |
Драйвер YADRO CSI — это интерфейс взаимодействия СХД и систем управления контейнерами.
| Функция | Larissa 24.12 | Kore 24.10 | Juliet 24.08 | Ison |
|---|---|---|---|---|
Создание ресурса |
да |
да |
да |
да |
Удаление ресурса |
да |
да |
да |
да |
Монтирование ресурса на узле кластера |
да |
да |
да |
да |
Размонтирование ресурса на узле кластера |
да |
да |
да |
да |
Увеличение объема ресурса |
да [1] |
да |
да |
да |
Уменьшение объема ресурса |
нет |
нет |
нет |
нет |
Получение статистики о ресурсе |
да |
да |
да |
да |
Поддержка групп ресурсов |
нет |
нет |
нет |
нет |
Снапшоты [2] |
да |
да |
да |
нет |
Репликация |
нет |
нет |
нет |
нет |
Поддержка пулов с прямой адресацией |
да |
да |
да |
да |
Поддержка пулов с косвенной адресацией |
да |
да |
да |
нет |
Автоматизация развертывания с помощью Ansible |
нет |
нет |
нет |
нет |
Поддержка проверки состояния драйвера (Healthcheck) |
да |
да |
нет |
нет |
Поддержка режима высокой доступности (High Availability) |
да |
да |
нет |
нет |
Поддержка протокола iSCSI |
да |
да |
да |
да |
Поддержка протокола FC |
да |
да |
нет |
нет |
Поддержка протокола NFS |
нет |
нет |
нет |
2. Предварительные настройки
2.1. Настройка СХД
Перед настройкой ОС и платформ виртуализации на СХД должны быть выполнены следующие настройки:
-
Создан пул.
Для использования снапшотов создавайте пулы с косвенным типом адресации. Пулы с прямым типом адресации не поддерживают работу со снапшотами.
-
Заданы параметры портов ввода-вывода СХД, используемых для доступа к ресурсам:
-
статические IP-адреса портов;
-
адрес шлюза;
-
плавающий (виртуальный) IP-адрес СХД.
Настройка плавающего (виртуального) адреса обязательна при работе с файловыми ресурсами и опциональна при работе с блочными ресурсами.
-
2.2. Настройка многопутевого ввода-вывода на узлах кластера
Для настройки многопутевого ввода-вывода:
-
Проверьте наличие пакета для работы с
multipath. Если пакет отсутствует, выполните команду:Для РЕД ОС
yum -y install device-mapper-multipathДля Ubuntu
apt-get -y install multipath-tools -
Создайте файл
/etc/udev/rules.d/70-tatlin.rulesсо следующим содержимым:# Set SCSI command timeout for TATLIN devices to 120 seconds ACTION=="add|change", SUBSYSTEM=="block", ENV{ID_VENDOR}=="YADRO", ENV{ID_MODEL}=="TATLIN", ATTR{device/timeout}="120" -
Убедитесь, что на таргетах настроены уникальные IQN:
echo "InitiatorName=`/sbin/iscsi-iname`" > /etc/iscsi/initiatorname.iscsi -
Создайте файл
/etc/multipath/conf.d/tatlin.confсо следующим содержимым:Для РЕД ОС
devices { device { vendor "YADRO" product "TATLIN" path_grouping_policy "multibus" path_selector "service-time 0" path_checker directio no_path_retry 28 max_sectors_kb 1024 } }Для Ubuntu
devices { device { vendor "YADRO" product "TATLIN" path_grouping_policy "multibus" path_selector "service-time 0" path_checker directio detect_checker no no_path_retry 28 max_sectors_kb 1024 } }Параметр
no_path_retryзадает таймаут изменения состояния многопутевого ввода-вы вода устройства после отказа всех путей. Таймаут определяется как произведение значенийpolling_intervalиno_path_retry(по умолчанию — 140 секунд, т.к. значение по умолчанию дляpolling_interval— 5 секунд). Таймаут отражает время автоматической реакции (failover) на отказ всех путей (например, при выходе коммутатора из строя). Эти и другие параметры могут быть изменены в соответствии с требованиями инициатора. -
Создайте файл /etc/multipath.conf со следующим содержимым:
defaults { user_friendly_names yes } blacklist { } -
Выполните команду:
/sbin/mpathconf --enable -
Перезапустите сервис
multipathd:systemctl restart multipathd.service
3. Настройка драйвера YADRO CSI
|
Файлы с образом драйвера CSI и чартом Helm доступны на сервисном портале YADRO в раз деле TATLIN Satellites для соответствующей версии (дополнительные материалы для интеграции с системами мониторинга и настройки драйвера YADRO CSI). |
|
Для настройки драйвера требуется использовать учетную запись с правами уровня admin. |
Чтобы настроить драйвер YADRO CSI для интеграции с СХД:
-
Выполните предварительную настройку СХД.
-
Установите Docker на рабочую станцию согласно официальной документации.
-
Установите менеджер пакетов Helm согласно официальной документации.
|
Рекомендуемая версия ПО менеджера пакетов Helm — 3.15.4. Рекомендуема версия ПО кластера Kubernetes — 1.29. |
3.1. Установка драйвера CSI
Чтобы установить драйвер CSI:
-
Разархивируйте файл с образом драйвера CSI:
gzip -cd csi-tatlinunified-<VERSION>.tar.gz|tar xf<VERSION> — Версия TATLIN Satellites.
-
Импортируйте образ в локальный демон Docker:
docker image load --input csi-tatlinunified-<VERSION>.tar -
Отправьте образ в реестр Docker:
export DOCKER_REGISTRY="<DOCKER-HOST-IP>" docker images docker tag <IMAGE-ID> $DOCKER_REGISTRY/csi-tatlinunified:<VERSION> docker push $DOCKER_REGISTRY/csi-tatlinunified:<VERSION><IMAGE-ID> — Идентификатор образа.
Идентификатор присваивается образу после импортирования в локальный демон Docker и отображается в столбце IMAGE ID.
<DOCKER-HOST-IP> — IP-адрес реестра Docker, сервиса для хранения контейнеров Docker.
Для отправки образа также можно использовать утилиту
skopeo:skopeo copy docker-archive:./csi-tatlinunified-<VERSION.>tar docker://$DOCKER_REGISTRY/csi-tatlinunified:<VERSION> -
Для управления ресурсами CSI разархивируйте чарт Helm:
tar xf csi-tatlinunified-<VERSION>.tar -
Замените реестр Docker на внутренний реестр:
sed -i -e "s|DOCKER_REGISTRY|$DOCKER_REGISTRY|" csi-tatlinunified/values.yaml -
Для передачи параметров СХД в кластер на управляющем узле кластера создайте конфигурацион ный файл
/values.yamlсо следующими параметрами:images: driver: <PATH> controller: controllerCount: 1 healthMonitor: enabled: false storageList: - name: <STORAGE-NAME> username: <USERNAME> password: <PASSWORD> address: <IP-ADDRESS> skipCertificateValidation: true storageClass: - protocolName: <PROTOCOL> FsType: <FILESYSTEM> poolName: <POOL-NAME> isDefault: true volumeExportPort: "<PORT>,<PORT>"<PATH> — Путь к артефакту с драйвером CSI.
<STORAGE-NAME> — Имя конфигурации подключения к СХД. Задается пользователем. Должно быть уникально в пределах конфигурации.
<USERNAME> — Имя учетной записи пользователя СХД.
<PASSWORD> — Пароль учетной записи пользователя СХД.
<IP-ADDRESS> — IP-адрес СХД.
<PROTOCOL> — Поддерживаемый протокол передачи данных. Может содержать от одного протокола передачи дан ных.
<FILESYSTEM> — Тип файловой системы.
<POOL-NAME> — Имя пула хранения. Содержит имя, заданное при создании пула на стороне СХД.
<PORT> — Порт подключения к ресурсу. Может содержать от одного порта передачи данных. -
Если в кластере не установлены компоненты:
crds,snapshot controller,snapshot validation webhook, добавьте параметры в конфигурационный файлvalues.yaml:crds: enabled: true snapshotctrl: enabled: true snapshotwebhook: enabled: trueУстановка компонентов crds, snapshot controller и snapshot validation webhook обязательна для корректной работы со снапшотами.
Значения в созданном конфигурационном файле
/values.yamlявляются приоритетными. Значения по умолчанию из аналогичного конфигурационного файла чарта Helm будут за менены на значения из созданного вручную файла. -
(Опционально) Настройте проверку состояния кластера.
-
(Опционально) Настройте режим High Availability.
-
На управляющем узле кластера запустите чарт Helm:
helm upgrade csi-tatlinunified <PATH> -i -f ./values.yaml<PATH> — Путь к артефактам чарта Helm.
3.2. Создание StorageClass
Ресурс StorageClass создается автоматически при запуске чарта Helm. StorageСlass хранит параметры подключения к системе хранения данных. Для добавления нового ресурса или настройки параметров создайте файл с необходимой конфигурацией.
|
Подробнее о ресурсе CSI StorageClass см. в официальной документации. |
Чтобы создать ресурс StorageClass:
-
Создайте конфигурационный файл
<STORAGE_CLASS_FILE>.yamlсо следующими параметрами:apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: <NAME> provisioner: <DRIVER-NAME> parameters: storageID: <STORAGE-NAME> csi.storage.k8s.io/fstype: <FILE-SYSTEM> poolName: <POOL-NAME> protocol: <PROTOCOL> volumeExportPort: <PORT> reclaimPolicy: Delete allowVolumeExpansion: true volumeBindingMode: WaitForFirstConsumer<STORAGE_CLASS_FILE> — Файл с конфигурацией StorageClass.
<NAME> — Уникальное имя StorageClass.
<DRIVER-NAME> — Имя драйвера CSI.
<STORAGE-NAME> — Имя конфигурации подключения к СХД. Задается пользователем. Должно быть уникально в пределах конфигурации.
<FILE-SYSTEM> — Тип файловой системы. Содержит тип файловой системы, которая будет смонтирована на блочном устройстве.
<PROTOCOL> — Протокол для подключения к ресурсу. -
Создайте ресурс с новой конфигурацией:
kubectl apply -f <STORAGE_CLASS_FILE>.yaml
3.3. Настройка Healthcheck
Чтобы настроить проверку состояния кластера, в конфигурационном файле /values.yaml для параметра healthMonitor задайте значение true:
controller:
healthMonitor:
enabled: true
По умолчанию для параметра healthMonitor выставлено значение false, проверка состояния кластера отключена.