【kubernetes/k8s概念】 pv pvc storageclass介绍
问题的引入:Pod 通常是由应用的开发人员维护,而 Volume 则通常是由存储系统的管理员维护。这样就带来一个管理上的问题:应用开发人员和系统管理员的职责耦合在一起了。如果系统规模较小或者对于开发环境这样的情况还可以接受。但当集群规模变大,特别是对于生成环境一. PersistentVolumePersistentVolume (PV) 是外部存储系统中的一块存储空...
问题的引入:Pod 通常是由应用的开发人员维护,而 Volume 则通常是由存储系统的管理员维护。这样就带来一个管理上的问题:应用开发人员和系统管理员的职责耦合在一起了。如果系统规模较小或者对于开发环境这样的情况还可以接受。但当集群规模变大,特别是对于生成环境
一. PersistentVolume
PersistentVolume (PV) 是外部存储系统中的一块存储空间,由管理员创建和维护。与 Volume 一样,PV 具有持久性,生命周期独立于 Pod。
二. PersistentVolumeClaim
PersistentVolumeClaim (PVC) 是对 PV 的申请 (Claim)。PVC 通常由普通用户创建和维护。需要为 Pod 分配存储资源时,用户可以创建一个 PVC,指明存储资源的容量大小和访问模式(比如只读)等信息,Kubernetes 会查找并提供满足条件的 PV
三. StorageClass存储类介绍
- 创建存储类StorageClass
- 创建使用存储类的持久化存储声明(PVC:PersistentVolumeClaim)
- 存储持久化声明通知系统,需要一个持久化存储(PV: PersistentVolume)
- 系统读取存储类的信息
- 系统基于存储类的信息,自动创建PVC需要的PV
- 创建一个使用PVC的Pod
- Pod中的应用通过PVC进行数据的持久化
- PVC使用PV进行数据的最终持久化处理
定义storageclass存储类
存储类都包含provisioner、parameters和reclaimPolicy这三个参数域,可以为PVC指定一个默认的存储类
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: csi-rbd
provisioner: rbd.csi.ceph.com
parameters:
monitors: 192.168.74.57:6789
pool: rbd
imageFormat: "2"
imageFeatures: layering
adminid: admin
reclaimPolicy: Delete
设置默认storageclass
- 标记一个默认的StorageClass对象;
- 确定API server中DefaultStorage接入控制器已被启用
通过添加storageclass.kubernetes.io/is-default-class注释,标记一个特定的StorageClass作为默认的存储类。
默认 StorageClass 的注解 storageclass.kubernetes.io/is-default-class
设置为 true
。注解的其它任意值或者缺省值将被解释为 false
。
要标记一个 StorageClass 为非默认的,您需要改变它的值为 false
:
回收策略:reclaimPolicy参数
- Recycle:清除 PV 中的数据,效果相当于执行 rm -rf
- Delete:删除 Storage Provider 上的对应存储资源
- Retain:需要管理员手工回收
accessModes
- ReadWriteOnce:以 read-write 模式 mount 到单个节点
- ReadOnlyMany:read-only 模式 mount 到多个节点
- ReadWriteMany:read-write 模式 mount 到多个节点
Phase
- Available – PV可以被使用
- Bound – PV被绑定到PVC
- Released – 被绑定的PVC被删除,可以被Reclaim
- Failed – 自动回收失败
更多推荐
所有评论(0)