关于PV和PVC的生命周期

简介: 【6月更文挑战第11天】Kubernetes中的PersistentVolume (PV) 和 PersistentVolumeClaim (PVC) 是用于管理有状态应用的数据持久化存储。

Kubernetes对于有状态的容器应用或者对数据需要持久化的应用,不仅需要将容器内的目录挂载到宿主机的目录或者emptyDir临时存储卷,而且需要更加可靠的存储来保存应用产生的重要数据,以便容器应用在重建之后仍然可以使用之前的数据。


不过,存储资源和计算资源(CPU/内存)的管理方式完全不同。为了能够屏蔽底层存储实现的细节,让用户方便使用,同时让管理员方便管理,Kubernetes从1.0版本就引入PersistentVolume(PV)和PersistentVolumeClaim(PVC)两个资源对象来实现对存储的管理子系统。


PV作为存储资源,主要包括存储能力、访问模式、存储类型、回收策略、后端存储类型等关键信息的设置。


某个PV在生命周期中可能处于以下4个阶段之一。

(1)Available:可用状态,还未与某个PVC绑定。

(2)Bound:已与某个PVC绑定。

(3)Released:绑定的PVC已经删除,资源已释放,但没有被集群回收。

(4)Failed:自动资源回收失败。

PVC作为用户对存储资源的需求申请,主要包括存储空间请求、访问模式、PV选择条件和存储类别等信息的设置。

1.PV和PVC的生命周期一

可以将PV看作可用的存储资源,PVC则是对存储资源的需求。

(1)资源供应Kubernetes支持两种资源的供应模式:静态模式(Static)和动态模式(Dynamic)。资源供应的结果就是创建好的PV。

(2)静态模式。集群管理员手动创建许多PV,在定义PV时需要将后端存储的特性进行设置。

(3)动态模式。集群管理员无须手动创建PV,而是通过StorageClass的设置对后端存储进行描述,标记为某种类型。此时要求PVC对存储的类型进行声明,系统将自动完成PV的创建及与PVC的绑定。PVC可以声明Class为"",说明该PVC禁止使用动态模式。

2.PV和PVC的生命周期二

1)资源绑定

在用户定义好PVC后,系统将根据PVC对存储资源的请求(存储空间和访问模式)在已存在的PV中选择一个满足PVC要求的PV,一旦找到,就将该PV与用户定义的PVC进行绑定,用户的应用就可以使用这个PVC了。

如果在系统中没有满足PVC要求的PV,PVC则会无限期处于Pending状态,直到系统管理员创建了一个符合其要求的PV。PV一旦绑定到某个PVC上,就会被这个PVC独占,不能再与其他PVC进行绑定了。

在这种情况下,当PVC申请的存储空间比PV的少时,整个PV的空间就都能够为PVC所用,可能会造成资源的浪费。如果资源供应使用的是动态模式,则系统在为PVC找到合适的StorageClass后,将自动创建一个PV并完成与PVC的绑定。


2)资源使用

Pod使用Volume的定义,将PVC挂载到容器内的某个路径进行使用。Volume的类型为persistentVolumeClaim,在容器应用挂载了一个PVC后,就能被持续独占使用。不过,多个Pod可以挂载同一个PVC,应用程序需要考虑多个实例共同访问一块存储空间的问题。


3)资源释放

当用户对存储资源使用完毕后,可以删除PVC,与该PVC绑定的PV将会被标记为“已释放”,但还不能立刻与其他PVC进行绑定。通过之前PVC写入的数据可能还被留在存储设备上,只有在清除之后该PV才能再次使用。


4)资源回收

对于PV,管理员可以设定回收策略,用于设置与之绑定的PVC释放资源之后如何处理遗留数据的问题。只有PV的存储空间完成回收,才能供新的PVC绑定和使用。

相关文章
|
4月前
|
存储 Kubernetes 调度
在K8S中,PV和PVC是如何关联?
在K8S中,PV和PVC是如何关联?
|
4月前
|
存储 Kubernetes 调度
在K8S中,什么是PV和PVC?
在K8S中,什么是PV和PVC?
|
4月前
|
存储 Kubernetes 调度
在k8S中,PV和PVC如何使用?
在k8S中,PV和PVC如何使用?
|
6月前
|
前端开发 JavaScript Python
PV
【6月更文挑战第24天】
213 10
|
7月前
|
存储 Kubernetes 容器
k8s 中 PV 和 PVC 的生命周期
【4月更文挑战第30天】
|
存储 Kubernetes 调度
Kubernetes 中存储使用介绍(PV、PVC和StorageClass)
在 Kubernetes 中的应用,都是以 Pod 的形式运行的,当我们要是在 Kubernetes 上运行一些需要存放数据的应用时,便需要关注应用存放的数据是否安全可靠。因为 Pod 是有生命周期的,那么也就是说当 Pod 被删除或重启后,Pod 里面所运行的数据也会随之消失。
2171 0
Kubernetes 中存储使用介绍(PV、PVC和StorageClass)
|
存储 Kubernetes Cloud Native
持久化存储PV与PVC
持久化存储PV与PVC
361 0
|
存储 Kubernetes Perl
Kubernetes 在等待 pod 中的 PVC 或 PV 挂载时超时
Kubernetes 在等待 pod 中的 PVC 或 PV 挂载时超时
700 0
|
存储 Kubernetes 调度
k8s pv 详解
k8s pv 详解
365 0
k8s pv 详解
|
存储 运维 Kubernetes
【k8s的持久化存储】PV、PVC、StorageClass讲解(一)
【k8s的持久化存储】PV、PVC、StorageClass讲解
【k8s的持久化存储】PV、PVC、StorageClass讲解(一)

相关实验场景

更多
下一篇
DataWorks