openshift应用数据持久化后端存储的选择
- 有状态应用
即有多个功能不同的实例,有依赖和启动先后关系,需要做数据持久化。
- 无状态应用
即实例间互相不依赖,它的请求包含了响应端需求的全部信息。
术语
- PV
PersistentVolume是集群中由管理员配置的一段网络存储。 它是集群中的资源,就像节点是集群资源一样。 PV是容量插件,如Volumes,但其生命周期独立于使用PV的任何单个pod。 此API对象捕获存储实现的详细信息,包括NFS,iSCSI或特定于云提供程序的存储系统。
- PVC
PersistentVolumeClaim是由用户进行存储的请求。 它类似于pod。 Pod消耗节点资源,PVC消耗PV资源。Pod可以请求特定级别的资源(CPU和内存)。声明可以请求特定的大小和访问模式(例如,可以一次读/写或多次只读)。
Pv生命周期
供应准备
- 静态provision
- 动态provision
绑定bound
- 指定需要的资源及访问模式
使用using
- 用户可在pod中像volume一样使用pvc
释放release
- 用户删除pvc来回收存储资源,pv将变成“released”状态。由于还保留着之前的数据,这些数据需要根据不同的策略来处理,否则这些存储资源无法被其他pvc使用。
回收
- 保留策略: 允许人工处理保留的数据。
- 删除策略: 将删除pv和外部关联的存储资源,需要插件支持。
- 回收策略: 将执行清除操作,之后可以被新的pvc使用,需要插件支持。
访问特性
-
ReadWriteOnce
- 可读可写,只能被一个节点挂载
-
ReadWriteMany
- 可读可写,可以被多个节点挂载
-
ReadOnlyMany
- 只读,可以被多个节点挂载
PV类型
- AWS Elastic Block Store (EBS)
- Azure Disk
- Azure File
- Cinder
- Fibre Channel
- GCE Persistent Disk
- HostPath
- iSCSI
- Local volume
- NFS
- VMware vSphere
访问特性支持表
platform:openshift4.2
Volume Plug-in | ReadWriteOnce | ReadOnlyMany | ReadWriteMany |
---|---|---|---|
AWS EBS | √ | ||
Azure File | √ | √ | √ |
Azure Disk | √ | ||
Cinder | √ | ||
Fibre Channel | √ | √ | |
GCE Persistent Disk | √ | ||
HostPath | √ | ||
iSCSI | √ | √ | |
Local volume | √ | ||
NFS | √ | √ | √ |
VMware vSphere | √ |
CSI支持
note:
- openshift4.2支持采用Container Storage Interface (CSI) 容器存储接口对接不同的存储后端
- openshift4.2没有任何的csi driver,推荐使用社区或者厂商的驱动
- openshift4.2支持CSI specificationv1.1.0的驱动
总结
pv后端存储的选择考虑的因素
- 应用类型
- 应用特性
- 社区及厂商的后端存储支持的特性
- 稳定性、可靠性、性能
- 运维角度
- 性价比
网友评论