这里介绍Kubernetes卷中的emptyDir、hostPath卷
emptyDir卷
emptyDir卷的生命周期与Pod的生命周期相关联。换言之当Pod被删除时卷中的内容即会丢失,故其是一种临时性存储。由于Pod中各容器的文件系统是独立的,故通过emptyDir卷可以实现对同一个Pod中多个容器的数据共享
这里我们在一个Pod当中分别使用两个容器:fortune、nginx。前者会每隔几秒向卷中的html文件生成新内容;后者则会读取卷中的内容。配置文件如下所示
1 | apiVersion: apps/v1 |
效果如下所示,可以看到每隔一段时间通过Nginx访问的内容都不一样。说明nginx容器使用的文件内容是fortune容器是生成的
hostPath卷
hostPath卷指向的是K8s节点上的文件系统上的文件/目录。换言之,通过hostPath卷可以实现对同一K8s节点中多个Pod、容器的数据共享。而且由于该类型的卷不会因为Pod的消失而消失,故其是一种持久性存储。这里我们使用一个单节点的K8集群,确保测试Pod全部部署在一个集群节点当中。通过配置文件分别创建两个Pod。其中,第1个Pod包含2个容器;第2个Pod包含1个容器
1 | apiVersion: apps/v1 |
部署成功,如下所示
当我们通过节点的文件系统对hostpath卷建立文件内容时,该节点使用该卷的所有Pod、容器均可以看到,效果如下所示。
参考文献
- Kubernetes in Action中文版 Marko Luksa著
- 深入剖析Kubernetes 张磊著