当前位置:  首页>> 技术小册>> Kubernets合辑7-存储

Docker 中也有一个 volume 的概念,尽管它稍微宽松一些,管理也很少。在 Docker 中,卷就像是磁盘或是另一个容器中的一个目录。它的生命周期不受管理,直到最近才有了 local-disk-backed 卷。Docker 现在提供了卷驱动程序,但是功能还非常有限(例如Docker1.7只允许每个容器使用一个卷驱动,并且无法给卷传递参数)。

另一方面,Kubernetes 中的卷有明确的寿命——与封装它的 Pod 相同。所f以,卷的生命比 Pod 中的所有容器都长,当这个容器重启时数据仍然得以保存。当然,当 Pod 不再存在时,卷也将不复存在。也许更重要的是,Kubernetes 支持多种类型的卷,Pod 可以同时使用任意数量的卷。

卷的核心是目录,可能还包含了一些数据,可以通过 pod 中的容器来访问。该目录是如何形成的、支持该目录的介质以及其内容取决于所使用的特定卷类型。要使用卷,需要为 pod 指定为卷(spec.volumes 字段)以及将它挂载到容器的位置( spec.containers.volumeMounts 字段 )。

容器中的进程看到的是由其 Docker 镜像和卷组成的文件系统视图。Docker 镜像位于文件系统层次结构的根目录,任何卷都被挂载在镜像的指定路径中。卷无法挂载到其他卷上或与其他卷有硬连接。Pod 中的每个容器都必须独立指定每个卷的挂载位置。

Kubernetes支持的存储卷类型很多,有公有云环境、有本地宿主机目录、有分布式文件系统等,具体可参考:https://jimmysong.io/kubernetes-handbook/concepts/volume.html, 主要有以下几类:

  • emptyDir:临时存储,一般用于多个container之间共享
  • hostPath:使用宿主机目录
  • gitRepo:在容器启动前,将git仓库中的内容拉取到本地并挂载到容器中
  • 网络存储:
    • SAN
    • NAS
    • 分布式存储
    • 云存储

该分类下的相关小册推荐: