PersistentVolume(PV)是外部存储系统中的存储空间,具有持久性,生命周期独立于 pod。
PersistentVolumeClaim(PVC)是对 PV 的申请,指明存储资源的容量大小、访问模式等信息,使用户只需说明需要什么样的资源,而不用关心从哪儿分配、如何访问等底层细节。
下面实践 NFS 类型 PersistentVolume 的用法。
准备环境
需要先搭建好一个 nfs 服务,并创建好目录 /nfsdata/pv1。
配置文件
我们需要创建3个配置文件:
- PersistentVolume 配置文件,声明一个nfs pv资源,指定连接信息。
- PersistentVolumeClaim 配置文件,声明需要一个 1G 的 nfs pv 资源。
- pod 配置文件,声明 volume,指定 persistentVolumeClaim 的名字,挂载 volume。
nfs-pv1.yml
apiVersion: v1
kind: PersistentVolume
metadata:
name: mypv1
spec:
capacity:
storage: 1Gi
accessModes:
- ReadWriteOnce
persistentVolumeReclaimPolicy: Recycle
storageClassName: nfs
nfs:
path: /nfsdata/pv1
server: 192.168.3.107
nfs-pvc1.yml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: mypvc1
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 1Gi
storageClassName: nfs
nfs-pod.yml
apiVersion: v1
kind: Pod
metadata:
name: mypod1
spec:
containers:
- name: mypod1
image: busybox
args:
- /bin/sh
- -c
- sleep 30000
volumeMounts:
- mountPath: "/mydata"
name: mydata
volumes:
- name: mydata
persistentVolumeClaim:
claimName: mypvc1
启动
先启动 pv 和 pvc:
kubectl apply -f nfs-pv1.yaml
kubectl apply -f nfs-pvc1.yaml
查看状态:
kubectl get pv
NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE
mypv1 1Gi RWO Recycle Bound default/mypvc1 nfs 17m
kubectl get pvc
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE
mypvc1 Bound mypv1 1Gi RWO nfs 17m
状态都是 Bound
,说明已经绑定好,可用了。
启动 pod:
kubectl apply -f nfs-pod.yaml
测试
通过 pod 创建文件:
kubectl exec mypod1 touch /mydata/hello
查看 nfs 目录下是否有了 hello 这个文件:
ls /nfsdata/pv1/
hello
网友评论