同一个Pod里面的多个容器能够共享Pod级别的存储卷Volume,Volume可以被定义为各种类型,多个容器各自进行挂载操作,进行数据共享。

在下面的例子中,在pod内包含两个容器:tomcat和busybox,在pod级别设置volume “app-logs”,用于tomat向其中写日志文件,busybox读日志文件
配置文件pod-volume-applogs.yaml
设置的volume 为app-logs
类型为 emptyDir
挂载到tomcat容器内的/usr/local/tomcat/logs 目录;同时过载到busybox容器内的logs目录。
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: {}
[root@k8s-master ~]# kubectl get pod -o wide NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES volume-pod 2/2 Running 0 3m21s 10.240.0.39 k8s-node1 <none> <none>
通过kubectl logs 命令查看busybox容器的输出内容
[root@k8s-master ~]# kubectl logs volume-pod -c busybox 24-Mar-2020 21:44:47.401 INFO [main] org.apache.catalina.core.AprLifecycleListener.lifecycleEvent APR capabilities: IPv6 [true], sendfile [true], accept filters [false], random [true]. 24-Mar-2020 21:44:47.401 INFO [main] org.apache.catalina.core.AprLifecycleListener.lifecycleEvent APR/OpenSSL configuration: useAprConnector [false], useOpenSSL [true]
这个文件为tomcat生成的日志文件 /usr/local/tomcat/logs/catalina.2020-03-24.log的内容
登录tomcat容器进行查看
[root@k8s-master ~]# kubectl exec -it volume-pod -c tomcat /bin/bash root@volume-pod:/usr/local/tomcat# ls BUILDING.txt LICENSE README.md RUNNING.txt conf lib native-jni-lib webapps work CONTRIBUTING.md NOTICE RELEASE-NOTES bin include logs temp webapps.dist root@volume-pod:/usr/local/tomcat# cd logs/ root@volume-pod:/usr/local/tomcat/logs# ls catalina.2020-03-24.log localhost.2020-03-24.log manager.2020-03-24.log host-manager.2020-03-24.log localhost_access_log.2020-03-24.txt
[root@k8s-master ~]# kubectl exec -it volume-pod -c tomcat -- tail /usr/local/tomcat/logs/catalina.2020-03-24.log 24-Mar-2020 21:44:47.401 INFO [main] org.apache.catalina.core.AprLifecycleListener.lifecycleEvent APR capabilities: IPv6 [true], sendfile [true], accept filters [false], random [true]. 24-Mar-2020 21:44:47.401 INFO [main] org.apache.catalina.core.AprLifecycleListener.lifecycleEvent APR/OpenSSL configuration: useAprConnector [false], useOpenSSL [true] 24-Mar-2020 21:44:47.472 INFO [main] org.apache.catalina.core.AprLifecycleListener.initializeSSL OpenSSL successfully initialized [OpenSSL 1.1.1d 10 Sep 2019] 24-Mar-2020 21:44:47.635 INFO [main] org.apache.coyote.AbstractProtocol.init Initializing ProtocolHandler ["http-nio-8080"]