【发布时间】:2020-01-23 22:14:30
【问题描述】:
我在 GKE 上的 Pod 中运行 postgres 容器,并设置了一个 PersistentVolume 来存储数据。但是,如果集群重新启动或Pod 被删除,数据库中的所有数据都会丢失。
如果我运行kubectl delete <postgres_pod> 删除现有的Pod 并检查新创建的(由kubernetes)Pod 来替换删除的那个,相应的数据库没有它的数据在 Pod 被删除之前。
这是我用来部署 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。
我错过了什么?
【问题讨论】:
标签: docker kubernetes google-kubernetes-engine persistent-storage