Устанавливаем NFS CSI драйвер для Kubernetes

Для того, что бы контейнеры могли где то сохранять свои файлы (и иметь доступ к одним и тем же файлам из нескольких контейнеров) - необходимо дисковое хранилище. В Kubernetes их несколько разных видов.
Тут пример установки поддержки дискового хранилища на основе NFS сервера.

Предполагается, что настроенный NFS сервер у нас уже имеется, и его ip адрес: 192.168.254.76

Сначала, на всех нодах кластера установим nfs клиента:

sudo apt install nfs-common -y

Устанавливаем через Helm:

helm repo add csi-driver-nfs https://raw.githubusercontent.com/kubernetes-csi/csi-driver-nfs/master/charts
helm repo update

Смотрим, какая версия самая свежая:

helm search repo -l csi-driver-nfs

Устанавливаем ее:

helm install csi-driver-nfs csi-driver-nfs/csi-driver-nfs --namespace kube-system --version <version>

Создадим файл storageclass.yaml в котором опишем наш StorageClass:

---
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: nfs-storage
  annotations:
    storageclass.kubernetes.io/is-default-class: "true"
provisioner: nfs.csi.k8s.io
parameters:
  server: 192.168.254.76
  share: /x/storage
reclaimPolicy: Delete
volumeBindingMode: Immediate
mountOptions:
  - nfsvers=4.1

и применим:

kubectl apply -f storageclass.yaml

Попробуем теперь создать PersistentVolumeClaim в автоматическом режиме, без PersistentVolume (Dynamic Provisioning). Создадим файл pvc-test.yaml следующего содержания (с нужными параметрами):

---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: pvc-nfs-dynamic
  namespace: default
spec:
  accessModes:
    - ReadWriteMany
  resources:
    requests:
      storage: 10Gi

И применим его:

kubectl apply -f pvc-test.yaml

Проверяем:

kubectl get pv
NAMECAPACITYACCESS MODESRECLAIM POLICYSTATUSCLAIMSTORAGECLASSVOLUMEATTRIBUTESCLASSREASONAGE
pvc-29518075-f07d-4b88-a90e-b2052d7a7bd6 10Gi RWX Retain Bound default/pvc-nfs-dynamic nfs-storage <unset> 5s
kubectl get pvc
NAMESTATUSVOLUMECAPACITYACCESS MODESSTORAGECLASSVOLUMEATTRIBUTESCLASSAGE
pvc-nfs-dynamic Bound pvc-29518075-f07d-4b88-a90e-b2052d7a7bd6 10Gi RWX nfs-storage <unset> 9s

Самое время узнать, как себя чувствует только что установленный кластер kubernetes настроив мониторинг.