Step -1 :创建存储路径
先创建一个目录用以存放PV/PVC的试验相关存储路径
“mkdir /opt/testpv”+“cd /opt/testpv”+“mkdir pv-1 pv-2 pv-3”
Step - 2:暴露存储路径:
增加暴露存储路径:
“vim /etc/exports”
/opt/testdirectory 10.1.10.0/24(rw,no_root_squash)
/opt/testpv/pv-1 10.1.10.0/24(rw,no_root_squash)
/opt/testpv/pv-2 10.1.10.0/24(rw,no_root_squash)
/opt/testpv/pv-3 10.1.10.0/24(rw,no_root_squash)
重启NFS服务以及查看状态:
“ systemctl restart nfs”
“ systemctl status nfs”
Step - 3:创建PV资源
编辑pv.yaml
“vim pv.yaml”
apiVersion: v1
kind: PersistentVolume
metadata:
name: pv-1
spec:
capacity:
storage: 1Gi #(明确申明,需要1G以上的存储空间作为存储卷)
accessModes:
- ReadWriteMany #(访问模式)
persistentVolumeReclaimPolicy: Retain #(回收策略)
nfs:
path: /opt/testpv/pv-1 #(指定存储路径)
server: 10.1.10.128 #(存储服务器节点)
—-
apiVersion: v1
kind: PersistentVolume
metadata:
name: pv-2
spec:
capacity:
storage: 2Gi
accessModes:
- ReadWriteMany
persistentVolumeReclaimPolicy: Retain
nfs:
path: /opt/testpv/pv-2
server: 10.1.10.128
—-
apiVersion: v1
kind: PersistentVolume
metadata:
name: pv-3
spec:
capacity:
storage: 3Gi
accessModes:
- ReadWriteMany
persistentVolumeReclaimPolicy: Retain
nfs:
path: /opt/testpv/pv-3
server: 10.1.10.128
声明式创建pv资源清单配置,并检查状态,结合dashboard辅证
“kubectl apply -f pv.yaml”
“ kubectl get pv -o wide”
NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE VOLUMEMODE
pv-1 1Gi RWX Retain Available 14s Filesystem
pv-2 2Gi RWX Retain Available 14s Filesystem
pv-3 3Gi RWX Retain Available 14s Filesystem
Step - 4:创建PVC
编辑pvc.yaml
“vim pvc.yaml”
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: pvc-1
namespace: storage
spec:
accessModes:
- ReadWriteMany
resources:
requests:
storage: 1Gi(申明我需要对应多少大小的存储卷)
—-
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: pvc-2
namespace: storage
spec:
accessModes:
- ReadWriteMany
resources:
requests:
storage: 1Gi
—-
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: pvc-3
namespace: storage
spec:
accessModes:
- ReadWriteMany
resources:
requests:
storage: 1Gi
声明式创建pvc配置,并结合dashboard辅证,可以看到pvc创建完成,并自动完成与之对应的pv绑定
“kubectl apply -f pvc.yaml”
“ kubectl get pvc -n storage -o wide”
Step - 5:创建POD,并绑定PVC
编辑pvc-pod.yaml
“vim pvc-pod.yaml”
apiVersion: v1
kind: Pod
metadata:
name: pod-1
namespace: storage
spec:
containers:
- name: busybox
image: busybox:latest
command: [“/bin/sh”,”-c”,”while true;do echo pod1 >> /root/out.txt; sleep 10; done;”]
volumeMounts:
- name: volume
mountPath: /root/
volumes:
- name: volume
persistentVolumeClaim:
claimName: pvc-1
readOnly: false
—-
apiVersion: v1
kind: Pod
metadata:
name: pod-2
namespace: storage
spec:
containers:
- name: busybox
image: busybox:latest
command: [“/bin/sh”,”-c”,”while true;do echo pod2 >> /root/out.txt; sleep 10; done;”]
volumeMounts:
- name: volume
mountPath: /root/
volumes:
- name: volume
persistentVolumeClaim:
claimName: pvc-2
readOnly: false
声明式创建资源
“ kubectl apply -f pvc-pod.yaml”
“kubectl get pods -n storage -o wide”
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
pod-1 1/1 Running 0 17s 10.244.2.51 node-2
pod-2 1/1 Running 0 17s 10.244.1.54 node-1
volume-emptydir 2/2 Running 0 6h26m 10.244.1.52 node-1
volume-hostpath 2/2 Running 0 5h48m 10.244.2.50 node-2
volume-nfs 2/2 Running 0 3h46m 10.244.1.53 node-1
点击pod-1进去,可以看到,已经成功和pvc进行绑定
结合命令行,可以看到,存储路径已经出现了在创建pod时指定的命令,并成功创建出了文件
PS:注意完成这个时候之后可以把这两个pod给删了,因为我们之前的配置里面的命令,是每10s写个pod到out.txt这个文件里去,所以删了以免占用资源