Установка NFS-provisioner

1. Предварительные приготовления:

1.1. На рабочей станции, с которой будет проводиться установка:

  • Установлен helm.

  • Настроен доступ к кластеру через kubectl.

1.2. На NFS-сервере:

  • Создана директория для экспорта.

  • В файле /etc/exports настроены корректные права доступа к директории для каждого worker-узла. Пример настройки доступа:
    [root@localhost ~] cat /etc/exports
    /mnt/nfstest 10.249.120.104(rw,sync,no_subtree_check) 10.249.120.105(rw,sync,no_subtree_check)

2. Процесс установки nfs-provisioner

  1. Установите на worker-узлы пакеты для работы nfs-клиента. Имя пакета зависит от дистрибутива ОС, обычно это nfs-utils для RHEL-based и nfs-common для Debian-based.

  2. На рабочей станции, с которой будет производиться установка, добавьте HELM репозиторий для nfs-provisioner:
    helm repo add nfs-subdir-external-provisioner https://kubernetes-sigs.github.io/nfs-subdir-external-provisioner/

  3. Выполните установку чарта, заменив в команде адрес nfs-сервера (nfs.server) и путь к директории (nfs.path). Вы можете изменить дополнительные параметры установки (имя для StorageClass, reclaimPolicy и т.д.), подробнее https://github.com/kubernetes-sigs/nfs-subdir-external-provisioner/tree/master/charts/nfs-subdir-external-provisioner:
    helm install nfs-subdir-external-provisioner nfs-subdir-external-provisioner/nfs-subdir-external-provisioner --set nfs.server=10.249.120.100 --set nfs.path=/mnt/nfstest --set nodeSelector."node-role\.kubernetes\.io/worker"="" --namespace nfs-subdir-external-provisioner --create-namespace

  4. После завершения установки, откройте в браузере веб-интерфейс Nova Console и перейдите в раздел WorkloadsDeployments и выберите nfs-subdir-external-provisioner.

  5. Перейдите на вкладку Pods и убедитесь, что поды находятся в статусе Running:

    installing nfs provisioner 1
  6. Перейдите на вкладку StorageStorageClasses и убедитесь, что появился новый класс nfs-client:

    installing nfs provisioner 2
  7. Теперь вы можете протестировать работу данного provisioner. Для этого перейдите в раздел HomeNamespaces и нажмите «Create Namespace».

    installing nfs provisioner 3
  8. В открывшемся окне введите имя для пространства имен, например nfs-test и нажмите «Create»:

    installing nfs provisioner 4
  9. Нажмите в правом-верхнем углу на кнопку “+” и вставьте следующий манифест для создания тестового PVC, после чего нажмите «Create»:

    kind: PersistentVolumeClaim
    apiVersion: v1
    metadata:
      name: test-claim
      namespace: nfs-test
    spec:
      storageClassName: nfs-client
      accessModes:
        - ReadWriteMany
      resources:
        requests:
          storage: 10Mi
  10. Перейдите на страницу StoragePersistentVolumes и убедитесь, что был создан PV для PVC из предыдущего пункта.