前言

nfs后端我这里使用的是TrueNAS SCALE的nfs,csi-driver-nfs使用的helm:csi-driver-nfs https://raw.githubusercontent.com/kubernetes-csi/csi-driver-nfs/master/charts

nfs设置

先创建一个单独的数据集,并且权限设置成777,打开nfs共享

image.png

image.png

image.png

点击编辑,点开高级

image.png

像这样mapuser mapgroup改成root

然后在服务- NFS 编辑

image.png

如果你是Linux,请像下面这样设置

vim /etc/exports


"/mnt/important/k8s-application"\
        *(rw,sync,no_subtree_check,no_root_squash)

部署csi-driver-nfs

来到你的k8s主机终端上

安装helm

curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3
chmod 700 get_helm.sh
./get_helm.sh

添加helm csi-driver-nfs仓库

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

创建一个目录存values.yaml

mkdir csi-driver-nfs
cd csi-driver-nfs
vim values.yaml
storageClass:
  create: true
  name: nfs-csi
  annotations:
    storageclass.kubernetes.io/is-default-class: "true"
  parameters:
    server: 10.0.0.10
    share: /mnt/important/k8s-application
    subDir:
    mountPermissions: "0"
   # csi.storage.k8s.io/provisioner-secret is only needed for providing mountOptions in DeleteVolume
   # csi.storage.k8s.io/provisioner-secret-name: "mount-options"
   # csi.storage.k8s.io/provisioner-secret-namespace: "default"
  reclaimPolicy: Delete
  volumeBindingMode: Immediate
  mountOptions:
    - nfsvers=4.1

根据自己的IP和路径修改

  • 10.0.0.10是我的True NAS
  • /mnt/important/k8s-application 是我的共享路径

创建一个命名空间安装csi-driver-nfs

kubectl create ns csi-driver-nfs

安装csi-driver-nfs

helm install csi-driver-nfs csi-driver-nfs/csi-driver-nfs -n csi-driver-nfs -f values.yaml

等待安装,查看storage class是否存在

kubectl -n csi-driver-nfs get pod
kubectl get storageclass

image.png

像我这样回现就是可以了,也可以自己创建一个pod测试,我就不测试了

最后修改:2025 年 04 月 04 日
感谢您的支持