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

Bitnami PGPool Pod启动失败:只读文件系统错误排查求助

PGPool容器启动失败:只读文件系统错误排查

我使用docker.io/bitnami/pgpool:4.2.3-debian-10-r38镜像部署PGPool时容器启动失败,报错如下:

pgpool 09:10:02.55 INFO ==> Initializing Pgpool-II... pgpool 09:10:02.59 INFO ==> Generating pg_hba.conf file... /opt/bitnami/scripts/libpgpool.sh: line 348: /opt/bitnami/pgpool/conf/pool_hba.conf: Read-only file system

已将卷挂载的只读参数设为false,且以root用户运行,但问题仍未解决。我的Deployment YAML配置如下:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: pgpool-deployment
spec:
  replicas: 1
  selector:
    matchLabels:
      app: pgpool
  template:
    metadata:
      labels:
        app: pgpool
    spec:
      securityContext:
        runAsUser: 0
        fsGroup: 0
        runAsGroup: 0
      containers:
        - name: pgpool
          image: docker.io/bitnami/pgpool:4.2.3-debian-10-r38
          securityContext:
            runAsUser: 0
            runAsGroup: 0
          ports:
            - containerPort: 5432
          env:
            - name: PGPOOL_BACKEND_NODES
              value: "0:postgres-0.postgres:5432,1:postgres-1.postgres:5432,2:postgres-2.postgres:5432"
            - name: PGPOOL_ADMIN_USERNAME
              value: "admin"
            - name: PGPOOL_ADMIN_PASSWORD
              valueFrom:
                secretKeyRef:
                  name: pgpool-secrets
                  key: admin-password
            - name: PGPOOL_POSTGRES_USERNAME
              value: "postgres"
            - name: PGPOOL_POSTGRES_PASSWORD
              valueFrom:
                secretKeyRef:
                  name: postgres-creds
                  key: password
            - name: PGPOOL_HEALTH_CHECK_USER
              value: "postgres"
            - name: PGPOOL_HEALTH_CHECK_PASSWORD
              valueFrom:
                secretKeyRef:
                  name: postgres-creds
                  key: password
            - name: PGPOOL_SR_CHECK_USER
              value: "postgres"
            - name: PGPOOL_SR_CHECK_PASSWORD
              valueFrom:
                secretKeyRef:
                  name: postgres-creds
                  key: password
          volumeMounts:
            - name: pgpool-config
              mountPath: /opt/bitnami/pgpool/conf/
              readOnly: false
            - name: pgpool-tls
              mountPath: /etc/pgpool2
              readOnly: false
      volumes:
        - name: pgpool-config
          configMap:
            name: pgpool-config
        - name: pgpool-tls
          secret:
            secretName: pgpool-tls

可能的原因及解决方法

  • ConfigMap挂载机制限制:Kubernetes中,ConfigMap以目录方式挂载时,无论readOnly设置为false,底层的ConfigMap存储本身是只读的。容器初始化脚本尝试在该目录下生成pool_hba.conf,但无法对ConfigMap挂载的目录执行写入操作。
    解决:不要直接将ConfigMap挂载到/opt/bitnami/pgpool/conf/,而是挂载到临时目录(如/opt/bitnami/pgpool/conf-custom/),再通过初始化脚本将配置文件复制到目标目录;或者直接利用Bitnami镜像提供的环境变量配置PGPool,避免手动挂载整个配置目录。

  • 镜像目录权限锁定:即使以root用户运行,镜像内的/opt/bitnami/pgpool/conf/目录可能在构建时被设置了只读属性。挂载ConfigMap覆盖该目录后,进一步限制了写入权限。
    解决:仅挂载单个配置文件到/opt/bitnami/pgpool/conf/下(比如只挂载pgpool.conf),让初始化脚本可以自由生成pool_hba.conf等其他必要文件。

  • Secret挂载的间接影响:虽然pgpool-tls挂载的是/etc/pgpool2,但如果该目录与conf目录存在权限继承或存储共享问题,可能间接导致写入失败,不过此优先级低于前两个原因,可后续排查。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 06:33:29