k8s中的PV与PVC
阿里云国内75折 回扣 微信号:monov8 |
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6 |
目录
一什么是PV与PVC
持久卷PersistentVolumePV是集群中由管理员配置的一段网络存储是集群中的一种资源。API对象捕获存储实现的详细信息包括NFSiSCSI
或特定于云提供程序的存储系统。
持久卷申领PersistentVolumeClaimPVC表达的是用户对存储的请求。PVC 申领也可以请求特定的大小和访问模式 例如可以要求PV卷能够以 ReadWriteOnce、ReadOnlyMany 或 ReadWriteMany 模式之一来挂载。
用户通常需要具有不同属性例如性能需要能够提供各种PersistentVolumes
不同的方式而不仅仅是大小和访问模式对于这些需求有StorageClass 资源。 这个概念有时在其他存储系统中称为“配置文件”。
总结
-
PVC描述 Pod想要使用的持久化属性比如存储大小、读写权限等
-
PV描述一个具体的Volume属性比如Volume的类型、挂载目录、远程存储服务器地址等
-
StorageClass充当PV的模板自动为PVC创建PV
二PV卷api解读
1、PV卷访问模式Access Modes
Persistent Volume
可以以资源提供者支持的任何方式挂载到主机上供应商具有不同的功能每个PV的访问模式都将被设置为该卷支持的特定模式。NFS可以支持多个读/写客户端但特定的NFS PV可能以只读方式导出到服务器上每个PV都有一套自己用来描述特定功能的访问模式。
-
ReadWriteOnce该卷可以被单个节点以读/写模式挂载
-
ReadOnlyMany该卷可以被多个节点以只读模式挂载
-
ReadWriteMany该卷可以被多个节点以读/写模式挂载
注意一个卷一次只能使用一种访问模式挂载即使它支持很多种访问模式。
2、PV卷容量capacity
定义NFS PV 资源(静态):
定义pvc资源:
pvc和pv匹配规则
-
PV 和 PVC 的 spec 字段。比如PV 的存储storage大小必须满足 PVC的要求。
-
PV 和 PVC 的 storageClassName 字段必须一样。
3、PV卷阶段状态state
-
Available: 资源尚未被claim使用
-
Bound: 卷已经被绑定到claim了
-
Released: claim被删除卷处于释放状态但未被集群回收
-
Failed: 卷自动回收失败
当Pod状态为Pending并且Pod已经分配给节点或Pod为Running状态时PVC处于活动状态。一旦PV和PVC绑定后Persistent Volume Claim绑定是排它性的不管它们是如何绑定的PVC和PV绑定是一对一映射的。
4、PV卷回收策略Reclaiming
-
保留策略Rrtain允许人工处理保留的数据。
-
删除策略Recycle将删除pv和外部关联的存储资源需要插件支持。
-
回收策略Delete将执行清除操作之后可以被新的pvc使用需要插件支持。
5、PV类型插件
- cephfs - CephFS volume
- csi - 容器存储接口 (CSI)
- fc - Fibre Channel (FC) 存储
- hostPath - HostPath 卷 仅供单节点测试使用不适用于多节点集群请尝试使用
local
卷作为替代 - iscsi - iSCSI (SCSI over IP) 存储
- local - 节点上挂载的本地存储设备
- nfs - 网络文件系统 (NFS) 存储
- rbd - Rados 块设备 (RBD) 卷
容器存储接口Container Storage InterfaceCSI持久化卷具有以下字段可供用户指定
driver
一个字符串值指定要使用的卷驱动程序的名称。必须少于 63 个字符并以一个字符开头。驱动程序名称可以包含 “。”、“ - ”、“_” 或数字。volumeHandle
一个字符串值唯一标识从 CSI 卷插件的CreateVolume
调用返回的卷名。随后在卷驱动程序的所有后续调用中使用卷句柄来引用该卷。readOnly
一个可选的布尔值指示卷是否被发布为只读。默认是 false。
三PV的创建
PV可以通过静态与动态两种方式创建。静态就是手动创建PV资源。动态就是PVC必须请求storage class
并且管理员必须已经创建并配置了该类才能进行动态供应。如果请求的类是""
,就是禁用了动态配置。静态与动态是可以并存的因为PVC会先匹配静态PV如果不匹配才会尝试动态的方式。
1、静态配置
如果是静态就需要创建大量的PV来定义不同的存储与参数如性能冗余等来满足不同需求的PVC。
静态的配置方式类型如下
2、动态配置
可以通过为 CSI 创建插件 StorageClass
来支持动态配置的 CSI Storage 插件启用自动创建/删除 。以下 StorageClass
允许通过名为 com.example.team/csi-driver
的 CSI Volume Plugin 动态创建 “fast-storage” Volume。
要触发动态配置请创建一个 PersistentVolumeClaim
对象。下面的 PersistentVolumeClaim 可以使用上面的 StorageClass 触发动态配置。
四PVC的创建
PVC与PV是一一对应的绑定关系。Pod挂载PVC。只需要创建满足需求的PVC而PVC会再自动与满足需求的PV绑定如果没有找到匹配的PV并且没有动态供给Pod会一直处于Pending状态。
1、创建pvc
storageClassName
、accessModes、resources: pvc与pv的匹配会根据这些参数。
2、pod挂载PVC
在volume字段下有卷名以及挂载的PVC名