一、持久卷(PresistenceVolumes)
1.介绍PersistentVolume
(PV)是集群中由管理员提供的一段存储。它是集群中的资源,就像节点是集群资源一样。PV 持久卷和普通的 Volume 一样, 也是使用卷插件来实现的,只是它们拥有独立于任何使用 PV 的 Pod 的生命周期。这个API对象捕获存储实现的细节,无论是NFS、iSCSI还是特定于云提供商的存储系统。
PersistentVolumeClaim
(PVC)是用户对存储的请求。它类似于pod。pod消耗节点资源,而PVC消耗PV资源。pod可以请求特定级别的资源(CPU和内存)。Claim(声明)可以请求特定的大小和访问模式(例如,可以挂载一次读/写或多次只读)。
虽然PersistentVolumeClaim
允许用户使用抽象存储资源,但是对于不同的问题,用户通常需要具有不同属性(比如性能)的持久卷。集群管理员需要能够提供不同于大小和访问模式的各种持久性卷,而不需要让用户了解这些卷是如何实现的。对于这些需求,有一个StorageClass
资源。
PV是集群中的资源。PVC是对这些资源的请求,也充当对资源的索赔检查。
2.卷和申领的生命周期
制备
绑定
使用
保护使用中的存储对象
回收(Reclaiming)
PersistentVolume 删除保护 finalizer
预留 PersistentVolume
扩充 PVC 申领
制备:
提供PV有两种方式:静态方式和动态方式
静态: 集群管理员创建许多PV。它们携带了可供集群用户使用的真实存储的详细信息。它们存在于Kubernetes API中,可以使用 动态: 当管理员创建的静态PV都不匹配用户的PersistentVolumeClaim时,集群可能会尝试动态地为PVC提供一个专门的卷。此供应基于Storageclasses: PVC必须请求一个存储类,管理员必须创建并配置了该类,以便进行动态供应。声明请求类(class) "" 有效地禁用了自己的动态供应。 要启用基于存储类(storage class)的动态存储供应,集群管理员需要在API服务器上启用DefaultStorageClass准入控制器。例如,可以通过确保DefaultStorageClass位于API服务器组件 的--enable-admission-plugins选项的以逗号分隔的有序值列表中来实现。有关API服务器命令行标志的更多信息,请查看kube-apiserver文档。
绑定:
使用:
保护使用中的存储对象:
这一功能特性的目的是确保仍被 Pod 使用的 PersistentVolumeClaim(PVC) 对象及其所绑定的 PersistentVolume(PV)对象在系统中不会被删除,因为这样做可能会引起数据丢失。
你可以看到当 PVC 的状态为 Terminating 且其 Finalizers 列表中包含 kubernetes.io/pvc-protection 时,PVC 对象是处于被保护状态的
1 kubectl describe pvc hostpath 2 Name: hostpath 3 Namespace: default 4 StorageClass: example-hostpath 5 Status: Terminating 6 Volume: 7 Labels: <none> 8 Annotations: volume.beta.kubernetes.io/storage-class=example-hostpath 9 volume.beta.kubernetes.io/storage-provisioner=example.com/hostpath 10 Finalizers: [kubernetes.io/pvc-protection] 11 ...
你也可以看到当 PV 对象的状态为 Terminating 且其 Finalizers 列表中包含 kubernetes.io/pv-protection 时,PV 对象是处于被保护状态的
1 kubectl describe pv task-pv-volume 2 Name: task-pv-volume 3 Labels: type=local 4 Annotations: <none> 5 Finalizers: [kubernetes.io/pv-protection] 6 StorageClass: standard 7 Status: Terminating 8 Claim: 9 Reclaim Policy: Delete 10 Access Modes: RWO 11 Capacity: 1Gi 12 Message: 13 Source: 14 Type: HostPath (bare host directory volume) 15 Path: /tmp/data 16 HostPathType: 17 Events: <none>
回收:
当用户不再使用其存储卷时,他们可以从 API 中将 PVC 对象删除, 从而允许该资源被回收再利用。PersistentVolume 对象的回收策略告诉集群, 当其被从申领中释放时如何处理该数据卷。 目前,数据卷可以被 Retained(保留)、Recycled(回收)或 Deleted(删除)
PersistentVolume 删除保护 finalizer
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· Qt个人项目总结 —— MySQL数据库查询与断言