Модуль NFS оператора (shturval-nfs-csi)
На этой странице
О сервисе
| Параметр | Значение |
|---|---|
| Название в интерфейсе | Модуль NFS оператора |
| Системное название (идентификатор) | shturval-nfs-csi |
| Назначение в кластере | Динамическое создание PersistentVolume из NFS-шары по запросу (PersistentVolumeClaim); NFS Provisioner. |
| Критический | Нет |
| Публичный репозиторий | NFS subdir external provisioner |
| Зависимости | shturval-networking |
| Неймспейс | nfs |
Назначение
shturval-nfs-csi — драйвер NFS CSI (NFS Provisioner). Обеспечивает статическое и динамическое предоставление PersistentVolume на основе NFS и совместный доступ к данным нескольким приложениям.
По умолчанию в кластере управления модуль устанавливается в отключённом состоянии; в клиентские кластеры не устанавливается. Для установки в клиентский кластер: Доступные чарты → чарт shturval-nfs-csi → Установить (рекомендуемый неймспейс — nfs).
Обратите внимание! на узлах кластера должен быть установлен NFS-клиент (nfs-utils для RPM, nfs-common для DEB).
Astra Linux до 1.7.6 (включительно): при использовании NFS Provisioner возможна утечка памяти и OOM. Варианты:
- В customvalues задайте монтирование с NFSv3 (
nfsvers=3вmountOptionsStorageClass) — см. пример ниже. - Обновите ОС на узлах до 1.7.7 и новее по документации Astra Linux.
У NFSv4.1 в ряде сборок также наблюдались повышенные накладные расходы; при проблемах со стабильностью предпочтительнее nfsvers=3, если это допустимо для вашей инфраструктуры.
После обновления ОС на шаблонах узлов обновите шаблоны виртуальных машин в используемом провайдере инфраструктуры (vSphere, oVirt, OpenStack и т.д.), чтобы новые узлы получали актуальные образы.
Debian: после перезагрузки worker-узла PVC на NFS может не смонтироваться: служба rpc.statd не запущена, а при монтировании с удалённой блокировкой файлов (типично для NFSv3) она требуется.
- В customvalues сервиса
shturval-nfs-csiдобавьте опциюnolockвmountOptionsStorageClass — она отключает удалённую блокировку файлов (блокировки остаются локальными на узле). См. пример ниже. - Тома, созданные до изменения StorageClass, получают
mountOptionsиз PersistentVolume, а не из StorageClass. Отредактируйте соответствующие PV и вручную добавьтеnolockвspec.mountOptions(например,kubectl edit pv <имя-pv>).
Пример ошибки монтирования после перезагрузки узла
Warning FailedMount ... kubelet MountVolume.SetUp failed for volume "pvc-..." :
rpc error: code = Internal desc = mount failed: exit status 32
...
Output: mount.nfs: rpc.statd is not running but is required for remote locking.
mount.nfs: Either use '-o nolock' to keep locks local, or start statd.
Где настраивать
Сервисы и репозитории → Установленные сервисы → найдите Модуль NFS оператора (shturval-nfs-csi) → Управлять. В блоке Спецификация сервиса задайте параметры для создания StorageClass с provisioner nfs.csi.k8s.io или добавьте StorageClass после включения модуля. Для корректной работы модуля должен быть включён Модуль управления сетями кластера (shturval-networking).
Настройка классов хранилища: StorageClasses (классы хранилища).
Кастомные настройки (customvalues)
Пример customvalues для shturval-nfs-csi
storageClass:
create: true
name: nfs-csi
parameters:
server: 10.11.12.13
share: /exported/path
mountOptions:
- nfsvers=3
- nolock # для Debian: после перезагрузки узла без nolock возможен FailedMount
reclaimPolicy: Delete
volumeBindingMode: Immediate
Как развернуть этот сервис — Как развернуть новый сервис.