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

时间:2018-11-22 07:51:49

标签: kubernetes splunk

我被困在必须将容器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容器/ var / log / app /位于同一位置。

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

2 个答案:

答案 0 :(得分:2)

我在这里看不到问题。 您可以将相同的卷安装在每个容器的不同位置。

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

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: {}

答案 1 :(得分:0)

如果您使用的是PersistentVolumeClaimPersistentVolume,则我会收到一个坏消息,因为访问模式非常有限。您想要的是ReadWriteMany,但它的支持ATM确实很有限。查看更多信息here

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