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]}

 

posted @ 2022-11-26 12:55  CODE物  阅读(106)  评论(0编辑  收藏  举报