2017-08-24 56 views
0

我的容器有两个容器 - 主容器和边车容器,用于监视主容器中的/var/run/utmp文件,并在其更改时采取相应措施。我试图弄清楚如何让这个文件在边车容器中可见。我可以在容器中的容器之间共享单个文件吗?

This page描述如何使用卷来共享容器中容器之间的目录。但是,这似乎只适用于目录,而不是单个文件。我也不能使用这种策略来共享主容器中的整个/var/run/目录,因为在那里安装一个卷会擦除容器需要运行的目录的内容。

我试图通过在另一个目录中创建一个符号链接到utmp并安装该目录来解决此问题,但它看起来并不像卷中的符号链接以它们需要的方式解决它的工作方式。

有没有什么办法可以让容器中的一个文件对同一个容器中的其他容器可见?我正在试验的清单看起来像这样:

apiVersion: v1 
kind: Pod 
metadata: 
    name: utmp-demo 

spec: 
    restartPolicy: Never 

    containers: 
    - name: main 
    image: debian 
    command: ["/bin/bash"] 
    args: ["-c", "sleep infinity"] 
    volumeMounts: 
    - name: main-run 
     mountPath: /var/run # or /var/run/utmp, which crashes 

    - name: helper 
    image: debian 
    command: ["/bin/bash"] 
    args: ["-c", "sleep infinity"] 
    volumeMounts: 
    - name: main-run 
     mountPath: /tmp/main-run 

    volumes: 
    - name: main-run 
    emptyDir: {} 
+0

不知道subPath是否可以在这里工作,但可能值得尝试。[Here](https://github.com/kubernetes/kubernetes/issues/41638)就是一个例子。但我会尝试在路径中包含文件名,类似于只包含configMap的一个文件。 – oe18

+0

似乎没有帮助,即使使用subPath,目录的其余部分似乎也被清除了。 –

+0

那么简单地创建/ var/run/utmp文件与主容器启动时的原始文件具有相同的权限呢?我认为它在开始时已经是一个空文件(没有安装任何音量)。 – turkenh

回答

1

如果您可以将文件移动到空子文件夹中共享,这可能是一个简单的解决方案。

例如,将文件移动到/ var/run/utmp/utmp并与emptydir共享/ var/run/utmp文件夹。

+0

不幸的是,这在我的情况下不起作用,因为/ var/run/utmp的位置是由Linux定义的,无法移动。 –

相关问题