монтирование пути переопределяет существующий контент - PullRequest
0 голосов
/ 11 апреля 2020

У меня возникают проблемы при монтировании пути. Моя цель - сделать данные постоянными даже после перезапуска модуля. Но он создает новый каталог, в котором нет ни одного из моих файлов конфигурации. Как смонтировать весь каталог, не переопределяя его? У меня должны быть все данные базы данных внутри пути, даже если модуль перезапускается. В моем сценарии создается новый путь.

мой файл docker

FROM centos:7
ENV DIR /binaries
ENV PASS admin
WORKDIR ${DIR}
COPY libstdc++-4.8.5-39.el7.x86_64.rpm ${DIR} 
COPY numactl-libs-2.0.12-3.el7.x86_64.rpm ${DIR}
COPY mysqlmonitor-8.0.18.1217-linux-x86_64-installer.bin ${DIR}
RUN yum install -y libaio && yum -y install gcc && yum -y install gcc-c++ && yum -y install compat-libstdc++-33 && yum -y install libstdc++-devel && yum -y install elfutils-libelf-devel && yum -y install glibc-devel && yum -y install libaio-devel && yum -y install sysstat
RUN yum install -y gcc && yum install -y make && yum install -y apr-devel && yum install -y openssl-devel && yum install -y java
RUN rpm -ivh numactl-libs-2.0.12-3.el7.x86_64.rpm
RUN useradd sql
RUN chown sql ${DIR}
RUN chmod 777 ${DIR}
RUN chmod 755 /home/sql
USER sql
WORKDIR ${DIR}
RUN ./mysqlmonitor-8.0.18.1217-linux-x86_64-installer.bin --installdir /home/sql/mysql/enterprise/monitor --mode unattended --tomcatport 18080 --tomcatsslport 18443 --adminpassword ### --dbport 13306
RUN rm -rf /binaries/*
VOLUME /home/mysql/mysql/enterprise/monitor/mysql/data
ENTRYPOINT ["/bin/bash", "-c", "/home/sql/mysql/enterprise/monitor/mysqlmonitorctl.sh start && tail -f /home/sql/mysql/enterprise/monitor/apache-tomcat/logs/mysql-monitor.log"]

мой файл развертывания

apiVersion: apps/v1
kind: Deployment
metadata:
  name: mypod
spec:
  replicas: 1
  selector:
    matchLabels:
      app: mem     
  template:
    metadata:
      labels:
        app: mem
    spec:
      containers:
      - name: mem
        image: 22071997/mem
        command: 
        volumeMounts:
        - mountPath: /home/sql/mysql/enterprise/mysql/data
          name: volume
      volumes:
      - name: volume
        persistentVolumeClaim:
          claimName: mem-pvc2

вывод:

[sql@mypod-67cb4f85b8-9km26 data]$ pwd
/home/sql/mysql/enterprise/mysql/data
[sql@mypod-67cb4f85b8-9km26 data]$ ls
[sql@mypod-67cb4f85b8-9km26 data]$

1 Ответ

0 голосов
/ 14 апреля 2020

По умолчанию, когда вы монтируете некоторый том по существующему пути, содержимое этого существующего пути будет скрытым .

Если вы хотите сохранить оба, есть опция под названием subPath, таким образом вы можете монтировать каждый файл индивидуально, используя один и тот же том:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: echo
spec:
  selector:
    matchLabels:
      app: echo
  template:
    metadata:
      labels:
        app: echo
    spec:
      volumes:
        - name: task-pv-storage
          persistentVolumeClaim:
            claimName: task-pv-claim
      containers:
      - name: echo
        image: nginx
        ports:
        - name: http
          containerPort: 80
        volumeMounts:
          - name: task-pv-storage
            mountPath: "/usr/share/nginx/html/index.htm"
            subPath: "index.htm"
          - name: task-pv-storage
            mountPath: "/usr/share/nginx/html/teste.html"
            subPath: "teste.html"

В этом примере у меня есть только один том с именем task-pv-storage , hostPath том и в папке есть только 2 файла: teste.yaml и index.html, и когда я приму эту конфигурацию, оба файла будут помещены рядом с исходными файлами в контейнере:

$ kubectl exec echo-5955898b58-gvgh9 -- ls /usr/share/nginx/html
50x.html  index.htm  index.html  teste.html

Как видите, это возможно, но будет стоить дополнительной конфигурации, возможно, вы могли бы хранить все файлы только в томе, а не непосредственно в контейнере.

Ссылки

Настройка хранилища томов /

Каталог с несколькими томами kubernetes

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