kubernetes基础篇——kubernetes存储机制

 volume

为何需要使用volume处理存储

1、防止容器重新创建启动时导致的数据丢失

2、解决容器之间的文件数据共享问题

 kubernetes 的volume和docker的volume之间的区别

Docker 也有 Volume 的概念,但对它只有少量且松散的管理。 在 Docker 中,Volume 是磁盘上或者另外一个容器内的一个目录。 直到最近,Docker 才支持对基于本地磁盘的 Volume 的生存期进行管理。 虽然 Docker 现在也能提供 Volume 驱动程序,但是目前功能还非常有限 (例如,截至 Docker 1.7,每个容器只允许有一个 Volume 驱动程序,并且无法将参数传递给卷)。

另一方面,Kubernetes 卷具有明确的生命周期——与包裹它的 Pod 相同。 因此,卷比 Pod 中运行的任何容器的存活期都长,在容器重新启动时数据也会得到保留。 当然,当一个 Pod 不再存在时,卷也将不再存在。 也许更重要的是,Kubernetes 可以支持许多类型的卷,Pod 也能同时使用任意数量的卷。

卷的核心是包含一些数据的目录,Pod 中的容器可以访问该目录。 特定的卷类型可以决定这个目录如何形成的,并能决定它支持何种介质,以及目录中存放什么内容。

使用卷时, Pod 声明中需要提供卷的类型 (.spec.volumes 字段)和卷挂载的位置 (.spec.containers.volumeMounts 字段).

 

volume有哪些类型

非持久性存储

emptyDir  

把宿主机的空目录挂载到pod, 会在宿主机上创建数据卷目录并挂在到容器中。这种方式,Pod被删除后,数据也会丢失

hostPath  

把宿主机的真实存在的目录挂载到pod

网络连接性存储

SAN:iSCSI

NFS:nfs,cfs

  把nfs共享存储的目录挂载到pod,把Glusterfs共享存储的目录挂载到pod

分布式存储

Glusterfs

RBD (Ceph Block Device)

CephFS

Portworx Volumes

Quobyte Volumes

云端存储

阿里云

GCEPersistentDisk

AWSElasticBlockStore

AzureFile

AzureDisk

Cinder (OpenStack block storage)

VsphereVolume

StorageOS

自定义存储

FlexVolume

volume存储卷类型详解

awsElasticBlockStore

  awsElasticBlockStore 卷将 Amazon Web服务(AWS)EBS 卷 挂载到您的 Pod 中。

azureDisk

  azureDisk 用来在 Pod 上挂载 Microsoft Azure 数据盘(Data Disk)

azureFile

  azureFile 用来在 Pod 上挂载 Microsoft Azure 文件卷(File Volume) (SMB 2.1 和 3.0)

cephfs

  cephfs 允许您将现存的 CephFS 卷挂载到 Pod 中。 不像 emptyDir 那样会在删除 Pod 的同时也会被删除,cephfs 卷的内容在删除 Pod 时会被保留,卷只是被卸载掉了。 这意味着 CephFS 卷可以被预先填充数据,并且这些数据可以在 Pod 之间"传递"。CephFS 卷可同时被多个写者挂载。

  注意: 在您使用 Ceph 卷之前,您的 Ceph 服务器必须正常运行并且要使用的 share 被导出(exported)

cinder

  说明: 先决条件:配置了OpenStack Cloud Provider 的 Kubernetes。

  cinder 用于将 OpenStack Cinder 卷安装到 Pod 中。

configMap

  configMap 资源提供了向 Pod 注入配置数据的方法。 ConfigMap 对象中存储的数据可以被 configMap 类型的卷引用,然后被应用到 Pod 中运行的容器化应用。

  当引用 configMap 对象时,你可以简单的在 Volume 中通过它名称来引用。 还可以自定义 ConfigMap 中特定条目所要使用的路径。

csi

  启用Cinder的CSI迁移功能后,它会将所有插件操作从现有的内建插件填添加 cinder.csi.openstack.org 容器存储接口(CSI)驱动程序中。 为了使用此功能,必须在群集上安装 Openstack Cinder CSI驱动程序, 并且 CSIMigration 和 CSIMigrationOpenStack Alpha功能 必须启用。

downwardAPI

  downwardAPI 卷用于使 downward API 数据对应用程序可用。 这种卷类型挂载一个目录并在纯文本文件中写入请求的数据

emptyDir

  当 Pod 指定到某个节点上时,首先创建的是一个 emptyDir 卷,并且只要 Pod 在该节点上运行,卷就一直存在。 就像它的名称表示的那样,卷最初是空的。 尽管 Pod 中的容器挂载 emptyDir 卷的路径可能相同也可能不同,但是这些容器都可以读写 emptyDir 卷中相同的文件。 当 Pod 因为某些原因被从节点上删除时,emptyDir 卷中的数据也会永久删除。

  emptyDir 的一些用途:

    缓存空间,例如基于磁盘的归并排序。

    为耗时较长的计算任务提供检查点,以便任务能方便地从崩溃前状态恢复执行。

    在 Web 服务器容器服务数据时,保存内容管理器容器获取的文件。

