数据卷
数据卷是用来持久化数据的,它的生命周期独立于容器,pod被删除后,数据卷中的数据不会丢失。
存储方案管理
存储方案基于 kubernetes 的 storageclass 概念定义了一套存储的模板。在创建数据卷(PVC)时,kubernetes 可以根据存储方案的配置,在存储系统动态创建相应大小的数据卷。
目前支持 GlusterFS 的存储。在创建存储方案时,需要填入 heketi 的 ip 及端口到 resturl 栏中。高级选项里的配置为可选的。
创建完成后可以在列表中看到。单击右上角可以删除。
数据卷管理
数据卷可以提供很多有用的特性:
- 数据卷可以在Pod和容器之间共享和重用
- 对数据卷的修改会立马生效
- 数据卷默认会一直存在,即使Pod被删除
创建数据卷时,先选择集群和分区。使用已有方案创建数据卷时,只要选择存储方案并填写所需大小。需要注意的是,当存储方案有错误时,新建数据卷的请求也能被提交,但是最后会失败。
- 单节点读写(ReadWriteOnce): 数据卷只能被一个节点挂载并读写。
- 多节点读写(ReadWriteMany): 数据卷能被多个节点挂载并读写。
- 多节点只读(ReadOnlyMany): 数据卷能被多个节点挂载只读。
如果不使用存储方案,则需手动配置存储。以 glusterfs 为例,需要现在 glusterfs 存储集群创建好 volume,假设为 test-vol
。然后在 kubernetes 创建好 endpoints 和 service,假设为glusterfs-cluster
。然后就可以以下图形式创建数据卷。
如果不想通过命令行创建 endpoints 和 service,也可以直接填入 glusterfs 集群的 ip。假设 glusterfs 集群有 3 个节点:192.168.16.101
、192.168.16.102
、192.168.16.103
。
使用数据卷
建好的数据卷可以以 pvc 的形式被 pod 挂载。数据卷是受分区隔离的,所以要先选择数据卷所在的分区。如下图,先选择了刚才创建的数据卷 glusterfs-volume
,然后挂载到 mongo 容器的 /data/db
目录。