【问题标题】:Postgres running on kubernetes looses data upon Pod recreation or cluster reboot在 Kubernetes 上运行的 Postgres 在重新创建 Pod 或重新启动集群时丢失数据
【发布时间】:2020-01-23 22:14:30
【问题描述】:

我在 GKE 上的 Pod 中运行 postgres 容器,并设置了一个 PersistentVolume 来存储数据。但是,如果集群重新启动或Pod 被删除,数据库中的所有数据都会丢失。

如果我运行kubectl delete <postgres_pod> 删除现有的Pod 并检查新创建的(由kubernetesPod 来替换删除的那个,相应的数据库没有它的数据在 Pod 被删除之前。

这是我用来部署 postgresyaml 文件。

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


    【解决方案1】:

    集群是否会在您每次删除 pod 时创建一个新卷?请与kubectl get pv 联系。

    这是一个多区域集群吗?您的存储类不是配置区域磁盘,因此当 pod 从一个区域移动到另一个区域时,您可能会获得一个新磁盘。

    可能与您的问题有关,postgres 容器参考建议安装在 /var/lib/postgresql/data/pgdata 并设置 PGDATA 环境变量: https://hub.docker.com/_/postgres#pgdata

    【讨论】:

    • 感谢您的回复。这是由于安装路径和PGDATA env 变量所致。 This github post 显示 PGDATA 和安装路径的正确值。
    猜你喜欢
    • 2019-11-30
    • 2020-07-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多