来自AI助手的总结
演示在Kubernetes中部署NFS动态供给并通过PVC挂载验证共享存储

一、下载源码
$ git clone https://github.com/kubernetes-sigs/nfs-subdir-external-provisioner
二、修改命名空间为kube-system并创建rbac授权
$ cd nfs-subdir-external-provisioner/deploy
$ sed -i 's/namespace: default/namespace: kube-system/' rbac.yaml
$ kubectl apply -f rbac.yaml
查看创建情况
$ k get sa -n kube-system | grep nfs
nfs-client-provisioner 1 44s
三、修改并应用deployment.yaml
修改命名空间为kube-system
$ cd nfs-subdir-external-provisioner/deploy
$ sed -i 's/namespace: default/namespace: kube-system/' deployment.yaml
修改nfs服务器地址、nfs共享目录和镜像地址
$ cd nfs-subdir-external-provisioner/deploy
$ vim deployment.yaml
# 修改内容
image: registry.cn-hangzhou.aliyuncs.com/abroad_images/nfs-subdir-external-provisioner:v4.0.2

应用deployment.yaml
$ cd nfs-subdir-external-provisioner/deploy
$ k apply -f deployment.yaml
验证查看
$ k get deploy -n kube-system | grep nfs
nfs-client-provisioner 1/1 1 1 119s
四、创建SC
$ cd nfs-subdir-external-provisioner/deploy
$ k apply -f class.yaml
验证查看
$ k get sc
NAME PROVISIONER RECLAIMPOLICY VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION AGE
nfs-client k8s-sigs.io/nfs-subdir-external-provisioner Delete Immediate false 3m30s
五、创建PVC
$ vi nfsPvc.yaml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: nfspvc
spec:
storageClassName: nfs-client
accessModes:
- ReadWriteMany
resources:
requests:
storage: 500Mi
应用
$ k apply -f nfsPvc.yaml
六、创建一个Pod,来使用PVC
$ vi nfsPod.yaml
apiVersion: v1
kind: Pod
metadata:
name: nfspod
spec:
containers:
- name: nfspod
image: nginx:1.21.6
volumeMounts:
- name: nfspv
mountPath: "/usr/share/nginx/html"
volumes:
- name: nfspv
persistentVolumeClaim:
claimName: nfspvc
七、验证测试
在192.168.1.34主机上的/data/nfs目录下找到名字包含nfspvc的目录,进入创建文件1.html,文件内容为sc test
$ cd /data/nfs/default-nfspvc-pvc-08748e66-97ee-4e15-b2fb-e571da7e8fdc
$ echo "sc test" > 1.html
查看nfspod的IP
$ k get po -owide| grep nfspod
nfspod 1/1 Running 0 7m10s 172.25.244.226 k8s-master01 <none> <none>
进行curl测试
$ curl 172.25.244.226/1.html
sc test
八、恢复
$ k delete -f nfsPod.yaml
$ cd /root/nfs-subdir-external-provisioner/deploy
$ k delete -f class.yaml,deployment.yaml,rbac.yaml
$ k delete -f nfsPvc.yaml
九、小结
pod想使用共享存储 –> PVC (定义具体需求属性) –>SC (定义Provisioner) –> Provisioner(定义具体的访问存储方法) –> NFS-server
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END







暂无评论内容