Установка 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
-
Установите на worker-узлы пакеты для работы nfs-клиента. Имя пакета зависит от дистрибутива ОС, обычно это nfs-utils для RHEL-based и nfs-common для Debian-based.
-
На рабочей станции, с которой будет производиться установка, добавьте HELM репозиторий для
nfs-provisioner
:
helm repo add nfs-subdir-external-provisioner https://kubernetes-sigs.github.io/nfs-subdir-external-provisioner/
-
Выполните установку чарта, заменив в команде адрес 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
-
После завершения установки, откройте в браузере веб-интерфейс Nova Console и перейдите в раздел Workloads → Deployments и выберите
nfs-subdir-external-provisioner
. -
Перейдите на вкладку Pods и убедитесь, что поды находятся в статусе Running:
-
Перейдите на вкладку Storage → StorageClasses и убедитесь, что появился новый класс nfs-client:
-
Теперь вы можете протестировать работу данного provisioner. Для этого перейдите в раздел Home → Namespaces и нажмите «Create Namespace».
-
В открывшемся окне введите имя для пространства имен, например
nfs-test
и нажмите «Create»: -
Нажмите в правом-верхнем углу на кнопку “+” и вставьте следующий манифест для создания тестового PVC, после чего нажмите «Create»:
kind: PersistentVolumeClaim apiVersion: v1 metadata: name: test-claim namespace: nfs-test spec: storageClassName: nfs-client accessModes: - ReadWriteMany resources: requests: storage: 10Mi
-
Перейдите на страницу Storage → PersistentVolumes и убедитесь, что был создан PV для PVC из предыдущего пункта.