暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Helm部署nfs-client-provisioner实现NFS动态创建PV

ItTalk 2019-09-24
1585

概述

由于k8s 内部 provisioner 支持列表中,不支持 NFS ,我们要使用 provisioner 就需要使用外部 provisioner。这里可参照https://github.com/kubernetes-incubator/external-storage/tree/master/nfs-client文档来创建。我们这里就直接使用helm charts。具体的文档参见:

https://hub.helm.sh/charts/stable/nfs-client-provisioner

部署准备

在生产环境中,我们这边选用阿里云的NAS服务。具体开通的方法,这里省略。申请到的nfs地址形如:xxxx.cn-shenzhen.nas.aliyuncs.com,另外,我根据不同的namespace在nfs服务器创建了不同的目录(如:default,test,prod等),方便在不同的namespace挂载不同的路径。

部署方式

  • fetch到本地,并解压

  1. helm fetch stable/nfs-client-provisioner

  2. tar -xf nfs-client-provisioner-1.2.6.tgz

  • 修改values.yaml,主要设置以下几个选项,其它一些选项,如storageClass.reclaimPolicy可根据情况自行定制 

            特别注意: mountOptions挂载参数是数组形式

  1. nfs:

  2. server: xxxx.cn-shenzhen.nas.aliyuncs.com

  3. path: default

  4. mountOptions:

  5. - vers=3

  6. - nolock

  7. - proto=tcp

  8. - noresvport

  • 通过helm安装

  1. #执行如下安装命令:

  2. helm install -f values.yaml --name default-nfs-provisioner stable/nfs-client-provisioner

  • 检查

  1. #主要看sc是否创建

  2. kubectl get sc

  3. NAME PROVISIONER AGE

  4. nfs-client cluster.local/default-nfs-provisioner-nfs-client-provisioner 6m16s


  5. kubectl describe sc nfs-client

  6. Name: nfs-client

  7. IsDefaultClass: No

  8. Annotations: <none>

  9. Provisioner: cluster.local/default-nfs-provisioner-nfs-client-provisioner

  10. Parameters: archiveOnDelete=true

  11. AllowVolumeExpansion: True

  12. MountOptions:

  13. vers=3

  14. nolock

  15. proto=tcp

  16. noresvport

  17. ReclaimPolicy: Delete

  18. VolumeBindingMode: Immediate

  19. Events: <none>

  • 测试

  1. #创建test-nfs-pvc.yaml,内容如下:

  2. apiVersion: v1

  3. kind: PersistentVolumeClaim

  4. metadata:

  5. name: test-nfs-pvc

  6. spec:

  7. storageClassName: nfs-client

  8. accessModes:

  9. - ReadWriteOnce

  10. resources:

  11. requests:

  12. storage: 10Mi

  13. #执行如下命令:

  14. kubectl apply -f test-nfs-pvc.yaml

  15. #查看pvc,及pv的情况

  16. kubectl get pvc

  17. NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE

  18. test-nfs-pvc Bound pvc-65937626-deb4-11e9-b579-00163e064a2f 10Mi RWO nfs-client 2m49s

  19. 已经自动创建了PV(pvc-65937626-deb4-11e9-b579-00163e064a2f),并绑定了

  20. #查看PV

  21. kubectl describe pv pvc-65937626-deb4-11e9-b579-00163e064a2f

  22. Name: pvc-65937626-deb4-11e9-b579-00163e064a2f

  23. Labels: <none>

  24. Annotations: pv.kubernetes.io/provisioned-by: cluster.local/default-nfs-provisioner-nfs-client-provisioner

  25. Finalizers: [kubernetes.io/pv-protection]

  26. StorageClass: nfs-client

  27. Status: Bound

  28. Claim: default/test-nfs-pvc

  29. Reclaim Policy: Delete

  30. Access Modes: RWO

  31. VolumeMode: Filesystem

  32. Capacity: 10Mi

  33. Node Affinity: <none>

  34. Message:

  35. Source:

  36. Type: NFS (an NFS mount that lasts the lifetime of a pod)

  37. Server: xxxx.cn-shenzhen.nas.aliyuncs.com

  38. Path: /default/default-test-nfs-pvc-pvc-65937626-deb4-11e9-b579-00163e064a2f

  39. ReadOnly: false

  40. Events: <none>


文章转载自ItTalk,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论