Csi-driver-nfs#

Csi-driver-nfs - это официальный CSI-драйвер (Container Storage Interface), позволяющий подключать NFS-серверы (сетевые файловые системы) в виде томов к pod.

Основные задачи и возможности
  • Монтирование NFS-серверов: Позволяет использовать существующие NFS-серверы как источники постоянного хранилища (Persistent Volumes) в кластере.

  • Поддержка динамического развертывания: При использовании с NFS-сервером и подходящим StorageClass можно автоматически создавать и управлять томами.

  • Работа с PersistentVolume и PersistentVolumeClaim: Интегрируется в стандартную систему хранения, позволяя легко подключать NFS-тома через PVC.

  • Кроссплатформенная совместимость: Поддерживает NFS версий 3 и 4, что обеспечивает совместимость с большинством NFS-серверов.

  • Простота установки и использования: Легко разворачивается с помощью Helm или манифестов и не требует сложной настройки.

  • Поддержка read-write и read-only режимов: Позволяет настраивать доступ к файловым системам в зависимости от требований приложения.

Примечание

Csi-driver-nfs не является инструментом по умолчанию Storage. Его можно установить как инструмент (Tool), или явно включить в список spec.tools при установке компонента Storage.

Конфигурация values#

Значения можно переопределить, отредактировав инструмент с именем csi-driver-nfs и указав нужные values в поле spec.values. Общее описание конфигурации values для инструментов описано в разделе «Конфигурации инструментов дополнительных компонентов».

customLabels – дополнительные метки#

Параметр

Описание

Значение по умолчанию

customLabels

Метки, добавляемые ко всем создаваемым ресурсам

{}

image – параметры контейнерного образа#

Параметр

Описание

Значение по умолчанию

image.baseRepo

Базовый репозиторий образов для всех компонентов. Формируется из registry, repository и dappVersion

'{{ .Values.global.image.registry }}/{{ .Values.global.image.repository }}/{{ .Values.global.dappVersion }}'

image.nfs.repository

Репозиторий образа CSI NFS

'{{ .Values.global.image.registry }}/{{ .Values.global.image.repository }}/{{ .Values.global.dappVersion }}/dapp-csi-driver-nfs/nfsplugin'

image.nfs.tag

Тег образа CSI NFS

v4.13.4

image.nfs.pullPolicy

Политика загрузки образа CSI NFS

IfNotPresent

image.csiProvisioner.repository

Репозиторий образа CSI Provisioner

'{{ .Values.global.image.registry }}/{{ .Values.global.image.repository }}/{{ .Values.global.dappVersion }}/dapp-csi-external-provisioner/csi-provisioner'

image.csiProvisioner.tag

Тег образа CSI Provisioner

v6.1.1

image.csiProvisioner.pullPolicy

Политика загрузки образа CSI Provisioner

IfNotPresent

image.csiResizer.repository

Репозиторий образа CSI Resizer

'{{ .Values.global.image.registry }}/{{ .Values.global.image.repository }}/{{ .Values.global.dappVersion }}/dapp-csi-external-resizer/csi-resizer'

image.csiResizer.tag

Тег образа CSI Resizer

v2.2.1

image.csiResizer.pullPolicy

Политика загрузки образа CSI Resizer

IfNotPresent

image.csiSnapshotter.repository

Репозиторий образа CSI Snapshotter

'{{ .Values.global.image.registry }}/{{ .Values.global.image.repository }}/{{ .Values.global.dappVersion }}/dapp-csi-snapshotter/csi-snapshotter'

image.csiSnapshotter.tag

Тег образа CSI Snapshotter

v8.6.0

image.csiSnapshotter.pullPolicy

Политика загрузки образа CSI Snapshotter

IfNotPresent

image.livenessProbe.repository

Репозиторий образа CSI Liveness Probe

'{{ .Values.global.image.registry }}/{{ .Values.global.image.repository }}/{{ .Values.global.dappVersion }}/dapp-csi-livenessprobe/livenessprobe'

image.livenessProbe.tag

Тег образа CSI Liveness Probe

