首页 > kubernetes(k8s) > kubernetes之volume持久化操作
2019
09-09

kubernetes之volume持久化操作

Volume是Pod中能够被多个容器共享的磁盘目录。我们知道,默认情况下Docker容器中的数据都是非持久化的,在容器消亡后数据也会消失。因此Docker提供了Volume机制以便实现数据的持久化。Kubernetes中Volume的概念与Docker中的Volume类似,但不完全相同。具体区别如下 :

  • Kubernetes中的Volume与Pod的生命周期相同,但与容器的生命周期不相关。当容器终止或重启时,Volume中的数据也不会丢失。
  • 当Pod被删除时,Volume才会被清理。并且数据是否丢失取决于Volume的具体类型,比如emptyDir类型的Volume数据会丢失,而PV类型的数据则不会丢失

Kubernetes提供了非常丰富的Volume类型,下面是一些常用的Volume类型

  • emptyDir
  • hostPath

1.emptyDir

一个emptyDir volume是在Pod分配到Node时创建的。顾名思义,它的初始内容为空,在 同一个Pod中的所有容器 均可以读写这个emptyDir volume。当 Pod 从 Node 上被删除(Pod 被删除,或者 Pod 发生迁移),emptyDir 也会被删除,并且数据永久丢失。

例:

进入运行起来的pod查看是否被创建了cache这个目录

在同一pod里运行多个容器,共同挂载同一 volume 测试是否共享

容器启动后

查看test-container 与 my-redis

在test-shooter容器创建test文件夹创建一个文件
查看test-container容器的catch文件夹下,已经有了文件。说明共享同一个volume成功

2. hostPath

hostpath 将宿主机目录,映射到容器中 同docker的 -v 参数差不多 (至于你宿主机上的目录挂载如何来的,不关心)

启动后进入容器内部查看catch目录,并且创建一个文件

然后去对应节点根目录下data文件夹下查看是否有此目录

当然也可以多容器共享这个目录。

最后编辑:
作者:shooter
这个作者貌似有点懒,什么都没有留下。