PV
apiversion: v1
kind: PersistenVolume
metadata:
name: jenkins-pv
labels:
env: devops
spec:
storageClassName: jenkins-storage
accessMode:
- ReadWriteOnce
capacity:
storage: 10Gi
persistentVolumeReclaimPolicy: Recycle
nfs:
path: /data/k8s
server: 192.168.50.104
参数说明:
(1)accessMode:访问模式,有ReadWriteOnce,ReadOnlyMany,ReadWriteMany。其中:
- ReadWriteOnce:表示具有读写权限,但是只能被一个node挂载一次
- ReadOnlyMany:表示具有只读权限,可以被多个node多次挂载
- ReadWriteMany:表示具有读写权限,可以被多个node多次挂载
(2)capacity:持久卷资源和容量的描述,存储大小是唯一可设置或请求的资源。
(3)persistentVolumeReclaimPolicy: 回收策略,也就是释放持久化卷时的策略,其有以下几种:
- Retain:保留数据,如果要清理需要手动清理数据,默认的策略;
- Delete:删除,将从Kubernetes中删除PV对象,以及外部基础设施中相关的存储资产,比如AWS EBS, GCE PD, Azure Disk, 或Cinder volume;
Recycle:回收,清楚PV中的所有数据,相当于执行rm -rf /pv-volume/*;
(4)PV 跟 PVC 之间的绑定通过 storageClassName 进行绑定
PVC
apiversion: app/v1
kind: PersistenVolumeClaim
metadata:
name: jenkins-pvc
namespace: devops
labels:
env: devops
spec:
storageClassName: jenkins-storage
accessModes:
ReadWriteOnce
resources:
requests:
storage: 3Gi
操作
# 查看 pv
kubectl get pv
# 查看 pvc
kubectl get pvc
# 应用
kubectl apply -f pv.yaml
kubectl apply -f pvc.yaml
# 删除
kubectl delete -f pv.yaml
注意
(1)、如果我们的PVC需求的容量大于PV的可用容量,绑定是不会成功的;
(2)、如果我们的PVC需求的容量小于PV的可用容量,绑定的容量是PV的可用容量;