从 sidecar 容器访问 stdio 或写入根文件路径上的共享文件

问题描述

我正在使用一个商业第三方 docker 容器来处理由 stdio 定义的文件,例如cat ~/$FILE | docker run -i vendor_container:tag 或通过设置为固定文件位置 /filename 的文件,例如docker run -i -v ~/$FILE:/input.file vendor_container:tag。按照设计,系统设置为运行一次,然后容器完成。要处理另一个文件,需要运行一个新实例。

我正在努力将其集成到 Kubernetes 环境中,目的是通过事件系统获取文件数据并创建一个作业/knative 函数来即时执行处理。我遇到的问题是我不知道在系统被事件触发之前文件是什么。我正在构建一个 init 容器或 side car 来协调交互,但我不知道如何写入 stdio 或从 sidecar 容器写入 /input.file 以在主容器中进行处理。>

我一直在尝试使用 emptyDir 卷来处理此问题,但由于文件必须存储在 / 上,因此我无法在此处挂载目录。由于容器是来自第三方供应商的商业产品,我无法修改容器内的监视文件位置。

有没有办法在 / 上写入共享文件以便容器可以共享内容,或者从 pod 中的另一个容器写入一个容器的 stdio?有没有我没有想到的其他解决方法?

我正在尝试的音量配置是...

...
    volumeMounts:
      - mountPath: "/"
        name: input-dir
...
volumes:
  - name: input-dir
    emptyDir: {}

产生此错误: invalid mount config for type "bind": invalid specification: destination can't be '/'

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)