侧边栏壁纸
  • 累计撰写 45 篇文章
  • 累计创建 15 个标签
  • 累计收到 2 条评论

目 录CONTENT

文章目录

【kubernetes】数据持久化PV&PVC

Administrator
2024-12-03 / 0 评论 / 0 点赞 / 48 阅读 / 2924 字 / 正在检测是否收录...

数据文件存储是非常常见的需求,在kubernetes中,由于容器中的文件是短暂的,当容器崩溃时,虽然会重新启动容器,但是容器运行时产生的数据文件将会丢失,于是抽象出了Volume的概念用于解决数据存储的问题。

1. Volume的类型

Volume支持的卷的类型有很多种,常用的卷有:

  • NFS

  • RDB

  • CephFS

  • GlusterFS

  • HostPath:将节点上的文件或目录挂载到Pod上,用于实现Pod和宿主机之间的数据共享

还有一些kubernetes独有的类型:

  • ConfigMap:用于存储配置文件

  • Secret:用于存储敏感数据

  • EmptyDir:用于一个Pod内多个容器的数据共享

  • PersistentVolumeClaim:对PersistentVolume的申请

存储的分类:

  • 文件存储:一些数据可能需要被多个节点使用,比如用户的头像、用户上传的文件等,实现方式: NFS、 NAS、 FTP、 CephFS等。

  • 块存储:一些数据只能被一个节点使用,或者是需要将一块裸盘整个挂载使用,比如数据库、 Redis等,实现方式: Ceph、 GlusterFS、公有云。

  • 对象存储:由程序代码直接实现的一种存储方式,云原生应用无状态化常用的实现方式,实现方式:一般是符合S3协议的云存储,比如AWS的S3存储、 Minio、七牛云等。

2. PersistentVolume

1. PV的回收策略

  • Retain:保留,该策略允许手动回收资源,当删除PVC时, PV仍然存在, PV被视为已释放,管理员可以手动回收卷。

  • Recycle:回收,如果Volume插件支持, Recycle策略会对卷执行rm -rf清理该PV,并使其可用于下一个新的PVC,但是本策略将来会被弃用,目前只有NFS和HostPath支持该策略。

  • Delete:删除,如果Volume插件支持,删除PVC时会同时删除PV,动态卷默认为Delete,目前支持Delete的存储后端包括AWS EBS,、GCEPD,、Azure Disk、OpenStack Cinder等。

2. PV的访问策略

  • ReadWriteOnce:可以被单节点以读写模式挂载,命令行中可以被缩写为RWO。

  • ReadOnlyMany:可以被多个节点以只读模式挂载,命令行中可以被缩写为ROX。

  • ReadWriteMany:可以被多个节点以读写模式挂载,命令行中可以被缩写为RWX。

  • ReadWriteOncePod :只允许被单个Pod访问,需要K8s 1.22+以上版本,并且是CSI创建的PV才可使用,命令中可以被缩写为RWOP。

虽然创建PV时可以指定不同的访问策略,但是也要后端的存储支持才行。

注意:PV目前没有Namespace隔离,不需要指定命名空间,在任意命名空间下创建的PV均可在其他Namespace使用。

3. PV的状态

  • Available:可用, 没有被PVC绑定的空闲资源。

  • Bound:已绑定, 已经被PVC绑定。

  • Released:已释放, PVC被删除, 但是资源还未被重新使用。

  • Failed:失败, 自动回收失败。

3. PersistenVolumeClaim

由kubernetes管理员提前创建PV,PVC是其他技术人员在kubernetes上对存储的申请,它可以表明一个程序需要用到什么样的后端存储、多大的空间以及以什么模式访问进行挂载。

说明:PVC和PV进行绑定的前提条件是一些参数必须匹配,比如accessModes、storageClassName、volumeMode都需必须相同,并且PVC的storage需要小于等于PV的storage配置。

0
博主关闭了所有页面的评论