Csi-driver-nfs#

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

Основные задачи и возможности
  • Монтирование NFS-серверов:

    Позволяет использовать существующие NFS-серверы как источники постоянного хранилища (Persistent Volumes) в кластере Kubernetes.

  • Поддержка динамического развертывания:

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

  • Работа с PersistentVolume и PersistentVolumeClaim:

    Интегрируется в стандартную систему хранения Kubernetes, позволяя легко подключать 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 для инструментов описано в разделе «Конфигурации инструментов дополнительных компонентов».

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.11.0

image.nfs.pullPolicy

Политика получения образа (IfNotPresent, Always, Never)

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

v5.3.0

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

v1.14.0

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.2.1

image.csiSnapshotter.pullPolicy

Политика получения образа для CSI Snapshotter

IfNotPresent

image.livenessProbe.repository

Репозиторий образа для liveness probe, проверяющего состояние компонентов

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

image.livenessProbe.tag

Тег образа для liveness probe

v2.16.0

image.livenessProbe.pullPolicy

Политика получения образа для 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.14.0

image.nodeDriverRegistrar.pullPolicy

Политика получения образа для Node driver registrar

IfNotPresent

serviceAccount - настройки serviceAccounts для различных компонентов#

Параметр

Описание

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

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/false)

true

rbac.name

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

nfs

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

Параметр

Описание

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

driver.name

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

nfs.csi.k8s.io

driver.mountPermissions

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

0

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

Параметр

Описание

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

feature.enableFSGroupPolicy

Включение политики FSGroup (true/false)

true

feature.enableInlineVolume

Включение inline volume (true/false)

false

feature.propagateHostMountOptions

Передача опций монтирования хоста (true/false)

false

feature.kubeletDir

Каталог Kubelet

/var/lib/kubelet

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

Параметр

Описание

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

controller.name

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

csi-nfs-controller

controller.replicas

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

1

controller.strategyType

Стратегия обновления (Recreate/RollingUpdate)

Recreate

controller.runOnMaster

Запуск на мастере (true/false)

false

controller.runOnControlPlane

Запуск на control-plane (true/false)

false

controller.enableSnapshotter

Включение snapshotter (true/false)

true

controller.useTarCommandInSnapshot

Использование tar для снимков (true/false)

false

controller.livenessProbe.healthPort

Порт для liveness probe

29652

controller.livenessProbe.logLevel

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

5

controller.livenessProbe.workingMountDir

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

/tmp

controller.dnsPolicy

DNS-политика (Default, ClusterFirstWithHostNet, ClusterFirst)

ClusterFirstWithHostNet

controller.defaultOnDeletePolicy

Политика удаления тома (delete/retain)

delete

controller.affinity

Настройки affinity

{}

controller.nodeSelector

Настройка nodeSelector

{}

controller.priorityClassName

Класс приоритета

system-cluster-critical

controller.tolerations

Толерантности к taint

- 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

Лимит памяти для liveness probe

100Mi

controller.resources.livenessProbe.requests.cpu

Запрос CPU для liveness probe

10m

controller.resources.livenessProbe.requests.memory

Запрос памяти для liveness probe

20Mi

controller.resources.nfs.limits.memory

Лимит памяти для NFS

200Mi

controller.resources.nfs.requests.cpu

Запрос CPU для NFS

10m

controller.resources.nfs.requests.memory

Запрос памяти для NFS

20Mi

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

Параметр

Описание

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

node.name

Имя узла CSI NFS

csi-nfs-node

node.dnsPolicy

DNS-политика для узла (Default, ClusterFirstWithHostNet, ClusterFirst)

ClusterFirstWithHostNet

node.maxUnavailable

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

1

node.logLevel

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

5

node.livenessProbe.healthPort

Порт для liveness probe узла

29653

node.affinity

Настройки affinity для узла

{}

node.nodeSelector

nodeSelector для узла

{}

node.priorityClassName

Класс приоритета для узла

system-cluster-critical

node.tolerations

Толерантности для узла

- operator: "Exists"

node.resources - ресурсы узла#

Параметр

Описание

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

node.resources.livenessProbe.limits.memory

Лимит памяти для liveness probe

100Mi

node.resources.livenessProbe.requests.cpu

Запрос CPU для liveness probe

10m

node.resources.livenessProbe.requests.memory

Запрос памяти для liveness probe

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/false)

true

externalSnapshotter.name

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

snapshot-controller

externalSnapshotter.priorityClassName

Класс приоритета для Snapshotter

system-cluster-critical

externalSnapshotter.deletionPolicy

Политика удаления (Delete/Retain)

Delete

externalSnapshotter.controller.replicas

Число реплик контроллера Snapshotter

1

externalSnapshotter.controller.resources.limits.memory

Лимит памяти Snapshotter

300Mi

externalSnapshotter.controller.resources.requests.cpu

Запрос CPU Snapshotter

10m

externalSnapshotter.controller.resources.requests.memory

Запрос памяти Snapshotter

20Mi

customResourceDefinitions - настройки CRD#

Параметр

Описание

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

customResourceDefinitions.enabled

Создавать CRD VolumeSnapshot, VolumeSnapshotClass, VolumeSnapshotContent (true/false)

true

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

Параметр

Описание

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

volumeSnapshotClass.create

Создавать VolumeSnapshotClass (true/false)

false

volumeSnapshotClass.name

Имя VolumeSnapshotClass

csi-nfs-snapclass

volumeSnapshotClass.deletionPolicy

Политика удаления для томов (Delete/Retain)

Delete

imagePullSecrets - настройки секретов для pull images#

Параметр

Описание

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

imagePullSecrets

Список секретов для pull из приватных реестров

[]

storageClass - настройки StorageClass#

Параметр

Описание

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

storageClass.create

Создавать StorageClass (true/false)

true

storageClass.name

Имя StorageClass

nfs-csi

storageClass.parameters.server

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

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

storageClass.parameters.share

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

/

storageClass.parameters.subDir

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

null

storageClass.parameters.mountPermissions

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

0

storageClass.reclaimPolicy

Политика удаления (Delete/Retain)

Delete

storageClass.volumeBindingMode

Режим связывания томов (Immediate/WaitForFirstConsumer)

Immediate

storageClass.mountOptions

Опции монтирования, например nfsvers=4.1

nfsvers=4.1