Можем ли мы использовать единичное монтирование тома в Pod для нескольких контейнеров?
В контейнере может быть один объем для двух разных контейнеров.
2 ответа
Если у вас есть два контейнера и вы хотите обмениваться данными между ними, вы можете сделать следующее:
apiVersion: v1
kind: Pod
metadata:
name: production
spec:
containers:
- name: container1
image: image1
volumeMounts:
- name: storage
mountPath: /vol/data
- name: container2
image: image2
volumeMounts:
- name: storage
mountPath: /store/data
volumes:
- name: storage
emptyDir: {}
Вот,
emptyDir
используется для обмена данными между двумя контейнерами. Оба контейнера имеют объем.
Таким образом, если вы хотите использовать одни и те же данные, вы можете монтировать один и тот же том в два контейнера.
Но если вы хотите использовать один том и не хотите обмениваться данными между двумя контейнерами, вы можете использовать subPath
spec:
containers:
- name: container1
image: image1
volumeMounts:
- name: storage
mountPath: /vol/data
subPath: vol
- name: container2
image: image2
volumeMounts:
- name: storage
mountPath: /store/data
subPath: store
volumes:
- name: storage
emptyDir: {}
Вот,
subPath
укажите подпуть внутри тома, на который ссылаются, а не его корень. Это означает, что два отдельных каталога с вашего тома будут монтироваться в два контейнера.
В этом примере /vol
каталог будет установлен в container1
контейнер и /store
из объема будет установлен в container2
Теперь ваши данные не будут конфликтовать и делиться
Да. Распространено разделение тома между двумя контейнерами в основном для связи. Проверьте схему ниже.