由于您没有提供用例,因此我的回答将基于是否可能。事实上:是的。
我假设您希望从configMap
已经包含其他文件的安装点中安装文件,并且您的使用方法subPath
是正确的!
当需要在同一路径挂载不同的卷时,需要指定subPath
,否则原目录的内容会被隐藏。
换句话说,如果您想保留这两个文件(来自挂载点和来自 configMap),您必须使用subPath
.
为了说明这一点,我使用下面的部署代码进行了测试。在那里我挂载了包含在我的 pod 中/mnt
调用的文件和来自我的 configmap的文件的 hostPath :filesystem-file.txt
/mnt/configmap-file.txt
test-pd-plus-cfgmap
注意:我使用的是 Kubernetes 1.18.1
配置图:
apiVersion: v1
kind: ConfigMap
metadata:
name: test-pd-plus-cfgmap
data:
file-from-cfgmap: file data
部署:
apiVersion: apps/v1
kind: Deployment
metadata:
name: test-pv
spec:
replicas: 3
selector:
matchLabels:
app: test-pv
template:
metadata:
labels:
app: test-pv
spec:
containers:
- image: nginx
name: nginx
volumeMounts:
- mountPath: /mnt
name: task-pv-storage
- mountPath: /mnt/configmap-file.txt
subPath: configmap-file.txt
name: task-cm-file
volumes:
- name: task-pv-storage
persistentVolumeClaim:
claimName: task-pv-claim
- name: task-cm-file
configMap:
name: test-pd-plus-cfgmap
作为部署的结果,您可以在/mnt
pod 中看到以下内容:
$ kubectl exec test-pv-5bcb54bd46-q2xwm -- ls /mnt
configmap-file.txt
filesystem-file.txt
您可以通过相同的讨论检查这个 github问题。
在这里你可以阅读更多关于 volumes 的内容subPath
。