我正在运行python pod。
这个python pod使用了不同的共享库。为了简化调试共享库,我也希望在主机上也有libs目录。
python依赖项位于/usr/local/lib/python3.8/site-packages/
中,我想在主机上访问此目录以修改某些文件。
有可能吗?我已经尝试过使用emptyDir
和PV
,但是它们始终会覆盖目录中已经存在的内容。
谢谢!
答案 0 :(得分:1)
这是设计使然。 Kubelet负责为您的容器准备支架。在安装时,它们是空的,并且kubelet没有理由在其中放入任何内容。
也就是说,有一些方法可以通过使用init容器来实现您期望的目标。在您的Pod中,您可以使用docker映像定义init容器,在某个路径(例如 / target )中将卷装入其中,但不要运行容器的常规内容,而应运行类似
cp -r /my/dir/* /target/
这将使用预期的内容启动您的目录,然后退出以允许进一步启动Pod 请看一下:overriding-directory。
另一种选择是使用subPath。子路径引用由用户而非系统控制的文件或目录。抢劫这个例子,如何将单个文件挂载到现有目录中:
---
volumeMounts:
- name: "config"
mountPath: "/<existing folder>/<file1>"
subPath: "<file1>"
- name: "config"
mountPath: "/<existing folder>/<file2>"
subPath: "<file2>"
restartPolicy: Always
volumes:
- name: "config"
configMap:
name: "config"
---
查看完整示例here。参见:mountpath,files-in-folder-overriding。
您也可以按照@DavidMaze所说的那样,在非容器Python虚拟环境中调试您的设置,或者作为第二选择,在没有Kubernetes的Docker中调试映像。
答案 1 :(得分:0)