我有GKE运行Postgres的实例,并有持续的音量设定来存储数据。但是,我失去数据库中的所有数据,如果我的集群重新启动,如果我删除的Postgres吊舱。如果我运行kubectl delete pod <postgres_pod>
删除现有的吊舱和检查kubernetes到位删除吊舱创建的新吊舱,我看不出曾经是在数据库中的数据。
下面是我用来部署的Postgres的YAML文件。
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
deployment.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
。我在想什么?先感谢您。
分析解答
在群集创建每次删除一个吊舱时间的新卷?请与kubectl get pv
。
这是一个簇multi-zone?您的存储类不供应区域的磁盘,所以你可能会得到一个新的磁盘时,从一个区域的集群移动到另一个。
可能与您的问题,Postgres的容器参考建议在/var/lib/postgresql/data/pgdata
安装和设置PGDATA
环境变量:
https://hub.docker.com/_/postgres#pgdata