Доступно в редакциях: EE
Экспериментальная версия. Функциональность может сильно измениться. Совместимость с будущими версиями не гарантируется.
Модуль предоставляет CSI для управления томами c использованием СХД с подключением через SCSI.
На данный момент поддерживается:
- обнаружение LUN через iSCSI
- создание PV из заранее подготовленных LUN
- удаление PV и обнуление данных на LUN
- подключение LUN к узлам через iSCSI
- создание multipath устройств и монтирование их в поды
- отключение LUN от узлов
Не поддерживается:
- создание LUN на СХД
- изменение размера LUN
- создание снимков
Системные требования и рекомендации
Требования
- Наличие развернутой и настроенной СХД с подключением через SCSI.
- Уникальные iqn в /etc/iscsi/initiatorname.iscsi на каждой из Kubernetes Nodes
Быстрый старт
Все команды следует выполнять на машине, имеющей доступ к API Kubernetes с правами администратора.
Включение модуля
- Включить модуль
csi-scsi-generic
. Это приведет к тому, что на всех узлах кластера будет:- зарегистрирован CSI драйвер;
- запущены служебные поды компонентов
csi-scsi-generic
.
kubectl apply -f - <<EOF
apiVersion: deckhouse.io/v1alpha1
kind: ModuleConfig
metadata:
name: csi-scsi-generic
spec:
enabled: true
version: 1
EOF
- Дождаться, когда модуль перейдет в состояние
Ready
.
kubectl get module csi-scsi-generic -w
Создание SCSITarget
Для создания SCSITarget необходимо использовать ресурс SCSITarget. Пример команд для создания такого ресурса:
kubectl apply -f -<<EOF
apiVersion: storage.deckhouse.io/v1alpha1
kind: SCSITarget
metadata:
name: hpe-3par-1
spec:
deviceTemplate:
metadata:
labels:
my-key: some-label-value
iSCSI:
auth:
login: ""
password: ""
iqn: iqn.2000-05.com.3pardata:xxxx1
portals:
- 192.168.1.1
---
apiVersion: storage.deckhouse.io/v1alpha1
kind: SCSITarget
metadata:
name: hpe-3par-2
spec:
deviceTemplate:
metadata:
labels:
my-key: some-label-value
iSCSI:
auth:
login: ""
password: ""
iqn: iqn.2000-05.com.3pardata:xxxx2
portals:
- 192.168.1.2
EOF
Обратите внимание, что в примере выше используются два SCSITarget. Таким образом можно создать несколько SCSITarget как для одного, так и для разных СХД. Это позволяет использовать multipath для повышения отказоустойчивости и производительности.
- Проверить создание объекта можно командой (Phase должен быть
Created
):
kubectl get scsitargets.storage.deckhouse.io <имя scsitarget>
Создание StorageClass
Для создания StorageClass необходимо использовать ресурс SCSIStorageClass. Пример команд для создания такого ресурса:
kubectl apply -f -<<EOF
apiVersion: storage.deckhouse.io/v1alpha1
kind: SCSIStorageClass
metadata:
name: scsi-all
spec:
scsiDeviceSelector:
matchLabels:
my-key: some-label-value
reclaimPolicy: Delete
EOF
Обратите внимание на scsiDeviceSelector
. Этот параметр позволяет выбрать SCSITarget для создания PV по меткам. В примере выше выбираются все SCSITarget с меткой my-key: some-label-value
. Эта метка будет выставлена на все девайсы, которые будут обнаружены в указанных SCSITarget.
- Проверить создание объекта можно командой (Phase должен быть
Created
):
kubectl get scsistorageclasses.storage.deckhouse.io <имя scsistorageclass>