摘自:https://www.kubernetes.org.cn/5128.html
1、将k8s中的存储分类与熟知的存储概念对应起来:
- (1)块存储通常只支持RWO,比如AWSElasticBlockStore,AzureDisk,有些产品能做到支持ROX,比如GCEPersistentDisk,RBD,ScaleIO等
- (2)文件存储(分布式文件系统)支持RWO/ROX/RWX三种模式,比如CephFS,GlusterFS和AzureFile
- (3)对象存储不需要PV/PVC来做资源抽象,应用可以直接访问和使用
2、使用容器存储的应用场景
了解各个业务对于存储的需求
2.1 配置
无论集群配置信息还是应用配置信息,其特点是并发访问,也就是前边提到的ROX/RWX,在不同集群或者不同节点,都能够访问同样的配置文件,分布式文件存储是最优选择。
2.2 日志
在容器场景中,日志是很重要的一部分内容,其特点是高吞吐,有可能会产生大量小文件。如果有日志分析场景,还会有大量并发读操作。分布式文件存储是最优选择。
2.3 应用(数据库/消息队列/大数据)
Kafka,MySQL,Cassandra,PostgreSQL,ElasticSearch,HDFS等应用,本身具备了存储数据的能力,对底层存储的要求就是高IOPS,低延迟。底层存储最好有数据冗余机制,上层应用就可以避免复杂的故障和恢复处理。以HDFS为例,当某个datanode节点掉线后,原有逻辑中,会选择启动新的datanode,触发恢复逻辑,完成数据副本补全,这段时间会比较长,而且对业务影响也比较大。如果底层存储有副本机制,HDFS集群就可以设置为单副本,datanode节点掉线后,启动新的datanode,挂载原有的pv,集群恢复正常,对业务的影响缩短为秒级。高性能分布式文件存储和高性能分布式块存储是最优选择。
2.4 备份
应用数据的备份或者数据库的备份,其特点是高吞吐,数据量大,低成本。文件存储和对象存储最优。综合应用场景,高性能文件存储是最优选择。
3、选择性优先级
Kubernetes持久化存储方案的重点在存储和容器支持上。因此首要考虑存储的核心功能和容器的场景支持。综合本文所述,将选择项按优先级列举:
- 存储的三大核心,高可靠,高可用和高性能
- 业务场景,选择分布式文件存储
- 扩展性,存储能横向扩展,应对业务增长需求
- 可运维性,存储的运维难度不亚于存储的开发,选择运维便捷存储产品
- 成本