我需要在启动时将文件下载到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: {}
答案 0 :(得分:1)
卷挂载始终会遮盖它们挂载到的目录。卷挂载是初始化容器管理对Pod中的另一个容器也可见的文件的唯一方法。如果要将文件复制到主容器映像中已经包含文件的目录中,则需要在容器启动过程中执行该复制