以下是有关 Kubernetes 持久卷的一些关键概念:
1. Persistent Volume(PV)的定义:
- PV 是集群中的存储资源,它具有容量、访问模式(ReadWriteOnce、ReadOnlyMany、ReadWriteMany)、存储类(StorageClass)、状态(Available、Bound、Released 等)等属性。
apiVersion: v1
kind: PersistentVolume
metadata:
name: mypv
spec:
capacity:
storage: 1Gi
accessModes:
- ReadWriteOnce
hostPath:
path: /path/on/host
上述例子定义了一个基于主机路径的持久卷(HostPath PV),具有1Gi的存储容量和ReadWriteOnce的访问模式。
2. Persistent Volume Claim(PVC):
- Persistent Volume Claim 是 Pod 对 PV 的请求,Pod 通过 PVC 来声明对存储资源的需求。PVC 匹配 PV 的属性,例如容量和访问模式。
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: mypvc
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 1Gi
上述例子定义了一个请求1Gi存储容量和ReadWriteOnce访问模式的 Persistent Volume Claim。
3. Storage Class(存储类):
- 存储类是用于动态创建 PV 的对象。它允许集群管理员定义存储卷的类型、提供商和其他参数。
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: fast
provisioner: kubernetes.io/fast
存储类在 PVC 中指定,而不是在 PV 中指定,使得存储卷的动态分配更加灵活。
4. 使用 PV 和 PVC 的 Pod:
- Pod 可以通过 Volume 指定要使用的 PV 或 PVC。
apiVersion: v1
kind: Pod
metadata:
name: mypod
spec:
containers:
- name: mycontainer
image: nginx
volumeMounts:
- name: myvolume
mountPath: /data
volumes:
- name: myvolume
persistentVolumeClaim:
claimName: mypvc
上述例子中,Pod 使用名为 mypvc 的 Persistent Volume Claim,并将其挂载到容器中的 /data 目录。
5. Reclaim Policy(回收策略):
- PV 具有回收策略,定义了在 PV 释放时要执行的操作。有三种回收策略:Retain(保留 PV),Delete(删除 PV)和Recycle(回收 PV,仅适用于 NFS、HostPath 等)。
apiVersion: v1
kind: PersistentVolume
metadata:
name: mypv
spec:
capacity:
storage: 1Gi
accessModes:
- ReadWriteOnce
hostPath:
path: /path/on/host
persistentVolumeReclaimPolicy: Retain
上述例子中,persistentVolumeReclaimPolicy 设置为 Retain,表示在释放 PV 后不会删除 PV。
持久卷是 Kubernetes 中用于解决数据持久化需求的一种重要机制。通过 PV 和 PVC 的结合使用,可以实现数据的动态分配、共享和保留。存储类的引入进一步增加了存储资源的灵活性,允许集群管理员根据实际需求进行存储资源的动态管理。
转载请注明出处:http://www.pingtaimeng.com/article/detail/9741/Kubernetes