Доступно в редакциях: CE, SE, SE+, EE, CSE Pro (1.67)
Модуль предоставляет CSI для управления NFS-томами и позволяет создавать StorageClass в Kubernetes через пользовательские ресурсы Kubernetes NFSStorageClass
.
Создание StorageClass для CSI-драйвера nfs.csi.k8s.io
пользователем запрещено.
Системные требования и рекомендации
Требования
- Используйте стоковые ядра, поставляемые вместе с поддерживаемыми дистрибутивами;
- Убедитесь в наличии развернутого и настроенного NFS-сервера;
- Для поддержки RPC-with-TLS включите в ядре Linux опции
CONFIG_TLS
иCONFIG_NET_HANDSHAKE
.
Рекомендации
Чтобы поды модуля перезапускались при изменении параметра tlsParameters
в настройках модуля, должен быть включен модуль pod-reloader (включен по умолчанию).
Ограничения режима RPC-with-TLS
- Для политики безопасности
mtls
поддерживается только один сертификат клиента. - Один NFS-сервер не может одновременно работать в разных режимах безопасности:
tls
,mtls
и стандартный режим (без TLS). - На узлах кластера не должен быть запущен демон
tlshd
, иначе он будет конфликтовать с демоном нашего модуля. Для предотвращения конфликтов при включении TLS на узлах автоматически останавливается стороннийtlshd
и отключается его автозапуск.
Быстрый старт
Все команды следует выполнять на машине, имеющей доступ к API Kubernetes с правами администратора.
Включение модуля
-
Включите модуль
csi-nfs
. Это приведет к тому, что на всех узлах кластера будет:- Зарегистрирован CSI драйвер;
- Запущены служебные поды компонентов
csi-nfs
.
kubectl apply -f - <<EOF apiVersion: deckhouse.io/v1alpha1 kind: ModuleConfig metadata: name: csi-nfs spec: enabled: true version: 1 EOF
-
Дождитесь, когда модуль перейдет в состояние
Ready
:kubectl get module csi-nfs -w
Создание StorageClass
Для создания StorageClass необходимо использовать ресурс NFSStorageClass. Пример создания ресурса:
kubectl apply -f -<<EOF
apiVersion: storage.deckhouse.io/v1alpha1
kind: NFSStorageClass
metadata:
name: nfs-storage-class
spec:
connection:
host: 10.223.187.3
share: /
nfsVersion: "4.1"
reclaimPolicy: Delete
volumeBindingMode: WaitForFirstConsumer
EOF
Для каждого PV будет создаваться каталог <директория из share>/<имя PV>
.
Проверка работоспособности модуля
Процесс проверки работоспособности модуля описан в разделе FAQ Как проверить работоспособность модуля
Выбор метода очистки тома перед удалением PV
На удаляемом томе могут остаться файлы с пользовательскими данными. Эти файлы будут удалены и не будут доступны другим пользователям через NFS.
Однако данные удаленных файлов могут оказаться доступными другим клиентам, если сервер предоставит доступ к своему хранилищу на уровне блочных устройств.
Выбрать метод очистки тома перед удалением поможет параметр volumeCleanup
.
Внимание. Эта опция не влияет на файлы, уже удаленные клиентским приложением.
Внимание. Эта опция влияет только на команды отправляемые по протоколу NFS. Проведение этих команд на стороне сервера определено:
- сервисом NFS сервера;
- файловой системой;
- уровнем блочных устройств и их виртуализации (например LVM);
- самими физическими устройствами.
Убедитесь в доверенности сервера. Не отправляйте деликатные данные на сервера, в которых нет уверенности.
Метод SinglePass
Используется, если для параметра volumeCleanup
задано значение RandomFillSinglePass
.
Содержимое файлов переписывается случайной последовательностью перед удалением. Случайная последовательность передается по сети.
Метод ThreePass
Используется, если для параметра volumeCleanup
задано значение RandomFillThreePass
.
Содержимое файлов трижды переписывается случайной последовательностью перед удалением. Три случайных последовательности передаются по сети.
Метод Discard
Используется, если для параметра volumeCleanup
задано значение Discard
.
Многие файловые системы реализуют поддержку твердотельных накопителей, позволяя освободить место, занятое файлом, на блочном уровне без записи новых данных для увеличения срока службы твердотельного накопителя. Однако не все накопители гарантируют недоступность данных освобожденных блоков.
Если для volumeCleanup
установлено значение Discard
, содержимое файлов помечается как свободное через системный вызов falloc
с флагом FALLOC_FL_PUNCH_HOLE
. Файловая система освободит полностью используемые файлом блоки, через вызов blkdiscard
, а остальное место будет перезаписано нулями.
Преимущества этого метода:
- объем трафика не зависит от размера файлов, а только от их количества;
- метод может обеспечить недоступность старых данных при некоторых конфигурациях сервера;
- работает как для жестких дисков, так и для твердотельных накопителей;
- позволяет увеличить время жизни твердотельного накопителя.