fc (fibre channel)

   fc 卷允许将现有的光纤通道卷挂载到 Pod 中。 可以使用卷配置中的参数 targetWWNs 来指定单个或多个目标 WWN。 如果指定多个 WWN,targetWWNs 期望这些 WWN 来自多路径连接。

    注意: 您必须配置 FC SAN Zoning,以便预先向目标 WWN 分配和屏蔽这些 LUN(卷),这样 Kubernetes 主机才可以访问它们

flexVolume

  用户必须在每个节点(在某些情况下是主节点)上的预定义卷插件路径中安装 FlexVolume 驱动程序可执行文件。

flocker

  提供了由各种存储后备支持的数据卷的管理和编排,在使用 Flocker 之前必须先安装运行自己的 Flocker。

gcePersistentDisk

  能将谷歌计算引擎 (GCE) 持久盘(PD) 挂载到您的 Pod 中。

gitRepo (deprecated) ,已弃用

glusterfs

  glusterfs 卷能将 Glusterfs (一个开源的网络文件系统) 挂载到 Pod 中

hostPath

  hostPath 卷能将主机节点文件系统上的文件或目录挂载到 Pod 中。

iscsi

  iscsi 卷能将 iSCSI (基于 IP 的 SCSI) 挂载到您的 Pod 中,使用 iSCSI 卷之前,您必须拥有自己的 iSCSI 服务器,并在上面创建卷。可以同时被多个用户以只读方式挂载。但不允许同时写入。

local

  local 卷指的是所挂载的某个本地存储设备,例如磁盘、分区或者目录。只能用作静态创建的持久卷。尚不支持动态配置。 可以以持久和可移植的方式使用,而无需手动将 Pod 调度到节点。如果节点变得不健康,那么local 卷也将变得不可访问,并且使用它的 Pod 将不能运行。

nfs

  能将 NFS (网络文件系统) 挂载到您的 Pod 中。使用 NFS 卷之前,必须运行自己的 NFS 服务器并将目标 share 导出备用。

persistentVolumeClaim

  portworxVolume 是一个可伸缩的块存储层,能够以超聚合(hyperconverged)的方式与 Kubernetes 一起运行。

projected

  能将若干现有的卷来源映射到同一目录上。

    目前,可以映射的卷来源类型如下:

secret

downwardAPI

configMap

serviceAccountToken

所有的卷来源需要和 Pod 处于相同的命名空间。

portworxVolume

 portworxVolume 是一个可伸缩的块存储层,能够以超聚合(hyperconverged)的方式与 Kubernetes 一起运行。

quobyte

quobyte 卷允许将现有的 Quobyte 卷挂载到您的 Pod 中。 在使用 Quobyte 卷之前,您首先要进行安装并创建好卷。

rbd

 将 Rados 块设备 卷挂载到您的 Pod 中, 在使用 RBD 之前,您必须安装运行 Ceph。它可以同时被多个用户以只读方式挂载。 只能由单个使用者以读写模式安装——不允许同时写入。

scaleIO

 基于软件的存储平台,可以使用现有硬件来创建可伸缩的、共享的而且是网络化的块存储集群。 

secret

  用来给 Pod 传递敏感信息,例如密码。您可以将 secret 存储在 Kubernetes API 服务器上,然后以文件的形式挂在到 Pod 中,无需直接与 Kubernetes 耦合。 secret 卷由 tmpfs(基于 RAM 的文件系统)提供存储,因此它们永远不会被写入非易失性(持久化的)存储器。 使用前您必须在 Kubernetes API 中创建 secret。

storageos

 允许将现有的 StorageOS 卷挂载到您的 Pod 中。

vsphereVolume

   前提条件:配备了 vSphere 云驱动的 Kubernetes,将 vSphere VMDK 卷挂载到您的 Pod 中。 在卸载卷时,卷的内容会被保留。 vSphereVolume 卷类型支持 VMFS 和 VSAN 数据仓库。

   注意: 在挂载到 Pod 之前,您必须用下列方式之一创建 VMDK。

持久卷 PersistentVolume(PV)

持久卷(PersistentVolume,PV)是集群中的一块存储

PV 持久卷和普通的 Volume 一样,也是使用 卷插件来实现的,只是它们拥有独立于任何使用 PV 的 Pod 的生命周期。 此 API 对象中记述了存储的实现细节,无论其背后是 NFS、iSCSI 还是特定于云平台的存储系统。

 

PersistentVolumeClaim(PVC)

是由用户进行存储的请求,类似pod。 Pod消耗节点资源,PVC消耗PV资源。可以请求特定的大小和访问模式(例如,可以一次读/写或多次只读)。

卷快照

卷快照是一个存储系统上卷的快照

与 PersistentVolume 和 PersistentVolumeClaim 两个 API 资源用于给用户和管理员提供卷类似,VolumeSnapshotContent 和 VolumeSnapshot 两个 API 资源用于给用户和管理员创建卷快照。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值