同一个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"]