Добавление NFS как StorageClass в K8S
Для настройки динамического провиженинга NFS в Kubernetes, вам потребуется выполнить несколько шагов. Это включает в себя установку NFS сервера, развертывание внешнего NFS провиженера в вашем кластере Kubernetes, и создание StorageClass для использования этого провиженера.
Шаг 1: Настройка NFS Сервера
-
Установка NFS сервера: На вашем сервере Linux выполните следующие команды для установки NFS:
1 2
sudo apt-get update sudo apt-get install nfs-kernel-server
-
Настройка экспорта NFS: Создайте директорию, которая будет использоваться для NFS экспорта, и настройте экспорт.
1 2 3
sudo mkdir -p /nfs/k8s sudo chown nobody:nogroup /nfs/k8s sudo chmod 777 /nfs/k8s
Добавьте следующую строку в файл
/etc/exports
, чтобы разрешить доступ к этой папке:1
/nfs/k8s *(rw,sync,no_subtree_check,no_root_squash)
Затем перезапустите службу NFS:
1 2
sudo exportfs -ra sudo systemctl restart nfs-kernel-server
Шаг 2: Развертывание NFS Client Provisioner в Kubernetes
https://kubernetes-sigs.github.io/nfs-subdir-external-provisioner
-
Добавление Helm репозитория:
1
helm repo add nfs-subdir-external-provisioner https://kubernetes-sigs.github.io/nfs-subdir-external-provisioner/
-
Установка через Helm:
Установите nfs-subdir-external-provisioner в вашем кластере Kubernetes, используя Helm:
1 2 3
helm install nfs-provisioner nfs-subdir-external-provisioner/nfs-subdir-external-provisioner \ --set nfs.server=<NFS_SERVER_IP> \ --set nfs.path=/nfs/k8s
Замените
<NFS_SERVER_IP>
на IP адрес или имя хоста вашего NFS сервера.
Примеры
Для nfs-ssd
1
2
3
4
5
6
helm install nfs-ssd-provisioner nfs-subdir-external-provisioner/nfs-subdir-external-provisioner \
--set nfs.server=10.0.0.104 \
--set nfs.path=/nfs-ssd/k8s \
--set storageClass.defaultClass=true \
--set nfs.volumeName=nfs-ssd \
--set storageClass.name=nfs-ssd
Для nfs-HDD
1
2
3
4
5
helm install nfs-hdd-provisioner nfs-subdir-external-provisioner/nfs-subdir-external-provisioner \
--set nfs.server=10.0.0.104 \
--set nfs.path=/nfs-hdd/k8s \
--set nfs.volumeName=nfs-ssd \
--set storageClass.name=nfs-hdd
Шаг 3: Создание StorageClass для NFS
-
Создайте манифест StorageClass:
1 2 3 4 5 6 7
apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: nfs annotations: storageclass.kubernetes.io/is-default-class: "true" provisioner: nfs-subdir-external-provisioner # убедитесь, что это соответствует имени, указанному при установке через Helm
-
Примените манифест:
Выполните
kubectl apply -f <имя-файла>.yaml
для создания StorageClass в вашем кластере.
После выполнения этих шагов у вас будет настроен NFS сервер, установлен NFS Client Provisioner в кластере Kubernetes и создан StorageClass, который можно использовать для динамического провиженинга персистентных томов через NFS.