我的容器有两个容器 - 主容器和边车容器,用于监视主容器中的/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: {}
不知道subPath是否可以在这里工作,但可能值得尝试。[Here](https://github.com/kubernetes/kubernetes/issues/41638)就是一个例子。但我会尝试在路径中包含文件名,类似于只包含configMap的一个文件。 – oe18
似乎没有帮助,即使使用subPath,目录的其余部分似乎也被清除了。 –
那么简单地创建/ var/run/utmp文件与主容器启动时的原始文件具有相同的权限呢?我认为它在开始时已经是一个空文件(没有安装任何音量)。 – turkenh