Kubernetes中的pvc使用
PVC是资源的申请,用来声明对存储空间、访问模式、存储类别需求信息,如下为PVC的资源文件
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: pvc
namespace: dev
spec:
accessModes: # 访问模式
selector: # 采用标签对PV选择
storageClassName: # 存储类别
resources: # 请求空间
requests:
storage: 2Gi
PVC的关键配置参数说明
-
访问模式(accessModes)
用于描述用户应用对存储资源的访问权限 -
选择条件
通过Label Selecot的设置,可使PVC对于系统中已存在的PV进行筛选 -
存储类别
PVC在定义时可以设定需要的后端存储的类别,只有设置了该class的PV才能被系统选出 -
资源请求
对存储资源的请求
pvc实例
apiVersion: v1
kind: Namespace
metadata:
name: dev
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: pvc1
namespace: dev
spec:
accessModes:
- ReadWriteMany
resources:
requests:
storage: 1Gi
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: pvc2
namespace: dev
spec:
accessModes:
- ReadWriteMany
resources:
requests:
storage: 1Gi
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: pvc3
namespace: dev
spec:
accessModes:
- ReadWriteMany
resources:
requests:
storage: 1Gi
在创建pod的yaml中申请pvc,编辑pod_pvc.yaml文件,内容如下:
apiVersion: v1
kind: Pod
metadata:
name: pod1
namespace: dev
spec:
containers:
- name: busybox
image: busybox:1.30
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: pvc1
readOnly: false
用如下命令创建资源
[root@master volume]# kubectl apply -f pod_pvc.yaml
pod/pod1 created
[root@master volume]#
根据上面的创建的资源可以发现,pvc1使用的是pv2,而pv2挂载的是nfs中的/root/data/pv2的目录,此时查看目录如下,已经存在out.txt文件了