v2.19.0

image.livenessProbe.pullPolicy

Политика загрузки образа CSI Liveness Probe

IfNotPresent

image.nodeDriverRegistrar.repository

Репозиторий образа Node Driver Registrar

'{{ .Values.global.image.registry }}/{{ .Values.global.image.repository }}/{{ .Values.global.dappVersion }}/dapp-csi-node-driver-registrar/csi-node-driver-registrar'

image.nodeDriverRegistrar.tag

Тег образа Node Driver Registrar

v2.17.0

image.nodeDriverRegistrar.pullPolicy

Политика загрузки образа Node Driver Registrar

IfNotPresent

image.externalSnapshotter.repository

Репозиторий образа контроллера Snapshot

'{{ .Values.global.image.registry }}/{{ .Values.global.image.repository }}/{{ .Values.global.dappVersion }}/dapp-csi-snapshotter/snapshot-controller'

image.externalSnapshotter.tag

Тег образа контроллера Snapshot

v8.6.0

image.externalSnapshotter.pullPolicy

Политика загрузки образа контроллера Snapshot

IfNotPresent

serviceAccount – настройки сервисного аккаунта#

Параметр

Описание

Значение по умолчанию

serviceAccount.create

Создание ServiceAccount для компонентов. При значении true создаются автоматически; при false используйте собственные

true

serviceAccount.controller

Имя ServiceAccount для контроллера

csi-nfs-controller-sa

serviceAccount.node

Имя ServiceAccount для узлов

csi-nfs-node-sa

rbac – настройки RBAC (управление доступом на основе ролей)#

Параметр

Описание

Значение по умолчанию

rbac.create

Активация автоматического создания ресурсов RBAC

true

rbac.name

Имя для ресурсов RBAC

nfs

driver – настройки CSI-драйвера#

Параметр

Описание

Значение по умолчанию

driver.name

Имя CSI-драйвера

nfs.csi.k8s.io

driver.mountPermissions

Права доступа к точке монтирования

0

feature – настройки функциональности драйвера#

Параметр

Описание

Значение по умолчанию

feature.enableFSGroupPolicy

Включение политики группы файловой системы для pod

true

feature.enableInlineVolume

Включение временных встроенных Volume

false

feature.propagateHostMountOptions

Передача опций монтирования хоста

false

kubeletDir – путь к каталогу kubelet#

Параметр

Описание

Значение по умолчанию

kubeletDir

Путь к рабочему каталогу kubelet на узле. Используется CSI driver для регистрации и монтирования

/var/lib/kubelet

controller – настройки контроллера#

Параметр

Описание

Значение по умолчанию

controller.name

Имя контроллера

csi-nfs-controller

controller.replicas

Количество реплик pod контроллера

1

controller.revisionHistoryLimit

Количество предыдущих версий ресурса, сохраняемых для отката

10

controller.strategyType

Стратегия обновления ресурса.
Возможные значения: Recreate, RollingUpdate

Recreate

controller.runOnMaster

Запуск на узле master.
Возможные значения: true, false

false

controller.runOnControlPlane

Запуск на узле control plane.
Возможные значения: true, false

false

controller.enableSnapshotter

Включение Snapshotter.
Возможные значения: true, false

true

controller.useTarCommandInSnapshot

Использование команды tar для сохранения снепшотов.
Возможные значения: true, false

false

controller.enableSnapshotCompression

Включение сжатия данных при создании снепшотов

true

controller.livenessProbe.healthPort

Порт для проверок работоспособности

29652

controller.logLevel

Уровень логирования

5

controller.workingMountDir

Рабочий каталог для монтирования

/tmp

controller.dnsPolicy

DNS-политика.
Возможные значения: Default, ClusterFirstWithHostNet, ClusterFirst

ClusterFirstWithHostNet

controller.defaultOnDeletePolicy

Политика удаления данных.
Возможные значения: delete, retain

delete

controller.affinity

Настройки правила привязки (affinity и anti-affinity) pod к узлам

{}

controller.nodeSelector

Селектор узлов для планирования pod

{}

controller.priorityClassName

