Kubernetes PersistentVolume
本文将介绍 Kubernetes 中的 PersistentVolume。
一、什么是 PersistentVolume?
Pod 并没有持久化功能,一旦发生容器重建,容器将重新由固定的镜像文件生成,一切都会回到初始状态,数据也就丢失了。
因此,Kubernetes 设计了 PersistentVolume 对象,它专门用于表示持久存储设备。
需要注意的是,我们无需关心存储的底层实现,只需要知道它能够可靠安全地保管数据即可。它们一般会由系统管理员单独维护,只在 Kubernetes 中通过 PersistentVolume 做简单关联,这是因为 PersistentVolume 往往和存储设备、文件系统相关,对它们的管理超出了 Kubernetes 的能力范围。
二、什么是 PersistentVolumeClaim、StorageClass?
考虑到不同的存储设备存在着大量的差异:速度快慢、可否共享读写、容量大小…,这么多存储设备不适合直接管理。
因此,Kubernetes 设计了 PersistentVolumeClaim、StorageClass 这两个对象。
PersistentVolumeClaim,供 Pod 使用,相当于
它们的工作方式是这样的:
- PersistentVolumeClaim 是 Pod 的助手,帮助 Pod 向 Kubernetes 申请存储资源
- StorageClass 将 PersistentVolume 抽象为若干类型,穿插在 PersistentVolumeClaim 和 PersistentVolume 之间,比main二者的强绑定关系
三、PersistentVolume 的配置文件
1 |
|
具体来说:
- accessModes 定义了存储设备的访问模式,共有以下三种:
- ReadWriteOnce:可读可写;只能一个 Pod 挂载
- ReadOnlyMany:可读不可写;能被若干 Pod 挂载
- ReadWriteMany:可读可写;能被若干 Pod 挂载
四、PersistentVolumeClaim 的配置文件
1 |
|
参考
- Kubernetes
- Kubernetes 入门实战课
- 深入剖析 Kubernetes