需要先安装nfs
1 |
https://github.com/qist/k8s/tree/master/k8s-yaml/storage-class/csi/nfs |
1 2 3 4 5 6 7 |
Kubernetes提供了一套可以自动创建PV的机制,即:Dynamic Provisioning.而这个机制的核心在于:StorageClass这个API对象. StorageClass对象会定义下面两部分内容: 1,PV的属性.比如,存储类型,Volume的大小等. 2,创建这种PV需要用到的存储插件 有了这两个信息之后,Kubernetes就能够根据用户提交的PVC,找到一个对应的StorageClass,之后Kubernetes就会调用该StorageClass声明的存储插件,进而创建出需要的PV. 但是其实使用起来是一件很简单的事情,你只需要根据自己的需求,编写YAML文件即可,然后使用kubectl create命令执行即可 |
1 |
cd /root/ruanjian/k8s-master/k8s-yaml/storage-class/nfs |
1. 创建命名空间
1 |
kubectl create ../nfs/clusterstorage-namespace.yaml |
2. 1.20以前版本需要注释掉fsGroupPolicy(不支持)
1 |
vim csi-nfs-driverinfo.yaml |
1 2 3 4 5 6 7 8 9 10 |
--- apiVersion: storage.k8s.io/v1 kind: CSIDriver metadata: name: nfs.csi.k8s.io spec: attachRequired: false volumeLifecycleModes: - Persistent #fsGroupPolicy: File |
1 |
vim storageclass-nfs.yaml |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
--- apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: annotations: storageclass.kubernetes.io/is-default-class: "true" # true|false name: nfs-csi #StorageClass名称可根据自己情况修改name provisioner: nfs.csi.k8s.io parameters: server: 192.168.0.177 #修改为你的nfs地址 share: /data/nfs-share #修改为你的nfs共享目录 reclaimPolicy: Delete volumeBindingMode: Immediate allowVolumeExpansion: true mountOptions: - hard - rw,nolock,tcp - nfsvers=4.1 |
3.运行安装
1 |
kubectl apply -f . |
4.测试
用户提交pvc(nfs-claim1)将为自己创建一个挂载点volume, pvc(nfs-claim1) 查找对应的 storageClassName: nfs-csi storageClass 调用相对的插件进而创建出对应的pv,交付给pvc, pod再挂载pvc到自身。
1 2 3 |
测试 能自己创建pvc 并成功写入文件 cd test/ kubectl apply -f test/. |
5.打开文件锁 nfslock
1 2 |
service nfslock start systemctl enable nfslock.service |
- 本文固定链接: https://www.yoyoask.com/?p=6657
- 转载请注明: shooter 于 SHOOTER 发表