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

Kubernetes中Postgres部署崩溃求助:未指定超级用户密码

排查Kubernetes中Postgres部署初始化错误

问题场景

在Kubernetes中配置Postgres数据库部署时,容器启动失败,报错提示未指定超级用户密码。

配置文件

database/secret.yml

apiVersion: v1
kind: Secret
metadata:
  name: postgres-secrets
type: Opaque
data:
  database: ZXRs
  username: cG9zdGdyZXM=
  password: cG9zdGdyZXM=

database/deployment.yml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: postgres
spec:
  replicas: 1
  selector:
    matchLabels:
      app: postgres
  template:
    metadata:
      labels:
        app: postgres
    spec:
      containers:
        - name: postgresdb
          image: postgres
          imagePullPolicy: "IfNotPresent"
          ports:
            - containerPort: 5432
          env:
            - name: DATABASE_NAME
              valueFrom:
                secretKeyRef:
                  name: postgres-secrets
                  key: database
            - name: DATABASE_USER
              valueFrom:
                secretKeyRef:
                  name: postgres-secrets
                  key: username
            - name: DATABASE_PASSWORD
              valueFrom:
                secretKeyRef:
                  name: postgres-secrets
                  key: password
          volumeMounts:
            - mountPath: /var/lib/postgresql/data
              name: postgresdb
            - name: postgres-secrets
              mountPath: "/etc/postgres-secrets"
              readOnly: true
      volumes:
        - name: postgresdb
          persistentVolumeClaim:
            claimName: postgres-pvc
        - name: postgres-secrets
          secret:
            secretName: postgres-secrets

错误日志

执行命令:kubectl logs postgres-6667fcb9c-sk77f

返回错误:

错误:数据库未初始化,且未指定超级用户密码。
必须为超级用户指定非空的POSTGRES_PASSWORD值。例如,在"docker run"时使用"-e POSTGRES_PASSWORD=password"。

你也可以使用"POSTGRES_HOST_AUTH_METHOD=trust"来允许无密码连接,但这*不*推荐。

问题原因及解决方法

核心问题

Postgres官方镜像只识别固定命名的初始化环境变量,你当前使用的DATABASE_NAME、DATABASE_USER、DATABASE_PASSWORD不是镜像预期的变量名,导致镜像无法读取密码配置,触发初始化失败。

修复步骤

  1. 修正环境变量名
    将容器的env部分替换为Postgres镜像要求的标准变量名:
    env:
      - name: POSTGRES_DB
        valueFrom:
          secretKeyRef:
            name: postgres-secrets
            key: database
      - name: POSTGRES_USER
        valueFrom:
          secretKeyRef:
            name: postgres-secrets
            key: username
      - name: POSTGRES_PASSWORD
        valueFrom:
          secretKeyRef:
            name: postgres-secrets
            key: password
    
  2. 移除无效的Secret挂载
    你已经通过环境变量引用了Secret中的值,无需再将Secret挂载到容器目录,可删除以下配置:
    • 容器volumeMounts中关于postgres-secrets的条目
    • Deployment的volumes中关于postgres-secrets的条目
  3. 验证Secret内容
    你的Secret中base64编码内容解码后有效:
    • database: ZXRs → 解码为 etl
    • username: cG9zdGdyZXM= → 解码为 postgres
    • password: cG9zdGdyZXM= → 解码为 postgres
      这部分无需修改。

修复后的Deployment示例

apiVersion: apps/v1
kind: Deployment
metadata:
  name: postgres
spec:
  replicas: 1
  selector:
    matchLabels:
      app: postgres
  template:
    metadata:
      labels:
        app: postgres
    spec:
      containers:
        - name: postgresdb
          image: postgres
          imagePullPolicy: "IfNotPresent"
          ports:
            - containerPort: 5432
          env:
            - name: POSTGRES_DB
              valueFrom:
                secretKeyRef:
                  name: postgres-secrets
                  key: database
            - name: POSTGRES_USER
              valueFrom:
                secretKeyRef:
                  name: postgres-secrets
                  key: username
            - name: POSTGRES_PASSWORD
              valueFrom:
                secretKeyRef:
                  name: postgres-secrets
                  key: password
          volumeMounts:
            - mountPath: /var/lib/postgresql/data
              name: postgresdb
      volumes:
        - name: postgresdb
          persistentVolumeClaim:
            claimName: postgres-pvc

应用修复

执行以下命令更新部署:

kubectl apply -f database/deployment.yml

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 04:57:22