nfs-client-provisioner是一个automatic provisioner,使用NFS作为存储,自动创建PV和对应的PVC,本身不提供NFS存储,需要外部先有一套NFS存储服务。
- PV以 ${namespace}-${pvcName}-${pvName}的命名格式提供(在NFS服务器上)
- PV回收的时候以 archieved-${namespace}-${pvcName}-${pvName} 的命名格式(在NFS服务器上)
1、权限体系构建
1.1、创建serviceaccount
ServiceAccount也是一种账号, 供运行在pod中的进程使用, 为pod中的进程提供必要的身份证明.
1 | # cat serviceaccount.yaml |
1.2、创建role
1 | # cat clusterrole.yaml |
1.3、账户和角色绑定
1 | # cat clusterrolebinding.yaml |
2、安装部署
下载deployment.yaml文件,需要修改NFS服务器所在的IP地址(10.10.10.60),以及NFS服务器共享的路径(/ifs/kubernetes),两处都需要修改为你实际的NFS服务器和共享目录
2.1、部署存储供应卷
根据PVC的请求, 动态创建PV存储.
1 | # cat deployment.yaml |
* 修改StorageClass文件并部署class.yaml
此处可以不修改,或者修改provisioner的名字,需要与上面的deployment的PROVISIONER_NAME名字一致
2.2、创建storageclass
1 | # cat class.yaml |
2.2.1、查看StorageClass
1 | # kubectl get sc |
2.2.2、设置默认后端存储
设置这个default名字的SC为Kubernetes的默认存储后端
1 | # kubectl patch storageclass managed-nfs-storage -p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"true"}}}' |
2.2.3、测试创建PVC
1 | # cat test-claim.yaml |
2.2.4、启动测试POD
POD文件如下,作用就是在test-claim的PV里touch一个SUCCESS文件
1 | # cat test-pod.yaml |
2.2.5、校验是否成功
去NFS共享目录查看有没有SUCCESS文件
1 | # kubectl get pvc -n kube-test |
2.3、更改PersistentVolumes 中的一个回收策略
查看集群中PersistentVolumes
1
# kubectl get pv
更改PersistentVolumes
1
2# kubectl patch pv pvc-f8e08fa5-2de2-11e9-8991-fa163e14c5bd -p '{"spec":{"persistentVolumeReclaimPolicy":"Retain"}}'
persistentvolume/pvc-f8e08fa5-2de2-11e9-8991-fa163e14c5bd patched查看更改
1
# kubectl get pv