You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AWS EKS中Bitnami PostgreSQL Helm Chart重启Pod后数据丢失求助

问题描述

我在AWS EKS集群中通过以下Helm命令安装了PostgreSQL Pod:

helm install postgresql-default -f helm-values/values_postgresql.yaml bitnami/postgresql

我创建了如下持久化卷(PersistentVolume):

apiVersion: v1
kind: PersistentVolume
metadata:
  name: postgresql-pv
spec:
  storageClassName: efs-sc
  capacity:
    storage: 10Gi
  volumeMode: Filesystem
  persistentVolumeReclaimPolicy: Retain
  accessModes:
    - ReadWriteOnce
  csi:
    driver: efs.csi.aws.com
    volumeHandle: fs-xxxxxxxx

以及集群中的持久化卷声明(PersistentVolumeClaim):

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: postgresql-pv-claim
spec:
  storageClassName: efs-sc
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 1Gi

values_postgresql.yaml配置了相关参数,一切运行正常,但当我执行kubectl delete pod postgresql-default-0删除Pod后,所有数据都被清空。查看Pod发现它包含两个容器,我怀疑是init容器导致了数据丢失,想了解如何让PostgreSQL Pod重启时不执行初始化脚本。


解决办法

Bitnami官方的PostgreSQL Helm Chart有专门的参数控制初始化行为,要避免Pod重建时清空数据,按以下步骤调整:

  1. 控制初始化脚本的执行逻辑
    打开你的values_postgresql.yaml,添加或修改以下配置:
postgresql:
  initdb:
    # 完全禁用初始化脚本——适合已经完成数据库初始化的场景
    enabled: false
    # 或者只在首次启动、数据目录为空时执行初始化(默认通常是false,但建议显式设置)
    # force: false

解释:Bitnami的init容器默认会检查数据目录里有没有已有的数据库文件,如果force设为true才会强制重新初始化。如果你的配置里不小心开了force: true,就会导致每次Pod重建都清空数据。

  1. 确认持久化卷挂载正确
    确保Chart用的是你自己创建的PVC,在values_postgresql.yaml里检查这部分:
primary:
  persistence:
    existingClaim: postgresql-pv-claim
    mountPath: /bitnami/postgresql

这里existingClaim必须指定你创建的postgresql-pv-claim,这样Pod重建时才会挂载同一个EFS卷,保留原有数据。

  1. 检查EFS卷的权限
    EFS卷的权限如果不对,PostgreSQL容器可能读不到已有的数据,误以为是新环境而重新初始化。确保Chart的安全上下文配置正确:
primary:
  securityContext:
    enabled: true
    runAsUser: 1001
    fsGroup: 1001

Bitnami的PostgreSQL镜像默认用1001用户运行,EFS卷需要允许这个用户读写,不然容器访问不了数据,就会触发重新初始化。

  1. 验证PV/PVC的绑定状态
    执行以下命令确认PVC和PV一直处于绑定状态:
kubectl get pvc postgresql-pv-claim
kubectl get pv postgresql-pv

如果绑定正常,Pod重建时会自动挂载同一个卷,不会丢失数据。

最后修改完配置后,执行Helm升级生效:

helm upgrade postgresql-default -f helm-values/values_postgresql.yaml bitnami/postgresql

内容的提问来源于stack exchange,提问作者Azimuth

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 22:18:30