“数据卷”通常和“有状态”这个词同时出现,卷用于给有状态应用保存/共享状态。
常用的数据卷类型
1. emptyDir: 用于存储临时数据的空目录
emptyDir 是一个初始状态为空目录的数据卷,pod 内的 app 可以把它当成一个普通的文件夹使用。它的常见用途有:
- 使用内存盘提升缓存的 io 效率,emptyDir 可以指定为 memory 类型,提供高速读写空间。
- 为耗时长的任务提供检查点,以便任务能方便地从容器崩溃前的状态继续执行。
- 暂存区,比如用户上传的临时文件。
2. hostPath: 挂载主机路径
hostPath 将节点的一个路径挂载到容器内。这通常被 daemonSet 类型的 Pod 使用,用于访问主机上的某些资源,比如 fluentd 就需要抓取每个节点上的容器日志。
3. StorageClass、PersistenceVolumeClaim、PersistemceVolume
上述的两种数据卷,emptyDir 只是一个临时的存储空间,而 hostPath 呢是和节点绑定的,不能跨节点共享数据。
为了跨节点共享数据,实现数据与节点的解耦,我们就需要使用持久化存储卷(PersistemceVolume)。
PV 有三种使用方式:
- 方法一:ceph -> volume -> volumeMount
- 临时测试用
- 方法二:ceph -> pv ->(解耦) pvc -> volume -> volumeMount
- 麻烦,测试用
- 方法三:ceph -> sc -> pvc (动态生成 pv)-> volume -> volumeMount
- 最常用,主流用法
ceph 的部署——rook
待续