k8s 使用 StorageClass 动态生成 NFS 类型的 PV

关于旧版

https://github.com/kubernetes-retired/external-storage/tree/master/nfs-client/deploy

Compatible with kubernetes v1.5.x, v1.6.x, v1.7.x, v1.8.x, v1.9.x, v1.10.x, v1.11.x, v1.12.x, v1.13.x, v1.14.x Requests/depends on k8s.io/* repos with version kubernetes-1.14

如上,最多支持kubernetes v1.14.x。我的kubernetes版本是v1.22.0,一开始我没注意到这个,折腾了好久。。。

新版

https://github.com/kubernetes-sigs/nfs-subdir-external-provisioner

下载master分支,里面有个deploy目录

├── class.yaml
├── deployment.yaml
├── objects(此目录这里用不到)
├── rbac.yaml
├── test-claim.yaml
└── test-pod.yaml

修改deployment.yaml

...
          image: registry.cn-hangzhou.aliyuncs.com/cuiw/k8s.gcr.io_sig-storage_nfs-subdir-external-provisioner:v4.0.2
...
            - name: NFS_SERVER
              #nfs的服务器ip
              value: 192.168.10.99
            - name: NFS_PATH
              #nfs的共享目录
              value: /nfs/data
      volumes:
        - name: nfs-client-root
          nfs:
            #nfs的服务器ip
            server: 192.168.10.99
            #nfs的共享目录
            path: /nfs/data
...

其他文件可以不改

安装

kubectl apply -f .

测试

会生成一个目录default-test-claim-pvc-e77ac9e8-da08-43ae-9c10-63c45b9674f1,里面有个SUCCESS文件,说明成功了
[root@nfsFileSystem data]# cat /nfs/data/default-test-claim-pvc-e77ac9e8-da08-43ae-9c10-63c45b9674f1/SUCCESS 

默认 StorageClass

如果安装KubeSphere,它要求默认 StorageClass

kubectl patch storageclass managed-nfs-storage -p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"true"}}}'

清除

kubectl delete -f .

参考

https://www.ibm.com/docs/zh/cloud-paks/cp-data/4.0?topic=storage-setting-up-nfs

感谢阅读这篇文章,如果你喜欢,或者遇到了问题,可以关注我的公众号