Kubernetes Kubernates中1个容器到另一个容器的共享卷
我被困在一个场景中,我必须将容器1的日志文件夹放入第二个容器中。我找到了一个解决方案,我们将在其中创建一个emptyDir目录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/
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没有将日志转发到服务器。我创建了一个新线程: