Docker создание папок и Kubernetes Volume - PullRequest
0 голосов
/ 31 марта 2020

У меня есть docker изображение, которое создает несколько папок и извлекает в него файлы, как показано ниже

RUN mkdir -p /home/myapp/myappv4 \
             /home/myapp/myappv4/files \             
             /home/myapp/myappv4/files/logs \
             /home/myapp/myappv4/myappentries
WORKDIR /home/myapp
RUN chown -R myapp:myapp /home/myapp 

ADD /myapp-v4-files/*.zip /home/myapp/myappv4/files/
ADD /myapp-v4-files/init.txt /home/myapp/myappv4/myappentries/
ADD /myapp-v4-files/pro.json /home/myapp/myappv4/myappentries/

Эти папки и файлы должны быть доступны для других containers в pod в kubernetes. Должен ли я создать persistentvolume в kubernetes и иметь эти местоположения в них и скопировать содержимое из этого container в этот volume? Таким образом, они не будут удалены правильно? Поскольку я новичок в kubernetes, я не уверен, как этого добиться. Переход от docker container к kubernetes развертыванию кажется мне запутанной частью, любая помощь по этому вопросу будет принята.

1 Ответ

0 голосов
/ 31 марта 2020

Если вы хотите разделить набор каталогов между несколькими контейнерами в одном модуле, достаточно использовать только том EmptyDir . Вам не нужно использовать PersistentVolumes (если только вам не нужно постоянство, то есть вы хотите, чтобы данные сохранялись после перезапуска модуля).

Однако обратите внимание, что добавление тома (конструкция kubernetes) перезапишет файлы, уже имеющиеся в вашем контейнер по пути, где вы монтируете том, что-то вроде того, что происходит с многоуровневой файловой системой, которую использует docker.

В вашем случае, я думаю, вы можете переместить логи выборки файлов c из файла Docker в скрипт, который будет запускать модуль, который решит вышеупомянутую проблему.

apiVersion: v1
kind: Pod
metadata:
  name: test-pd
spec:
  containers:
  - image: k8s.gcr.io/test-webserver
    name: test-container
    volumeMounts:
    - mountPath: /cache
      name: cache-volume
  - image: k8s.gcr.io/test-webserver
    name: test-container-2
    volumeMounts:
    - mountPath: /cache
      name: cache-volume
  volumes:
  - name: cache-volume
    emptyDir: {}

Подробнее о томах здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...