Можем ли мы использовать единичное монтирование тома в 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

Теперь ваши данные не будут конфликтовать и делиться

Да. Распространено разделение тома между двумя контейнерами в основном для связи. Проверьте схему ниже.

Попробуйте эту статью1 статью2

Другие вопросы по тегам