У меня есть модуль Postgres с подключенным томом:
kind: PersistentVolume
apiVersion: v1
metadata:
name: postgres-pv
labels:
type: local
spec:
storageClassName: manual
capacity:
storage: 100M
accessModes:
- ReadWriteOnce
hostPath:
path: "/mnt/data"
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
labels:
app: postgres
name: psql-claim
spec:
storageClassName: manual
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 100M
В yaml содержится следующее:
volumeMounts:
- mountPath: /docker-entrypoint-initdb.d/
name: psql-config-map-volume
- mountPath: /var/lib/postgresql/data
name: psql-claim
subPath: postgres
volumes:
- name: psql-config-map-volume
configMap:
name: psql-config-map // contains an init.sql
- name: psql-claim
persistentVolumeClaim:
claimName: psql-claim
Хорошо работает, данные сохраняются после развертывания / модуля удаление и повторное развертывание.
Проблема появляется, когда я изменяю init. sql. Он не вступил в силу и получил это сообщение при запуске psql pod:
PostgreSQL Кажется, что каталог базы данных содержит базу данных; Пропуск инициализации
Сам модуль запускается без каких-либо ошибок (только со старыми данными init. sql)
Что я пытался:
- Удаление развертывания, pv c и pv. Затем заново разверните все. Тот же результат.
- Я искал данные пути хоста, но / mnt / data пуст.
Что еще мне следует попробовать? Как я могу заставить init. sql запускаться? Где хранятся действительные старые данные, если они не находятся в hostpath?
edit: у меня есть поиск файлов pg и я нашел это:
/var/lib/docker/overlay2/6ae2../merged/mnt/ data / postgres / pg_ident.conf
/var/lib/docker/overlay2/6ae2../diff/mnt/data/postgres/pg_ident.conf
И он все еще существует после удаления pv c и pv. Как я могу изящно сбросить свои данные?