Возникла проблема с монтированием тома персистенции portgresql в локально - PullRequest
0 голосов
/ 23 октября 2019

Я пытаюсь смонтировать локальный том postgrsql в kubernetes со статической подготовкой. Вот мой файл yaml, я создал pv, pvc и pod

 apiVersion: v1
    kind: PersistentVolume
    metadata:
      name: task-pv-volume
      namespace: manhattan
      labels:
        type: local
    spec:
      storageClassName: manual
      capacity:
        storage: 100Mi
      accessModes:
        - ReadWriteOnce
      hostPath:
        path: "/mnt/data"
    ---
    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: task-pv-claim
      namespace: manhattan
    spec:
      storageClassName: manual
      accessModes:
        - ReadWriteOnce
      resources:
        requests:
          storage: 80Mi
    ---
    apiVersion: v1
    kind: Pod
    metadata:
      name: dbr-postgres
 namespace: manhattan
spec:
  volumes:
    - name: task-pv-storage
      persistentVolumeClaim:
        claimName: task-pv-claim
  containers:
    - name: task-pv-container
      image: postgresql:2.0.1
      tty: true
      volumeMounts:
        -  mountPath: "/var/lib/pgsql/9.3/data"
           name: task-pv-storage
           subPath: data
           readOnly: false
  nodeSelector:
     kubernetes.io/hostname: k8s-master

Мой том находится в /var/lib/pgsql/9.3/data, но мой модуль не работает, и я не хочу менять местоположениеиз mountPath в /var/lib/pgsql/9.3/data/backup

не могли бы вы предложить любую опцию перезаписи в файле yaml

Я не хочу создавать папку с новым именем здесь.

enter image description here

Если я изменил mountPath на /var/lib/pgsql/9.3/data/backup, модуль начинает работать, но я не хочу, чтобы яхотите, чтобы данные записывались в тот же каталог /var/lib/pgsql/9.3/data

Ответы [ 2 ]

0 голосов
/ 31 октября 2019

Я выяснил, что проблема возникает из-за того, что мой каталог данных изначально не пуст. Мне нужно запустить postgresql init db во время ENTRYPOINT ИЛИ CMD при запускевремя

В томе kubernetes должен быть пустой mountPath, но он отлично работает, если для монтирования используется том докера

0 голосов
/ 24 октября 2019

Согласно официальной документации для postgres: 9,4 от dockerhub:

1 . Обратите внимание:

Предупреждение: переменные, специфичные для Docker, будут иметь эффект, только если вы запустите контейнер с пустым каталогом данных;любая ранее существующая база данных останется нетронутой при запуске контейнера.

2 . PGDATA переменная среды:

Эта необязательная переменная может использоваться для определения другого местоположения - например, подкаталога - для файлов базы данных. По умолчанию это / var / lib / postgresql / data, но если используемый вами том данных является точкой монтирования файловой системы (как с постоянными дисками GCE), Postgres initdb рекомендует использовать подкаталог (например, / var / lib / postgresql / data /). pgdata) для хранения данных.

В качестве обходного пути обращайтесь к

  • официальным документам при работе с Dockerfile
  • рулевые графики для стабильных postgresql

Вы также можете изменить изображение на конкретное , используя рулевую диаграмму :

Начиная с версии 4.0.0, эту диаграмму можно использовать с официальным изображением Docker PostgreSQL. Помимо указания нового репозитория и тега Docker, важно изменить каталог данных PostgreSQL и точку монтирования тома. По сути, каталог данных PostgreSQL не может быть точкой монтирования напрямую, это должен быть подкаталог.

helm install --name postgres \
             --set image.repository=postgres \
             --set image.tag=10.6 \
             --set postgresqlDataDir=/data/pgdata \
             --set persistence.mountPath=/data/ \
             stable/postgresql

Вы можете создать шаблон этой диаграммы управления и настройки. С другой точки зрения, основная проблема заключается в том, что вы инициализировали свою базу данных - как вы упомянули в /var/lib/pgsql/9.3/data/backup, поэтому, пожалуйста, проверьте файл docker и ваш docker-entrypoint.sh, чтобы выяснить, где находитсяпроблема.

Пожалуйста, дайте мне знать, если это помогло.

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