У меня есть контейнер postgres, работающий в Pod
на GKE, и PersistentVolume
, настроенный для хранения данных. Однако все данные в базе данных теряются при перезагрузке кластера или при удалении Pod
.
Если я запущу kubectl delete <postgres_pod>
, чтобы удалить существующий Pod
, и проверю вновь созданный (kubernetes) Pod
, чтобы заменить удаленный, в соответствующей базе данных не будет данных, которые были до удаления Pod
.
Вот файлы yaml, которые я использовал для развертывания postgres.
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: custom-storage
parameters:
type: pd-standard
provisioner: kubernetes.io/gce-pd
reclaimPolicy: Retain
volumeBindingMode: Immediate
---
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: postgres-volume-claim
spec:
storageClassName: custom-storage
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 5Gi
развертывание.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: postgres
spec:
selector:
matchLabels:
app: postgres
template:
metadata:
labels:
app: postgres
spec:
containers:
- name: postgres
image: postgres:11.5
resources: {}
ports:
- containerPort: 5432
env:
- name: POSTGRES_DB
value: "dbname"
- name: POSTGRES_USER
value: "user"
- name: POSTGRES_PASSWORD
value: "password"
volumeMounts:
- mountPath: /var/lib/postgresql/
name: postgresdb
volumes:
- name: postgresdb
persistentVolumeClaim:
claimName: postgres-volume-claim
Я дважды проверил, что persistentVolumeReclaimPolicy
имеет значение Retain
.
Что мне не хватает?