7.k8s存储(Volume、PV、PVC、StorageClass)
k8s的存储
存储设计理念
kubernetes将存储资源抽象为存储卷(Volume),Volume独立于pod与pod具有相同生命周期的对象。
volume来源
-
以volume形式挂载到容器的对象包括:
-
ConfigMap
-
Secret
-
Downward API:将pod、容器的元数据信息以文件形式挂载到容器中使用
-
Projected Volume:用于解决将多个资源挂载同一个目录的问题
volumes: - name: all-in-one projected: sources: - secret: name: mysecret items: - key: username path: group/username - downwardAPI: items: - path: "labels" fieldRef: fieldPath: metadata.labels - configMap: name: mycm items: - key: config path: group/config # 参考教程https://kuberxy.github.io/2020/10/02/%E6%B7%B1%E5%85%A5%E8%A7%A3%E6%9E%90Pod%E5%AF%B9%E8%B1%A13%EF%BC%9AProjected%20Volume/#%E4%B8%89%E3%80%81Downward-API # https://www.cnblogs.com/Tao9/p/11954758.html
-
ServiceAccountToken:ServiceAccount的Token数据
-
-
宿主机本地存储类型
- emptyDir(临时存储卷):由pause容器创建的临时空间,生命周期与pod相同;可以通过medium=Memory设置为使用内存
- hostPath(节点存储卷):挂载宿主机上的文件和目录,可以用于持久化数据(风险是会随pod调度变换主机),可以用于访问宿主机的docker引擎、监控系统
-
持久存储PV和网络存储
pause容器的PID是1。而在kubernetes中容器的PID=1的进程即为容器本身的业务进程。
Kubernetes 中所谓的 pause 容器有时候也称为 infra
容器,它与用户容器”捆绑“运行在同一个 Pod 中,最大的作用是维护 Pod 网络协议栈(当然,也包括其他工作,下文会介绍)。
PV PVC StorageClass
PV是k8s中对存储资源抽象,是容器可以使用的资源。为了动态根据用户需求创建PV,系统管理员会先定义好创建PV的模板StorageClass,用户在使用时只需要引用对应的模板并写出所用存储大小、读写权限等即可,这些信息记录在PVC中。存储插件控制器会根据StorageClass和PVC中其他信息自动创建。
Storage Class
本质是自动化根据PVC创建PV并绑定,配置的参数包括:
- provisioner存储提供者
- Reclaim Policy:资源回收策略,包括Delete(默认,回收后删除)和Retain(回收后保留 )
- Allow Volume Expansion:是否运行扩容,需要Volume底层支持该功能
- Volume Binding Mode:绑定模式,Immediate(默认)和 WaitForFirstConsumer(当消费pvc的pod创建后才会创建pv并绑定)
PV状态的流转
PV在创建开始后,处于pending,直到创建完成状态变为available。当PVC和PV绑定后,状态变为bound。当绑定的PVC删除,则变为released。released后的PV无法进行再次和PVC绑定。
Volume Plugins
PV、PVC这种存储管理机制,需要将存储管理的代码放到k8s代码库中,与k8s一起发布管理,是In-Tree模式,这种模式与k8s紧耦合。另外一种扩展k8s存储方式是基于CSI标准,代码独立存在的方式,称为Out-of-Tree。
存储快照
存储快照的设计其实是仿照pvc & pv 体系的设计思想。当用户需要存储快照的功能时,可以通过VolumeSnapshot对象声明,并指定相应的VolumeSnapshotClass对象,之后由集群中的相关组件动态生成存储快照以及存储快照对应的对象VolumeSnapshotContent。
pshot对象声明,并指定相应的VolumeSnapshotClass对象,之后由集群中的相关组件动态生成存储快照以及存储快照对应的对象VolumeSnapshotContent。**
PVC 对象将其的 dataSource 字段指定为 VolumeSnapshot 对象,这样就可以恢复数据。
更多推荐
所有评论(0)