停止k8s initContainers卷覆盖容器文件夹

时间:2018-12-20 05:10:44

标签: kubernetes

我需要在启动时将文件下载到Pod上容器的特定文件夹中。该容器的图像已经具有一个包含其他文件的现有文件夹。 (例如,将插件jar添加到应用程序中)

我尝试了以下示例,但是k8s volumeMounts覆盖了容器上的文件夹。

在下面的示例中,“ / existing-folder-on-my-app-image /”是my-app图像上已经包含文件的文件夹。当使用以下内容时,我只会在文件夹“ / existing-folder-on-my-app-image /”中获得下载的plugin.jar,而现有文件将被删除。

我想将其他文件添加到此文件夹,但仍将这些文件从哪里开始。

如何阻止k8覆盖'/ existing-folder-on-my-app-image /',使其仅包含initContainer中的文件?

apiVersion: v1
kind: Pod
metadata:
  name: my-app
spec:
  initContainers:
  - name: config-data
    image: joosthofman/wget:1.0
    command: ["sh","-c","wget https://url.to.plugins/plugin.jar --no-check-certificate"]
    volumeMounts:
    - name: config-data
      mountPath: /config
  containers:
  - name: my-app
    image: my-app:latest
    volumeMounts:
    - name: config-data
      mountPath: /existing-folder-on-my-app-image/     
  volumes:
  - name: config-data
    emptyDir: {}

1 个答案:

答案 0 :(得分:1)

卷挂载始终会遮盖它们挂载到的目录。卷挂载是初始化容器管理对Pod中的另一个容器也可见的文件的唯一方法。如果要将文件复制到主容器映像中已经包含文件的目录中,则需要在容器启动过程中执行该复制