Kubernetes – Volume(卷)

容器磁盘上的文件是暂时的,这给在容器中运行的重要应用程序带来了一些问题。

首先,当容器崩溃时,kubelet将重新启动它,但是文件将丢失 — 容器将以一个干净的状态开始。其次,在一个Pod中运行容器时,常常需要在容器之间共享文件。Kubernetes卷抽象解决了这两个问题。

原理

Docker也有一个卷的概念,尽管它比较松散,管理也比较少。在Docker中,卷就是磁盘上或另一个容器中的目录。生存期没有管理,直到最近才出现了本地磁盘支持的卷。Docker现在提供了卷驱动程序,但是目前的功能非常有限(例如,从Docker 1.7开始,每个容器只允许一个卷驱动程序,并且没有办法将参数传递给卷)。

Kubernetes卷有一个明确的生命周期 —— 与卷所在pod一样。因此,卷的寿命比在Pod中运行的任何容器都长,并且跨容器重新启动时保留数据。当然,当一个pod终止时,卷也将终止。

Kubernetes支持多种类型的卷,一个Pod可以同时使用任意数量的卷。

卷的核心是一个目录,其中可能包含一些数据,可以访问Pod中的容器。

要使用卷,Pod要配置好卷的描述信息(.spec.volumes字段)和挂载位置(.spec.containers[*].volumeMounts)。

容器中的进程看到由其Docker镜像和卷组成的文件系统视图。Docker镜像位于文件系统的根目录下,任何卷都挂载在镜像内的指定路径上。卷不能挂载到其他卷或与其他卷的硬链接。Pod中的每个容器必须独立地指定在何处挂载每个卷。

卷的类型

Kubernetes支持很多类型的卷:

  • awsElasticBlockStore
  • azureDisk
  • azureFile
  • cephfs
  • cinder
  • configMap
  • csi
  • downwardAPI
  • emptyDir
  • fc (fibre channel)
  • flexVolume
  • flocker
  • gcePersistentDisk
  • gitRepo (deprecated)
  • glusterfs
  • hostPath
  • iscsi
  • local
  • nfs
  • persistentVolumeClaim
  • projected
  • portworxVolume
  • quobyte
  • rbd
  • scaleIO
  • secret
  • storageos
  • vsphereVolume

详情可参考官网

持久卷 与 持久卷声明

  • 持久性卷(PV) 是由管理员提供的网络存储。它是集群中的资源,独立于使用PV的任何单独pod。
  • 持久卷声明(PVC) pod所需存储空间的声明。用户不需要知道底层配置,声明必须在创建pod的相同命名空间中创建。


浙ICP备17015664号 浙公网安备 33011002012336号 联系我们 网站地图  
@2019 qikegu.com 版权所有,禁止转载