модуль pod имеет несвязанные немедленные постоянные объёмы после удаления пространства имен - PullRequest
0 голосов
/ 01 ноября 2019

Я настроил модуль Postgres для статического предоставления тома постоянства в моей локальной среде. В первый раз все работает нормально, но когда я удаляю пространство имен и перезапускаю модуль, его статус находится в состоянии ожидания и выдает сообщение об ошибке, что модуль содержит несвязанные немедленные постоянные утверждения

Я попытался удалить storageClassName из утверждения тома Persistance, но не работаетЯ также попытался изменить класс storeage с ручного на блокирование хранилища, но та же проблема

мой файл yaml

apiVersion: v1
kind: PersistentVolume
metadata:
  name: task-pv-volume
  namespace: manhattan
  labels:
    type: local
spec:
  storageClassName: manual
  capacity:
    storage: 10Gi
  accessModes:
    - ReadWriteOnce
  hostPath:
    path: "/opt/manhattan/current/pgdata"
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: task-pv-claim
  namespace: manhattan
spec:
  storageClassName: manual
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 1Gi
---
apiVersion: v1
kind: Pod
metadata:
  name: postgres
  namespace: manhattan
spec:
  volumes:
    - name: task-pv-storage
      persistentVolumeClaim:
        claimName: task-pv-claim
  containers:
    - name: dbr-postgres
      image: postgres-custome
      tty: true
      volumeMounts:
        -  mountPath: "/var/lib/pgsql/9.3/data"
           name: task-pv-storage
  nodeSelector:
     kubernetes.io/hostname: k8s-master

Я хочу, чтобы мой модуль работал, даже когда я удаляю пространство имен и перезапускаю модуль.yaml file

Ответы [ 2 ]

0 голосов
/ 04 ноября 2019

Я решил эту проблему с помощью persistentVolumeReclaimPolicy до recycle . Теперь я могу восстановить том персистентности даже после удаления пространства имен и воссоздания его

apiVersion: v1
kind: PersistentVolume
metadata:
  name: task-pv-volume
  labels:
    type: local
spec:
  storageClassName: manual
  capacity:
    storage: 10Gi
  accessModes:
    - ReadWriteOnce
  persistentVolumeReclaimPolicy: Recycle
  hostPath:
    path: "/opt/manhattan/current/pgdata"
0 голосов
/ 01 ноября 2019

Данные будут храниться в узле kubernetes, потому что hostpath использует файловую систему узла для хранения данных. Проблема в том, что если у вас есть несколько узлов, ваш модуль может запускаться на любом другом узле. Чтобы решить эту проблему, вы можете либо указать узел, с которого вы хотите, чтобы ваш модуль запускался, либо внедрить nfs или glusterfs в ваши узлы kubernetes. Это может быть причиной вашей проблемы.

Есть еще одна вещь, о которой я могу подумать, это может быть ваша проблема. При удалении namespace все ресурсы kubernetes внутри него также удаляются. Нет простого способа их восстановить. Это означает, что вам нужно создать pv, pvc и pod в новом пространстве имен.

...