前言
本文介绍 Kubernetes 常见 Volume 类型,了解存储基本知识:(1)三种主流存储类型:文件存储、块存储、对象存储;(2)三种云环境主流存储架构:DAS、NAS、SAN 等概念。
概念
建议回顾 YouTube 视频:File (NAS) vs. Block (SAN) vs. Object Cloud Storage,了解云存储知识及各种存储的使用场景。
文件存储、块存储、对象存储
文件、块和对象是三种以不同的方式来保存、整理和呈现数据的存储格式。这些格式各有各的功能和限制。文件存储会以文件和文件夹的层次结构来整理和呈现数据;块存储会将数据拆分到任意划分且大小相同的卷中; 对象存储会管理数据并将其链接至关联的元数据。
直连式存储、网络附加存储、存储区域网络
直连式存储(Direct-Attached Storage,DAS)是指直接和计算机相连接的数据储存方式,其与通过计算机网络连接的其它存储技术相对。像固态硬盘、机械硬盘、光盘驱动器与计算机直接相连的设备都是属于直连式存储设备。实际上,直连式存储的名称是后来为了区别于存储区域网络(SAN)和网络附加存储(NAS)而添加的。
网络附加存储(Network Attached Storage,NAS)是指通过网络相连的存储设备实现数据存储的机制。每个 NAS 设备都具有自己的唯一 IP 地址。像 Google Drive、Dropbox、iCloud 等网盘都可以看作是网络附加存储。
存储区域网络(Storage Area Network,SAN)是一种连接外接存储设备和服务器的架构,采用包括光纤通道技术、磁盘阵列、磁带柜、光盘柜的各种技术进行实现。除针对大型企业的企业级存储方案外,随着价格和复杂度的降低,越来越多的中小型企业也在逐步采用该项技术。
常见 Volume 类型
awsElasticBlockStore
Amazon Elastic Block Store(EBS)是一种易于使用的高性能数据块存储服务。EBS 提供四种不同的卷类型,价位和性能水平各不相同,让您能够优化成本并购买最符合您的应用程序需求的存储。选择范围从每 GB 高性价比的卷到专为任务关键型工作负载而设计、具有高 IOPS 和高吞吐量的高性能卷。
azureDisk
Azure 托管磁盘是由 Azure 托管并与 Azure 虚拟机配合使用的块级存储卷。 托管磁盘类似于本地服务器中的物理磁盘,但它是虚拟化的。 使用托管磁盘时,只需指定磁盘大小、磁盘类型并预配磁盘即可。可用的磁盘类型包括超级磁盘、高级固态硬盘(SSD)、标准 SSD 和标准硬盘驱动器(HDD)。 有关每种磁盘类型的信息,请参阅选择适用于 IaaS VM 的磁盘类型。
azureFile
Azure 文件是 Microsoft 推出的云文件系统。Azure 文件在云端提供完全托管的文件共享。Azure 文件共享可用于取代或补充本地文件服务器。可以使用 Azure 文件来完全取代或补充传统的本地文件服务器或 NAS 设备。 流行的操作系统(例如 Windows、macOS 和 Linux)可在世界各地直接装载 Azure 文件共享。
cephfs
Ceph 文件系统是个 POSIX 兼容的分布式文件系统。它使用 Ceph 存储集群来存储数据,可以将 Ceph 集群看做一个共享文件系统挂载到本地。在 Kubernetes 中使用 cephfs 需要先安装 Ceph 服务器。
glusterfs
Gluster 是一种可扩展的分布式文件系统,可将来自多个服务器的磁盘存储资源聚合到一个全局命名空间中。
nfs
网络文件系统是一种分布式文件系统,使客户端主机可以访问服务器端文件,并且其过程与访问本地存储时一样。
rbd
Rados Block Device 是 Ceph 提供的块存储。使用 rbd 需要搭建 Ceph 集群。
csi
早期存储插件是和 Kubernetes 核心代码紧密绑定,目前推荐的方式是使用 Container Storage Interface(CSI)。一个使用 AWS EBS CSI 的例子:
apiVersion: v1
kind: PersistentVolume
metadata:
name: test-pv
spec:
capacity:
storage: 50Gi
volumeMode: Filesystem
accessModes:
- ReadWriteOnce
storageClassName: ebs-sc
csi:
driver: ebs.csi.aws.com
volumeHandle: vol-05786ec9ec9526b67
fsType: xfs
nodeAffinity:
required:
nodeSelectorTerms:
- matchExpressions:
- key: topology.ebs.csi.aws.com/zone
operator: In
values:
- us-east-1c
更多关于 CSI 的资料请阅读基于 CSI Kubernetes 存储插件的开发实践。
参考资料
[1] Red Hat:文件存储、块存储还是对象存储?
[2] What’s the Difference Between Block, File and Object-based Data Storage?
[3] YouTube: File (NAS) vs. Block (SAN) vs. Object Cloud Storage
[4] Amazon Elastic Block Store 易于使用、适用于任何规模的高性能数据块存储
[5] Azure 托管磁盘简介
[6] 什么是 Azure 文件?
[7] 基于 CSI Kubernetes 存储插件的开发实践