Данные NFS PersistentVolume теряются при удалении развертывания K8s

Я создаю PersistentVolume с помощью NFS, как показано ниже, когда я удаляю развертывание, я теряю свои данные. Если я запускаю контейнер postgres, БД, которая была создана ранее, больше не существует.

С помощью AWS EKS мне удалось удалить развертывание без потери данных.

Любая помощь относительно того, почему это происходит?

PV

apiVersion: v1
kind: PersistentVolume
metadata:
  name: pv001
spec:
  capacity:
    storage: 100Gi
  volumeMode: Filesystem
  accessModes:
    - ReadWriteOnce
  persistentVolumeReclaimPolicy: Retain
  mountOptions:
    - hard
    - nfsvers=4.1
  nfs:
    path: /mnt/pv001
    server: 164.10.0.1

ПВХ

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: metabase-postgres-persistent-volume-claim
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 10Gi

Развертывание

...
    spec:
      volumes:
        - name: metabase-postgres-storage
          persistentVolumeClaim:
            claimName: metabase-postgres-persistent-volume-claim
...

Я думаю, вы должны использовать StatefulSet. Поведение описанного вами развертывания правильное.

dmkvl 28.05.2019 16:20

Выглядит странно. В соответствии с политикой возврата pv он должен был быть сохранен

P Ekambaram 28.05.2019 20:45

Спасибо за ответ. Я попытаюсь использовать маршрут StatefulSet.

Anton Swanevelder 29.05.2019 07:52
Развертывание модели машинного обучения с помощью Flask - Angular в Kubernetes
Развертывание модели машинного обучения с помощью Flask - Angular в Kubernetes
Kubernetes - это портативная, расширяемая платформа с открытым исходным кодом для управления контейнерными рабочими нагрузками и сервисами, которая...
0
3
73
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

У меня был неправильный путь монтирования, должен быть /var/lib/postgresql/data

apiVersion: apps/v1beta1
kind: StatefulSet
metadata:
  name: edw-pg
spec:
  serviceName: postgres-cluster-ip-service
  replicas: 1
  selector:
    matchLabels:
      component: postgres
  template:
    metadata:
      labels:
        component: postgres
    spec:
      terminationGracePeriodSeconds: 10
      containers:
        - name: postgres
          image: postgres:10.7
          ports:
            - containerPort: 5432  
          volumeMounts:
            - name: edw-persistent-storage-claim
              mountPath: /var/lib/postgresql/data
              readOnly: false
              subPath: postgres
          env:
            - name: PGPASSWORD
              valueFrom:
                secretKeyRef:
                  name: pgpassword
                  key: PGPASSWORD
  volumeClaimTemplates:
  - metadata:
      name: edw-persistent-storage-claim
    spec:
      accessModes: [ "ReadWriteMany" ]
      resources:
        requests:
          storage: 50Gi

Другие вопросы по теме