文章目录
- 1、PV和PVC概念
- 1.1、PV
- 1.2、PVC
- 2、PV / PVC的关系
- 3、PV / PVC的状态类型
- 3.1. Available(可用)
- 3.2. Bound(已绑定)
- 3.3. Released(已释放)
- 3.4. Pending(待定)
- 3.5. Failed(失败)
- 3.6. 其他状态
1、PV和PVC概念
- PersistentVolume (PV)
- PersistentVolumeClaim (PVC)
1.1、PV
PV是对K8S存储资源的抽象,PV一般由运维人员创建和配置,供容器申请使用。
没有PV之前,服务器的磁盘没有分区的概念,有了PV之后,相当于通过PV对服务器的磁盘进行分区。
1.2、PVC
PVC 是Pod对存储资源的一个申请,主要包括存储空间申请、访问模式等。创建PV后,Pod就可以通过PVC向PV申请磁盘空间了。类似于某个应用程序向操作系统的D盘申请1G的使用空间。
PVC 创建成功之后,Pod 就可以以存储卷(Volume)的方式使用 PVC 的存储资源了。Pod 在使用 PVC 时必须与PVC在同一个Namespace下。
2、PV / PVC的关系
PV相当于对磁盘的分区,PVC相当于APP(应用程序)向某个分区申请多少空间。比如说安装WPS程序时,一般会告知我们安装它需要多少存储空间,让你选择在某个磁盘下安装。如果将来某个分区磁盘满了,也不会影响别的分区磁盘的使用。
一旦 PV 与PVC绑定,Pod就可以使用这个 PVC 了。如果在系统中没有满足 PVC 要求的 PV,PVC则一直处于 Pending 状态,直到系统里产生了一个合适的 PV。
3、PV / PVC的状态类型
在Kubernetes中,PersistentVolume (PV) 和 PersistentVolumeClaim (PVC) 的状态包括但不限于以下几种:
3.1. Available(可用)
-
对于 PersistentVolume(PV),该状态表示卷尚未被任何 PersistentVolumeClaim 绑定,并且可以被分配给新的 PersistentVolumeClaim。
-
PV 在首次创建或释放后(回收策略允许的情况下),会回到这个状态。
3.2. Bound(已绑定)
-
当一个 PersistentVolume 被一个 PersistentVolumeClaim 绑定时,两者都会进入 Bound 状态。
-
对于 PV,这意味着它已经被挂载到某个 PVC,并可能已经挂载到了使用该 PVC 的 Pod 中。
-
对于 PVC,这意味着它已经成功地绑定了一个 PV,并且可以从该 PV 中读写数据。
kubectl get pv,pvc -A
3.3. Released(已释放)
-
当一个 PersistentVolume 与对应的 PersistentVolumeClaim 解除绑定时,PV 可能会进入 Released 状态。
-
这通常发生在删除了引用它的 PVC 之后,但具体的后续处理取决于 PV 的回收策略。
3.4. Pending(待定)
- 对于 PersistentVolumeClaim,在请求存储资源但还未成功绑定到 PersistentVolume 时,其状态为 Pending。
3.5. Failed(失败)
- 如果 PersistentVolume 或 PersistentVolumeClaim 遇到无法解决的问题,例如配额不足、配置错误或者绑定过程中的异常情况,可能会进入 Failed 状态。
3.6. 其他状态
-
Lost
:在某些情况下,如底层存储服务出现故障或节点不可达导致 Kubernetes 无法访问 Volume,PV 可能会被标记为 Lost。 -
对于动态 provisioned 的 PV 和 PVC,还会有额外的状态转换过程,比如
Provisioning
等。
不同的存储插件和Kubernetes版本可能存在一些差异。
如果停止,就是低谷;如果继续,就是上坡。