同一个Pod中的多个容器能够共享pod级别的存储卷Volume。
Volume可以被定义为各种类型,多个容器各自进行挂载操作,将一个Volume挂载为容器内部需要的目录,
如图3.2所示:
在下面的例子中,pod内包含2个容器:tomcat和busybox,在pod级别设置Volume “app-logs”,用于tomcat容器向其中写日志文件,busybox容器从中读日志文件。
配置文件pod-volume-applogs.yaml的内容如下:
apiVersion: v1
kind: Pod
metadata:
name: volume-pod
spec:
containers:
- name: tomcat
image: tomcat
ports:
- containerPort: 8080
volumeMounts:
- name: app-logs
mountPath: /usr/local/tomcat/logs
- name: busybox
image: busybox
command: ["sh", "-c", "tail -f /logs/catalina*.log"]
volumeMounts:
- name: app-logs
mountPath: /logs
volumes:
- name: app-logs
emptyDir: {}
这里设置的Volume名称为app-logs,类型为emptyDir(也可以设置为其他类型)
挂载到tomat容器内的/usr/local/tomcat/logs目录下,
同时挂载到busybox容器内的/logs目录下。
tomcat容器在启动后会向/usr/local/tomcat/logs目录写文件,busybox容器就可以读取器中的文件了。
busybox容器的启动命令为tail -f /logs/catalina*.log,我们可以通过kubectl logs命令查看busybox容器的输出内容
kubectl logs volume-pod -c busybox
这个文件为tomcat生成的日志文件
/usr/local/tomcat/logs/catalina.<data>.log
的内容。
登陆tomcat容器进行查看:
kubectl exec -it volume-pod -c tomcat --ls
kubectl exec -it volume-pod -c tomcat --tail /usr/local/tomcat/logs/catalina.2020-07-29.log