零基础拿下云原生 CKA 认证
王雪飞
前东软高级工程师
644 人已学习
新⼈⾸单¥59
零基础拿下云原生 CKA 认证
15
15
1.0x
00:00/00:00
登录|注册

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
立即购买
登录 后留言

精选留言

由作者筛选后的优质留言将会公开显示,欢迎踊跃留言。
收起评论
显示
设置
留言
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部
文章页面操作
MAC
windows
作用
esc
esc
退出沉浸式阅读
shift + f
f11
进入/退出沉浸式
command + ⬆️
home
滚动到页面顶部
command + ⬇️
end
滚动到页面底部
⬅️ (仅针对订阅)
⬅️ (仅针对订阅)
上一篇
➡️ (仅针对订阅)
➡️ (仅针对订阅)
下一篇
command + j
page up
向下滚动一屏
command + k
page down
向上滚动一屏
p
p
音频播放/暂停
j
j
向下滚动一点
k
k
向上滚动一点
空格
空格
向下滚动一屏
播放器操作
MAC
windows
作用
esc
esc
退出全屏
⬅️
⬅️
快退
➡️
➡️
快进
空格
空格
视频播放/暂停(视频全屏时生效)