Поскольку вы не указали свой вариант использования, мой ответ будет основан на том, возможно это или нет. На самом деле: Да, это так.
Я полагаю, вы sh смонтируете файл из configMap
в точке монтирования, которая уже содержит другие файлы, и ваш подход к используйте subPath
правильно!
Когда вам нужно смонтировать разные тома по одному и тому же пути, вам нужно указать subPath
, или содержимое исходного каталога будет скрыто .
Другими словами, если вы хотите сохранить оба файла (из точки монтирования и из configMap), вы должны использовать subPath
.
Для проиллюстрируйте это, я протестировал с кодом развертывания ниже. Там я монтирую hostPath /mnt
, который содержит файл с именем filesystem-file.txt
в моем модуле и файл /mnt/configmap-file.txt
из моей конфигурации test-pd-plus-cfgmap
:
Примечание: I Я использую Kubernetes 1.18.1
Configmap:
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
пакета:
$ kubectl exec test-pv-5bcb54bd46-q2xwm -- ls /mnt
configmap-file.txt
filesystem-file.txt
Вы можете проверить этот github issue с тем же обсуждением.
Здесь Вы можете прочитать немного больше о томах subPath
.