Volume的介绍及使用场景【一些需要持久化数据的程序或需要共享数据的程序才会用到Volume】
a、Container(容器)中的磁盘文件是短暂的,当容器崩溃时,kubelet会重新启动容器,但最初的文件将丢失,Container会以最干净的状态启动。
b、当一个Pod运行多个Container时,各个容器可能需要共享一些文件,Kubernetes Volume可以解决容器间文件共享的问题
c、日志收集的需求,需要在应用程序容器里面加一个sidecar,这个容器是一个收集日志的容器,比如filebeat,它通过volumes共享应用程序的日志文件目录
Volumes官方文档介绍
一般EmptyDir卷用于Pod中的不同Container共享数据,它可以被挂载到相同或不同的路径上
默认情况下,EmptyDir卷支持节点上的任何介质,可能是SSD、磁盘或网络存储,具体取决于自身的环境,可以将EmptyDir字段设置为Memory,让Kubetnetes使用tmpfs(内存支持的文件系统),虽然tmpfs非常快,但是tmpfs在节点重启时,数据同样会被清除,并且设置的大小会被计入到Container的内存限制中
apiVersion: v1
kind: Pod
metadata:
name: test-pd
spec:
containers:
- image: k8s.gcr.io/test-webserver
name: test-container
volumeMounts:
- mountPath: /cache
name: cache-volume
volumes:
- name: cache-volume
emptyDir: {}
下面来动手创建2个niginx的container试一下
编写创建deploy的yaml文件
根据创建的yaml文件,创建deploy资源
在容器1的opt目录下创建文件,在容器2的mnt目录下查看发现刚才创建的文件