11|存储:通过数据卷持久化存储文件
王雪飞
你好,我是雪飞。
网络访问的问题解决了,我们再来看一下存储吧。应用中处理数据存储主要有两个场景:一是将数据保存到数据库中,通过代码连接到数据库服务,然后使用数据库 SQL 语句读写数据,这种方式不需要 K8s 集群提供存储;二是文件存储,由于 Pod 中的容器每次重启后,都会重新生成容器内的文件系统,所以应用在容器中保存的文件都无法在下次重启后保留。但是应用又需要把某些文件(如日志、用户上传文件等)长期保存,以便下次重启容器后还能再次访问使用,这就是文件的持久化存储问题,这种场景需要 K8s 集群来提供存储方案。
认识数据卷(Volume)
K8s 使用一个抽象的数据卷(Volume)来解决文件的持久化存储问题。在 Pod 中我们先定义了代表某种存储空间的 Volume,然后在 Pod 的容器中,通过把这个 Volume 挂载到容器中的某个目录,就可以建立一个空间映射关系,之后在容器中操作这个目录(例如创建目录、读写文件等),就相当于在该存储空间中进行操作,所以这些操作结果就自然地保留到了该存储空间中,从而实现了持久化存储。
数据卷有多种类型,以下是常用的几种:
节点本地存储:这类存储是在 Pod 所在的节点宿主机本地文件系统上进行文件存储,如 emptyDir 和 hostPath 类型。
网络共享存储:这类存储直接使用共享的网络存储服务,如 NFS 和 Ceph 等类型。
ConfigMap 和 Secret:这两种资源对象也可以作为 Volume,以配置文件的形式挂载到 Pod 中使用。之前已经介绍过它们。
persistentVolume(PV)和 persistentVolumeClaim(PVC):它们是 K8s 提供的用来解耦实际存储空间和存储需求的资源对象。PV 代表了某些存储空间,而 PVC 代表 Pod 对存储的需求,K8s 会自动根据存储需求 PVC 来选择合适的存储空间 PV 进行绑定,然后 Pod 就可以在容器中挂载 PVC 从而使用 PV 代表的存储空间。这个机制实现了存储空间管理和使用的分离。
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结
1. K8s提供多种类型的数据卷来解决文件的持久化存储问题,包括节点本地存储、网络共享存储、ConfigMap和Secret、persistentVolume(PV)和persistentVolumeClaim(PVC)。 2. NFS是一种适合文件共享或持久化存储的网络文件系统,可以实现多个Pod中的容器访问同一个网络文件系统。 3. PV和PVC资源对象的引入解决了Pod直接挂载各种存储空间可能导致的磁盘管理混乱问题,实现了存储资源的管理和使用的解耦隔离。 4. PV主要用于管理存储资源,可以由运维人员预先分配,或者通过存储类(Storage Class)动态分配。 5. PVC表达了Pod对存储资源的需求,当Pod需要存储空间时,可以创建PVC,K8s会给这个PVC自动选择一个合适的PV进行绑定。 6. PV+PVC模式符合研发和运维团队的组织架构需求,PV由运维人员预先分配并管理,PVC由研发人员维护,提高了存储资源管理的效率和灵活性。 7. PV的部署通过YAML文件实现,可以定义存储空间的容量大小、访问模式和回收策略等信息。 8. PVC的部署通过YAML文件实现,可以定义申请的存储空间大小和访问模式,K8s会自动寻找并绑定满足条件的PV。 9. 通过YAML文件部署Deployment,可以实现Pod中的容器挂载已经部署好的PVC,从而使用存储空间。
仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《零基础拿下云原生 CKA 认证》,新⼈⾸单¥59
《零基础拿下云原生 CKA 认证》,新⼈⾸单¥59
立即购买
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
精选留言
由作者筛选后的优质留言将会公开显示,欢迎踊跃留言。
收起评论