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

CrunchyData Postgres Operator Pod持续Pending故障排查

CrunchyData Postgres Operator 集群backrest-repo Pod Pending故障排查

故障现象

部署Postgres集群时,backrest-shared-repo及主库Pod持续处于Pending状态,Pod运行状态如下:

NAME                      STATUS    VOLUME   CAPACITY   ACCESS MODES   STORAGECLASS   AGE
postgres-ha-1             Pending                                                     12m
postgres-ha-1-pgbr-repo   Pending                                                     12m

排查发现关联的postgres-ha-1-pgbr-repo PersistentVolumeClaim同样处于Pending状态,事件报错如下:

no persistent volumes available for this claim and no storage class is set

生成的PVC配置中未指定storageClassName字段,申请3G容量、ReadWriteMany访问模式的文件系统存储,与Operator配置中hostpathstorage存储项参数匹配。

故障根因

Operator配置中hostpathstorage存储项的类型设为create,该模式下Operator不会自动为PVC关联集群默认StorageClass触发动态供给,也不会自动创建HostPath类型的PV;同时集群内不存在满足PVC要求(≥3G容量、支持ReadWriteMany访问模式、无绑定StorageClass)的可用静态PV,导致PVC无法完成绑定,关联Pod无法调度。

排查步骤

  • 检查异常PVC配置,确认spec.storageClassName字段为空,申请的容量、访问模式与Operator存储配置一致
  • 核对postgres-operator.yml存储配置,确认backrest_storage绑定的hostpathstorage使用create类型,未配置关联的StorageClass参数
  • 执行kubectl get pv查看集群现有PV,确认无匹配PVC要求的可用静态卷
  • 执行kubectl get sc查看集群现有StorageClass,确认是否存在支持ReadWriteMany访问模式的存储类可用于pgBackRest共享存储

解决方案

方案1:动态存储供给(生产环境推荐)

  1. 修改postgres-operator.yml中hostpathstorage存储项配置,将存储类型改为dynamic,补充集群中支持ReadWriteMany的StorageClass名称(如NFS、CephFS存储类):
storage2_name: "hostpathstorage"
storage2_access_mode: "ReadWriteMany"
storage2_size: "3G"
storage2_type: "dynamic"
storage2_class: "替换为集群中支持RWX的StorageClass名称"
  1. 重启CrunchyData Postgres Operator加载新配置
  2. 删除当前Pending状态的PVC和异常Pod,Operator会自动重建带正确StorageClass配置的PVC,由存储类自动完成PV供给和绑定,Pod随后会正常拉起。

方案2:静态PV绑定(测试/单节点环境适用)

  1. 手动创建符合PVC要求的静态PV,注意PV必须不指定StorageClass、容量≥3G、支持ReadWriteMany访问模式,示例配置:
apiVersion: v1
kind: PersistentVolume
metadata:
  name: postgres-ha-pgbr-pv
  labels:
    pg-cluster: postgres-ha-1
    vendor: crunchydata
spec:
  capacity:
    storage: 3G
  accessModes:
    - ReadWriteMany
  persistentVolumeReclaimPolicy: Retain
  storageClassName: ""
  # 多节点集群必须使用NFS、CephFS等网络存储,单节点测试可使用hostPath
  nfs:
    server: NFS服务地址
    path: /exports/pgbr-repo
  # 单节点hostPath示例(多节点禁用,不支持跨节点RWX)
  # hostPath:
  #   path: /data/pgbr-repo
  1. 若使用hostPath,需要提前在对应节点创建目录,配置目录权限为02750、属主为postgres用户(UID 26)
  2. 创建PV后等待PVC自动完成绑定,绑定完成后Pod会自动调度启动。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 22:36:22