k8s存储卷与数据持久化
Kubernetes支持多种存储卷类型,这些类型包括:
-
临时存储卷:emptyDir。在Pod和其下所有容器之间共享的临时空目录,只在该Pod的生命周期内存在。emptyDir通常用于容器之间共享文件,如共享配置文件等。
-
本地存储卷:hostPath:在每个节点上的主机文件系统中创建一个目录或文件,并将其挂载到Pod中。hostPath通常用于需要在容器内直接访问主机文件系统的情况,如日志文件。
- 网络存储卷:云存储awsEBS、azureFile,网络文件系统NFS、GlusterFS、CephFS、Cinder,网络块存储iscsi、FC。
- 特殊存储卷:Secret、ConfigMap、DownwardAPI、Projected。
- 自定义存储插件
由于底层存储配置相对比较复杂,除了直接在资源清单上配置挂载使用这些存储卷,还可以由管理员事先适配定义存储资源配置,用户声明存储需求使用定义好的存储资源。
有两个相关的概念:持久卷(Persistent Volume,PV)和持久卷声明(Persistent Volume Claim,PVC)。
PV是在Kubernetes集群范围内动态创建,可以由集群管理员创建或由存储管理员创建,它定义了存储卷的属性和规范,而PVC则是对PV的请求,并定义了应该如何使用PV。PVC拥有容量、访问模式和存储类等属性,并将这些属性与PV相关联,以方便Pod的访问和使用。
当Pod请求使用持久卷时,Kubernetes会使用PVC来选择一个PV,并通过PV将持久卷挂载到Pod中。一旦Pod被删除,对应的PVC也会被删除;而PV则可以被重用。
PV的生命周期
- 存储预配:存储预配是指为PVC准备PV的过程,k8s有静态、动态两种预配方式,静态是指管理员手工创建PV的操作,动态是基于StorageClass(存储类)定义模板创建。
- 存储绑定:用户基于存储需求和访问模式定义好PPVC后,PV控制器即会为其寻找匹配的PV,完成关联后它们二者同时转为已绑定状态。
- 存储使用:pod资源基于PVC存储卷的定义用于容器内部应用的数据存取。
- 存储回收:存储卷的目标完成之后,删除PVC对象可使关联的PV处于released状态,之后处理机制依赖于回收策略。
PV回收策略
- Retain(保留):删除PVC后将保留其绑定的PV及数据,但会把该PV置为Released状态,不再可以和其他PVC绑定,需要管理手工清理。
- Delete(删除):删除PVC的同时删除PV资源以及关联的外部存储组件;动态PV回收策略继承自SC资源,默认为Delete。
- Recycle(回收):删除PVC后数据删除,但是PV重新可以为PVC绑定。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)