Volume 概念

我们经常会说:容器和Pod是短暂的。其含义是它们的生命周期可能很短,会被频繁 地销毁和创建。容器销毁时,保存在容器内部文件系统中的数据都会被清除。为了持久化保存容器的数据,可以使用Kubemetes Volume。

VolumemountPod, Pod中的所有容器都可以访问这个Volume。当VolumemountPod, Pod中的所有容器都可以访问这个Volume。


emptyDir

emptyDir是最基础的Volume类型。正如其名字所示,一个emptyDir VolumeHost 上的一个空目录。emptyDir Volume对于容器来说是持久的,对于Pod则不是。当Pod从节点删除时, Volume的内容也会被删除。但如果只是容器被销毁而Pod还在,则Volume不受影响。也就是说:emptyDir Volume的生命周期与Pod —致

Pod中的所有容器都可以共享Volume,它们可以指定各自的mount路径。下面通过例 子来实践empty Dir:

Kubernetes之Volume

这里我们模拟了一个producer-consumer场景。Pod有两个容器producerconsumer,它 们共享一个VolumeO producer负责往Volume中写数据,consumer则是从Volume读取数据。

  • 文件最底部 volumes 定义了一个 emptyDir 类型的 Volume shared-volumeo
  • producer 容器将 shared-volume mount lj /producer dir 目录。
  • producer通过echo将数据写到文件hello里。
  • consumer 容器将 shared-volume mount U /consumer dir 目录。
  • consumer通过cat从文件hello读数据。

Kubernetes之Volume

kubectl logs显示容器consumer成功读到了 producer写入的数据,验证了两个容器共享 emptyDir Volume 因为emptyDirDocker Host文件系统里的目录,其效果相当于执行了 docker run -v /producer dir docker run -v /consumer diro 通过 docker inspect 査看容器的详细配置信息, 我们发现两个容器都mount 了同一个目录。

Kubernetes之Volume

这里/var/lib/kubelet/pods/3e6100eb-a97a-l 1 e7-8f72-0800274451 ad/volumes/kubemetes. io~ empty-dir/shared-volume 就是 emptyDir Host 上的真正路径。

emptyDirHost上创建的临时目录,其优点是能够方便地为Pod中的容器提供共享存 储,不需要额外的配置。它不具备持久性,如果Pod不存在了,emptyDir也就没有了。根据 这个特性,emptyDir特别适合Pod中的容器需要临时共享存储空间的场景,比如前面的生产 者消费者用例。


hostPath

hostPath Volume的作用是将Docker Host文件系统中已经存在的目录mountPod 的容器。大部分应用都不会使用hostPath Volume,因为这实际上增加了 Pod与节点的耦合, 限制了 Pod的使用。不过那些需要访问KubernetesDocker内部数据(配置文件和二进 制库)的应用则需要使用hostPath。比如 kube-apiserver kube-controller-manager 就是这样的应用,通过 kubectl edit —namespace=kube-system pod kube-apiserver-k8s-master 查 看 kube-apiserver Pod 的 配置。

 


外部 Storage Provider

如果Kubemetes部署在诸如AWSGCEAzure等公有云上,可以直接使用云硬盘作 为Volume。Kubernetes Volume可以使用主流的分布式存储,比如Ceph、GlusterFS。下面给出 Ceph的例子:

Kubernetes之Volume

Ceph 文件系统的 /some/path/in/side/cephfs 目录被 mount 到容器路径 /test-cepho 相对于emptyDirhostPath,这些Volume类型的最大特点就是不依赖Kuberneteso Volume的底层基础设施由独立的存储系统管理,与Kubernetes集群是分离的。数据被持久 化后,即使整个Kubernetes崩溃也不会受损。

 

相关文章: