K8S静态PV,PVC持久化
本案例除了K8S环境外,还需要有NFS环境,如下NFS服务器地址为192.168.137.31。
NFS服务器的搭建,请参考https://www.cnblogs.com/heho/p/16925570.html
K8S环境搭建,请参考https://www.cnblogs.com/heho/p/16925275.html
1.安装NFS客户端
yum install nfs-utils showmount -e 192.168.137.31 #测试
2.创建PV,PVC
kubectl create -f pv.yaml
kubectl create -f pvc.yaml
3.查看结果
kubectl get pv,pvc
4.Pvc绑定到POD
kubectl create -f pod.yaml
5.检查POD内部是否已经与NFS正常连接
kubectl exec mypod -- ls /var/www/html
以下内容参考自
https://www.jianshu.com/p/d59552131259
pv.yaml文件内容
apiVersion: v1
kind: PersistentVolume
metadata:
name: nfspv #pv的名字
labels:
pv: nfs #pvc可以使用标签选择器来选择该pv,storageClassName和标签选择器是AND关系,如果storageClassName相同,标签选择器不同则pvc一直是pending状态
spec:
capacity:
storage: 1Gi #pv存储空间的大小,这里的空间大小并不能现在pod使用NFS空间的大小,作为pvc和pv>绑定选择使用,pv的空间符合pvc的要求则可以进行绑定
volumeMode: Filesystem #存储卷模式,默认为Filesystem,可选项还有Block
accessModes:
- ReadWriteOnce #存储卷的访问模式有三种ReadWriteOnce、ReadOnlyMany、ReadWriteMany
persistentVolumeReclaimPolicy: Retain #pv回收策略有三种Retain(保留。pv删除,存储数据保留,需删
除需手动)、Recycle(回收。pv删除,存储的数据被清空删除掉)、Delete(删除。pv删除,则后端的存储设
备也删除掉,常用语云厂商)
storageClassName: slow #pv和pvc的该项保持一致才可以进行绑定
nfs:
path: /root/nfs/share #NFS共享目录
server: 192.168.137.31 #NFS服务器地址
Pvc.yaml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: nfs-pvc #pvc名字,POD关联使用
spec:
accessModes: #pvc在请求pv的时候访问模式保持一致
- ReadWriteOnce #同pv一样三种模式
volumeMode: Filesystem #同pv一样两种模式
resources:
requests:
storage: 200Mi #pvc空间的大小,并不能作为pod使用存储的空间限制,而是作为选择绑定pv的条件。
storageClassName: slow #pvc和pv保持一致才可以进行绑定,否则一直pending状态
selector: #pvc可以通过标签选择器选择绑定pv。如果同时设置selector和storageClassName,那么再进行>绑定pv匹配选择的时候是AND的关系,两则同时满足才可以。
matchLabels:
pv: "nfs"
# matchExpressions:
# # - {key: environment, operator: In, values: [dev]}