Kubernetes Kubernates中1个容器到另一个容器的共享卷

Kubernetes Kubernates中1个容器到另一个容器的共享卷,kubernetes,splunk,Kubernetes,Splunk,我被困在一个场景中,我必须将容器1的日志文件夹放入第二个容器中。我找到了一个解决方案,我们将在其中创建一个emptyDir目录 spec: containers: - name: app image: app-image imagePullPolicy: Always ports: - containerPort: 8080 volumeMounts: - name: logs mountPath: /var/log/app/

我被困在一个场景中,我必须将容器1的日志文件夹放入第二个容器中。我找到了一个解决方案,我们将在其中创建一个emptyDir目录

spec:
  containers:
  - name: app
    image: app-image
    imagePullPolicy: Always
    ports:
    - containerPort: 8080
    volumeMounts:
    - name: logs
      mountPath: /var/log/app/
  - name: uf
    image: splunk/splunkuniversalforwarder
    ...
    volumeMounts:
    - name: logs
      mountPath: /var/log/app/
  volumes:
  - name: logs
    emptyDir: {}
但在我的情况下,我想将第一个容器的/usr/var/log/tomcat/共享到/var/log/message中。这是因为splunkUF映像将监视/var/log/app/。因此,我想共享不同应用程序的日志文件夹,可以是/var/log/app/tomcat或/var/log/messages,但与splunk container/var/log/app/位于同一位置


我可以运行copy命令获取日志1次,但如何连续获取日志

如果您使用的是
PersistentVolumeClaim
PersistentVolume
,我得到了一个坏消息,因为访问模式非常有限。您想要的是
ReadWriteMany
,但它的支持非常有限。查看更多信息

您可以使用它,但是它有一些限制,必须共享一个节点主机,这可能不是一个理想的行为。我相信最适合你的情况是。

我看不出有什么问题。 您可以在每个容器中的不同位置装载相同的卷

根据您的描述,应该是这样的:

spec:
  containers:
  - name: app
    image: app-image
    ...
    volumeMounts:
    - name: logs
      mountPath: /usr/var/log/tomcat/
  - name: uf
    image: splunk/splunkuniversalforwarder
    ...
    volumeMounts:
    - name: logs
      mountPath: /var/log/app/
  volumes:
  - name: logs
    emptyDir: {}

你用的是哪个版本的kubernetes?我用的是最新版本,但有什么区别吗?因此,我记录了供参考的版本EmptyDir不好,因为一旦pod被重新分配,它将被删除。另外,您使用的是
还是
持久卷
?我要求一个版本,因为在测试版中有一些东西可能会帮助你,但这并不容易。例如:@UroshT。我没有使用测试版。那么,除了beta版之外,我的最佳选择是什么呢?@gamechanger17,您是否考虑过通过
rsyslog
设置远程日志记录,并在
/var/log/messages
中捕获所述的日志?还有解决问题的办法。是的,这就是问题所在。但是如果我进入uf容器,我在/var/log/app/location中看不到日志。你在tomcat容器的/usr/var/log/tomcat/中看到了日志吗?现在我可以看到共享卷上的日志,但Splunkuf没有将日志转发到服务器。我创建了一个新线程: