Kubernetes Volume 类型介绍

前言

本文介绍 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 存储插件的开发实践

原文地址:https://www.cnblogs.com/huanggze/p/12498713.html