认识
一、认识
在 Kubernetes
中,PersistentVolumeClaim (PVC)
是用户对持久化存储的需求声明。PVC
和 PersistentVolume (PV)
配合使用,PVC
表示用户的请求,而 PV
提供实际的存储资源。PVC
用于指定存储需求的细节,例如容量大小、访问模式以及与 PersistentVolume (PV)
的绑定方式。
1.1 核心概念
1. PersistentVolume (PV)
: PV
是一种存储资源,类似于集群中的节点资源,管理员可以预先配置它,也可以动态创建。它描述存储的具体细节(如 NFS、iSCSI、云存储等)。
2. PersistentVolumeClaim (PVC)
: PVC
是用户的请求,它描述了对存储的需求(如大小、访问模式)。PVC
通过绑定到 PV
来使用存储资源。
3. 存储类 (StorageClass)
: StorageClass
定义了动态创建 PV
的规则,例如使用哪种存储后端、参数设置等。
1.2 动态静态
静态供应: 管理员预先创建 PV
,用户通过 PVC
使用。
动态供应: 使用 StorageClass
动态创建 PV
,PVC
触发此过程。
1.3 访问模式
PVC
支持与 PV
相同的访问模式:
-
ReadWriteOnce (RWO)
: 单个节点可读写。 -
ReadOnlyMany (ROX)
: 多个节点只读。 -
ReadWriteMany (RWX)
: 多个节点可读写。
1.4 绑定流程:
-
创建
PVC
: 用户提交一个PVC YAML
文件,指定存储需求(大小、访问模式等)。 -
绑定到
PV
:Kubernetes
查找符合条件的PV
(根据存储大小、访问模式等)。-
如果找到匹配的
PV
,PVC
与PV
绑定。 -
如果没有匹配且启用了
StorageClass
,则动态创建PV
。
-
-
挂载到
Pod
:PVC
被Pod
挂载为一个存储卷,Pod
中的应用程序通过挂载点访问持久化数据。
二、语法
2.1 静态供应
管理员预先创建 PV
,用户通过 PVC
使用:
# PersistentVolume
apiVersion: v1
kind: PersistentVolume
metadata:
name: example-pv
spec:
capacity:
storage: 1Gi
accessModes:
- ReadWriteOnce
persistentVolumeReclaimPolicy: Retain
hostPath:
path: "/mnt/data"
# PersistentVolumeClaim
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: example-pvc
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 500Mi
2.2 动态供应
通过 StorageClass
动态创建 PV
:
# StorageClass
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: example-storageclass
provisioner: kubernetes.io/aws-ebs
# PersistentVolumeClaim
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: dynamic-pvc
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 1Gi
storageClassName: example-storageclass