Доступно в редакциях: CE, SE, SE+, EE, CSE Pro (1.64)

Подробнее см. в разделе Условия и цены.

Deckhouse поддерживает работу с NFS (Network File System), обеспечивая возможность подключения и управления сетевыми файловыми хранилищами в Kubernetes. Это позволяет организовать централизованное хранение данных и совместное использование файлов между контейнерами.

На этой странице представлены инструкции по подключению NFS-хранилища в Deckhouse, настройке соединения, созданию StorageClass, а также проверке работоспособности системы.

Включение модуля

Для управления томами на основе протокола NFS (Network File System) используется модуль csi-nfs, позволяющий создавать StorageClass через создание пользовательских ресурсов NFSStorageClass. Чтобы включить модуль выполните команду:

1d8 k apply -f - <<EOF
2apiVersion: deckhouse.io/v1alpha1
3kind: ModuleConfig
4metadata:
5  name: csi-nfs
6spec:
7  enabled: true
8  version: 1
9EOF

Дождитесь, когда модуль csi-nfs перейдет в состояние Ready. Проверить состояние можно, выполнив следующую команду:

1d8 k get module csi-nfs -w

В результате будет выведена информация о модуле csi-nfs:

1NAME      WEIGHT   STATE     SOURCE     STAGE   STATUS
2csi-nfs   910      Enabled   Embedded           Ready

Создание StorageClass

Для создания StorageClass необходимо использовать ресурс NFSStorageClass. Ручное создание ресурса StorageClass без NFSStorageClass может привести к ошибкам. Пример команды для создания класса хранения на базе NFS:

1d8 k apply -f - <<EOF
2apiVersion: storage.deckhouse.io/v1alpha1
3kind: NFSStorageClass
4metadata:
5  name: nfs-storage-class
6spec:
7  connection:
8    # Адрес NFS сервера.
9    host: 10.223.187.3
10    # Путь к точке монтирования на NFS сервере.
11    share: /
12    # Версия NFS сервера.
13    nfsVersion: "4.1"
14  # Режим поведения при удалении PVC.
15  # Допустимые значения:
16  # - Delete (при удалении PVC будет удален PV и данные на NFS-сервере);
17  # - Retain (при удалении PVC не будут удалены PV и данные на NFS-сервере, потребуют ручного удаления пользователем).
18  # [Подробнее...](https://kubernetes.io/docs/concepts/storage/persistent-volumes/#reclaiming)
19  reclaimPolicy: Delete
20  # Режим создания тома.
21  # Допустимые значения: "Immediate", "WaitForFirstConsumer". 
22  # [Подробнее...](https://kubernetes.io/docs/concepts/storage/storage-classes/#volume-binding-mode)
23  volumeBindingMode: WaitForFirstConsumer
24EOF

Проверьте, что созданный ресурс NFSStorageClass перешел в состояние Created, выполнив следующую команду:

1d8 k get NFSStorageClass nfs-storage-class -w

В результате будет выведена информация о созданном ресурсе NFSStorageClass:

1NAME                PHASE     AGE
2nfs-storage-class   Created   1h

Убедитесь, что был создан соответствующий StorageClass, выполнив следующую команду:

1d8 k get sc nfs-storage-class

В результате будет выведена информация о созданном StorageClass:

1NAME                PROVISIONER      RECLAIMPOLICY   VOLUMEBINDINGMODE      ALLOWVOLUMEEXPANSION   AGE
2nfs-storage-class   nfs.csi.k8s.io   Delete          WaitForFirstConsumer   true                   1h

Если StorageClass с именем nfs-storage-class появился, значит настройка модуля csi-nfs завершена. Теперь пользователи могут создавать PersistentVolume, указывая StorageClass с именем nfs-storage-class. Для каждого ресурса PersistentVolume будет создаваться каталог <директория из share>/<имя PersistentVolume>.

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

Для того чтобы проверить работоспособность модуля csi-nfs, необходимо проверить состояние подов в пространстве имен d8-csi-nfs. Все поды должны быть в состоянии Running или Completed, поды csi-nfs должны быть запущены на всех узлах. Проверить работоспособность модуля можно с помощью следующей команды:

1d8 k -n d8-csi-nfs get pod -owide -w

В результате будет выведен список всех подов в пространстве имен d8-csi-nfs:

1NAME                             READY   STATUS    RESTARTS   AGE   IP             NODE       NOMINATED NODE   READINESS GATES
2controller-547979bdc7-5frcl      1/1     Running   0          1h    10.111.2.84    master     <none>           <none>
3csi-controller-5c6bd5c85-wzwmk   6/6     Running   0          1h    172.18.18.50   master     <none>           <none>
4webhooks-7b5bf9dbdb-m5wxb        1/1     Running   0          1h    10.111.0.16    master     <none>           <none>
5csi-nfs-8mpcd                    2/2     Running   0          1h    172.18.18.50   master     <none>           <none>
6csi-nfs-n6sks                    2/2     Running   0          1h    172.18.18.51   worker-1   <none>           <none>
7csi-nfs-6nqq8                    2/2     Running   0          1h    172.18.18.52   worker-2   <none>           <none>