k8s学习记录【进阶篇】,为什么引入PV和PVC?PV的访问策略、回收策略及文件存储、块存储、对象存储区别(二十三)

文章中资料参考来源2022 云原生Kubernetes全栈架构师

1、Volume无法解决的问题

  • 当某个数据卷不再被挂载使用时,里面的数据如何处理?
  • 如果想要实现只读挂载如何处理?
  • 如果想要只能一个Pod挂载如何处理?
  • 如何只允许某个Pod使用10G的空间?

PersistentVolume:简称PV,是由Kubernetes管理员设置的存储,可以配置Ceph、NFS、GlusterFS等常用存储配置,相对于Volume配置,提供了更多的功能,比如生命周期的个管理、大小的限制。PV分为静态和动态
PersistentVolumeClaim:简称PVC,是对存储PV的请求,表示需要什么类型的PV,需要存储的技术人员只需要配置PVC即可使用存储,或者Volume配置PVC的名称即可。

官方文档:https://kubernetes.io/docs/concepts/storage/persistent-volumes/

2、存储配置-PV访问策略

  • ReadWriteOnce:可以被单节点以读写模式挂载,命令行中可以被缩写为RWO
  • ReadOnlyMany:可以被多个节点以只读模式挂载,命令行中可以被缩写为ROX
  • ReadWriteMany:可以被多个节点以读写模式挂载,命令行中可以被缩写为RWX
  • ReadWriteOncePod:单个Pod可以读写挂在卷。这个策略只支持CSI卷和Kubernetes版本1.22+,命令行中可以被缩写为RWOP
  • 可以通过accessModes字段来进行访问策略配置
    官方文档:https://kubernetes.io/docs/concepts/storage/persistent-volumes/#access-modes
Volume Plugin ReadWriteOnce ReadOnlyMany ReadWriteMany ReadWriteOncePod
AWSElasticBlockStore
AzureFile -
AzureDisk - - -
CephFS -
Cinder - - -
CSI depends on the driver depends on the driver depends on the driver depends on the driver
FC - -
FlexVolume depends on the driver -
Flocker - - -
GCEPersistentDisk - -
Glusterfs -
HostPath - - -
iSCSI - -
Quobyte -
NFS -
RBD - -
VsphereVolume - - (works when Pods are collocated) -
PortworxVolume - -
StorageOS - - -

3、存储配置-PV回收策略

  • Retain:保留,该策略允许手动回收资源,当删除PVC时,PV仍然存在,PV被视为已释放,管理员可以手动回收卷。
  • Recycle:回收,如果Volume插件支持,Recycle策略会对卷执行rm -rf清理该PV,并使其可用于下一个新的PVC,但是本策略将来会被弃用,目前只有NFS和HostPath支持该策略。
  • Delete:删除,如果Volume插件支持,删除PVC时会同时删除PV,动态卷默认为Delete,目前支持Delete的存储后端包括AWS EBS,GCE PD,Azure Disk,OpenStack Cinder等
  • 可以通过persistentVolumeReclaimPolicy:Recycle字段配置

官方文档:
https://kubernetes.io/docs/concepts/storage/persistent-volumes/#reclaim-policy

官方示例

apiVersion: v1
kind: PersistentVolume
metadata:
  name: pv0003
spec:
  capacity:
    storage: 5Gi
  volumeMode: Filesystem
  accessModes:  #PV访问策略配置
    - ReadWriteOnce
  persistentVolumeReclaimPolicy: Recycle  #PV回收策略配置
  storageClassName: slow
  mountOptions:
    - hard
    - nfsvers=4.1
  nfs:
    path: /tmp
    server: 172.17.0.2

4、PV的状态

  • Available:可用,没有被PVC绑定的空闲资源
  • Bound:已绑定,已经被PVC绑定
  • Released:已释放,PVC被删除,但是资源还未被重新使用
  • Failed:失败,自动回收失败

image

5、存储分类

  • 文件存储:一些数据可能需要被多个节点使用,比如用户的头像,用户上传的文件等,实现方式:NFS、NAS【推荐】、CephFS【推荐】、FTP等
  • 块存储:一些数据只能被一个节点使用,或者是需要将一块裸盘整个挂载使用,比如数据库、Redis等,实现方式:Ceph、GlusterFS、公有云
  • 对象存储:由程序代码直接实现的一种存储方式,云原生应用无状态化常用的实现方式,实现方式:一般是符合S3协议的云存储,比如AWS的S3存储、Minio等
posted @ 2021-10-12 16:33  Hei蛋炒饭  阅读(818)  评论(0编辑  收藏  举报