东行天下

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
统计
 

一、持久卷(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

 

posted on   东行天下  阅读(10)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· Qt个人项目总结 —— MySQL数据库查询与断言
 
点击右上角即可分享
微信分享提示