Как сохранить данные в GKE kubernetes StatefulSet с postgres? - PullRequest
0 голосов
/ 15 февраля 2020

Так что я просто пытаюсь экспериментально запустить веб-приложение на GKE, чтобы ознакомиться с Kubernetes и GKE.

У меня есть набор состояний (Postgres) с заявкой на постоянный том / постоянный том, который, как и ожидалось, подключен к модулю Postgres. Проблема, с которой я столкнулся, заключается в том, что данные Postgres терпят. Если я подключу PV на var/lib/postgres, данные будут переопределяться при каждом обновлении модуля. Если я монтирую на var/lib/postgres/data, я получаю предупреждение:

initdb: directory "/var/lib/postgresql/data" exists but is not empty It contains a lost+found directory, perhaps due to it being a mount point. Using a mount point directly as the data directory is not recommended. Create a subdirectory under the mount point.

Использование только Docker с точкой монтирования тома на var/lib/postgresql/data работает, как ожидается, и данные сохраняются, но я не знаю, что делать сейчас в GKE. Как правильно это настроить?

Установочный файл:

---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: sm-pd-volume-claim
spec:
  storageClassName: "standard"
  accessModes:
  - ReadWriteOnce
  resources:
    requests:
      storage: 1G
---
apiVersion: "apps/v1"
kind: "StatefulSet"
metadata:
  name: "postgis-db"
  namespace: "default"
  labels:
    app: "postgis-db"
spec:
  serviceName: "postgis-db"
  replicas: 1
  selector:
    matchLabels:
      app: "postgis-db"
  template:
    metadata:
      labels:
        app: "postgis-db"
    spec:
      terminationGracePeriodSeconds: 25
      containers:
      - name: "postgis"
        image: "mdillon/postgis"
        ports:
        - containerPort: 5432
          name: postgis-port
        volumeMounts:
        - name: sm-pd-volume
          mountPath: /var/lib/postgresql/data
      volumes:
      - name: sm-pd-volume
        persistentVolumeClaim:
          claimName: sm-pd-volume-claim

1 Ответ

3 голосов
/ 15 февраля 2020

Вы получаете эту ошибку, потому что модуль postgres попытался смонтировать каталог данных в / папке. Это не рекомендуется делать.

Вам необходимо создать подкаталог для решения этой проблемы в файлах yaml манифеста statefulset.

  volumeMounts:
    - name: sm-pd-volume
      mountPath: /var/lib/postgresql/data
      subPath: data
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...