Имя PriorityClass для pod

system-cluster-critical

controller.tolerations

Toleration для размещения pod на узлах с ограничениями (taints)

- key: "node-role.kubernetes.io/master"
  operator: "Exists"
  effect: "NoSchedule"
- key: "node-role.kubernetes.io/controlplane"
  operator: "Exists"
  effect: "NoSchedule"
- key: "node-role.kubernetes.io/control-plane"
  operator: "Exists"
  effect: "NoSchedule"
- key: "CriticalAddonsOnly"
  operator: "Exists"
  effect: "NoSchedule"

controller.resources.csiProvisioner.limits.memory

Ограничение ресурсов памяти для контейнера CSI Provisioner

400Mi

controller.resources.csiProvisioner.requests.cpu

Запрашиваемые ресурсы CPU для контейнера CSI Provisioner

10m

controller.resources.csiProvisioner.requests.memory

Запрашиваемые ресурсы памяти для контейнера CSI Provisioner

20Mi

controller.resources.csiResizer.limits.memory

Ограничение ресурсов памяти для контейнера CSI Resizer

400Mi

controller.resources.csiResizer.requests.cpu

Запрашиваемые ресурсы CPU для контейнера CSI Resizer

10m

controller.resources.csiResizer.requests.memory

Запрашиваемые ресурсы памяти для контейнера CSI Resizer

20Mi

controller.resources.csiSnapshotter.limits.memory

Ограничение ресурсов памяти для контейнера CSI Snapshotter

200Mi

controller.resources.csiSnapshotter.requests.cpu

Запрашиваемые ресурсы CPU для контейнера CSI Snapshotter

10m

controller.resources.csiSnapshotter.requests.memory

Запрашиваемые ресурсы памяти для контейнера CSI Snapshotter

20Mi

controller.resources.livenessProbe.limits.memory

Ограничение ресурсов памяти для контейнера проверки работоспособности

100Mi

controller.resources.livenessProbe.requests.cpu

Запрашиваемые ресурсы CPU для контейнера проверки работоспособности

10m

controller.resources.livenessProbe.requests.memory

Запрашиваемые ресурсы памяти для контейнера проверки работоспособности

20Mi

controller.resources.nfs.limits.memory

Ограничение ресурсов памяти для контейнера NFS

200Mi

controller.resources.nfs.requests.cpu

Запрашиваемые ресурсы CPU для контейнера NFS

10m

controller.resources.nfs.requests.memory

Запрашиваемые ресурсы памяти для контейнера NFS

20Mi

nodeDriverRegistrar – параметры node driver registrar#

Параметр

Описание

Значение по умолчанию

nodeDriverRegistrar.timeout

Тайм-аут node driver registrar в секундах

60

nodeDriverRegistrar.healthPort

Порт проверки состояния node driver registrar

19809

nodeDriverRegistrar.livenessProbe.enabled

Включение проверки работоспособности для контейнера node driver registrar

true

nodeDriverRegistrar.livenessProbe.initialDelaySeconds

Задержка в секундах перед первой проверкой работоспособности

20

nodeDriverRegistrar.livenessProbe.timeoutSeconds

Тайм-аут ожидания проверки работоспособности

10

nodeDriverRegistrar.livenessProbe.periodSeconds

Интервал в секундах между проверками работоспособности

5

nodeDriverRegistrar.livenessProbe.failureThreshold

Количество неудачных попыток до перевода контейнера в статус NotReady

2

node – настройки узла#

Параметр

Описание

Значение по умолчанию

node.name

Имя узла CSI NFS

csi-nfs-node

node.dnsPolicy

DNS-политика.
Возможные значения: Default, ClusterFirstWithHostNet, ClusterFirst

ClusterFirstWithHostNet

node.revisionHistoryLimit

Количество предыдущих версий ресурса, сохраняемых для отката

10

node.maxUnavailable

Максимальное количество недоступных узлов

1

node.logLevel

Уровень логирования

5

node.livenessProbe.healthPort

Порт для проверки работоспособности узла

29653

node.affinity

Настройки правила привязки (affinity и anti-affinity) pod к узлам

{}

node.nodeSelector

Селектор узлов для планирования pod

{}

node.priorityClassName

Имя PriorityClass для pod

system-cluster-critical

node.tolerations

Toleration для размещения pod на узлах с ограничениями (taints).
Пример конфигурации:

- operator: "Exists"
- operator: "Exists"

node.resources.livenessProbe.limits.memory

Ограничение ресурсов памяти для контейнера проверки работоспособности

100Mi

node.resources.livenessProbe.requests.cpu

Запрашиваемые ресурсы CPU для контейнера проверки работоспособности

10m

node.resources.livenessProbe.requests.memory

Запрашиваемые ресурсы памяти для контейнера проверки работоспособности

20Mi

node.resources.nodeDriverRegistrar.limits.memory

Ограничение ресурсов памяти для контейнера node driver registrar

100Mi

node.resources.nodeDriverRegistrar.requests.cpu

Запрашиваемые ресурсы CPU для контейнера node driver registrar

10m

node.resources.nodeDriverRegistrar.requests.memory

Запрашиваемые ресурсы памяти для контейнера node driver registrar

20Mi

node.resources.nfs.limits.memory

Ограничение ресурсов памяти для контейнера NFS

300Mi

node.resources.nfs.requests.cpu

Запрашиваемые ресурсы CPU для контейнера NFS

10m

node.resources.nfs.requests.memory

Запрашиваемые ресурсы памяти для контейнера NFS

20Mi

externalSnapshotter – настройки внешнего Snapshotter#

Параметр

Описание

Значение по умолчанию

externalSnapshotter.enabled

Включение внешнего Snapshotter

true

externalSnapshotter.name

Имя контроллера Snapshotter

snapshot-controller

externalSnapshotter.priorityClassName

Имя PriorityClass для pod Snapshotter

system-cluster-critical

externalSnapshotter.deletionPolicy

Политика удаления.
Возможные значения: Delete, Retain

Delete

externalSnapshotter.controller.replicas

Количество реплик pod контроллера Snapshotter

1

externalSnapshotter.controller.revisionHistoryLimit

Количество предыдущих версий ресурса, сохраняемых для отката

10

externalSnapshotter.resources.limits.memory

Ограничение ресурсов памяти для контейнера Snapshotter

300Mi

externalSnapshotter.resources.requests.cpu

Запрашиваемые ресурсы CPU для контейнера Snapshotter

10m

externalSnapshotter.resources.requests.memory

Запрашиваемые ресурсы памяти для контейнера Snapshotter

20Mi

volumeSnapshotClass – настройки VolumeSnapshotClass#

Параметр

Описание

Значение по умолчанию

volumeSnapshotClass.create

Создание VolumeSnapshotClass

true

volumeSnapshotClass.name

Имя VolumeSnapshotClass

csi-nfs-snapshot-class

volumeSnapshotClass.deletionPolicy

Политика удаления для томов.
Возможные значения: Delete, Retain

Delete

imagePullSecrets – Secret для загрузки образов#

Параметр

Описание

Значение по умолчанию

imagePullSecrets

Список Secret для загрузки образа контейнера из приватных реестров

[]

storageClass – настройки класса хранилища#

Параметр

Описание

Значение по умолчанию

storageClass.create

Создание StorageClass

true

storageClass.name

Имя StorageClass

nfs-csi

storageClass.parameters.server

Адрес NFS-сервера

nfs-server.dapp-storage.svc.cluster.local

storageClass.parameters.share

Путь общей папки на NFS-сервере

/

storageClass.parameters.subDir

Подкаталог, если используется

""

storageClass.parameters.mountPermissions

Права монтирования

"0"

storageClass.reclaimPolicy

Политика удаления.
Возможные значения: Delete, Retain

Delete

storageClass.volumeBindingMode

Режим связывания томов.
Возможные значения: Immediate, WaitForFirstConsumer

Immediate

storageClass.mountOptions

Опции монтирования.
Пример конфигурации:

- nfsvers=4.1
- nfsvers=4.1