暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

DBA夜读·第七季第6期|Operator生态全景——主流PostgreSQL Operator对比

绩隐金 2026-04-16
59

第七季·《PostgreSQL on Kubernetes》 本季将开启云原生数据库的新篇章。我们将从零开始,系统性地学习如何在Kubernetes上部署、管理和运维PostgreSQL,探索云原生时代的数据库新范式。本季旨在帮助DBA和开发者掌握从传统运维到云原生架构的转型升级。

【上期回顾】

上一期我们深入学习了CloudNativePG(CNPG)——当前最受关注的PostgreSQL Operator:

  • • 架构设计:不使用StatefulSet和Patroni,直接与K8s API集成
  • • 核心CRD:Cluster、Pooler、Backup、ScheduledBackup
  • • 备份恢复:Barman Cloud集成、对象存储备份、PITR
  • • 高可用机制:内置自动故障转移、同步复制配置
  • • 生产配置:资源管理、存储规划、跨可用区部署

CNPG代表了PostgreSQL on K8s的前沿方向,但并非唯一选择。本期我们将放眼整个Operator生态,对比分析五大主流Operator的优劣,帮助你做出最适合的选型决策。

【本集概览】

模块
主题
核心看点
第一部分
Operator生态全景
社区活跃度、项目背景、选型框架
第二部分
CloudNativePG (CNPG)
无Patroni依赖、K8s原生设计
第三部分
Crunchy Postgres Operator (PGO)
最老牌、pgBackRest集成、企业支持
第四部分
Zalando Postgres Operator
Patroni驱动、大规模验证
第五部分
StackGres
全栈集成、Web UI、Envoy mesh
第六部分
Percona Operator
Percona生态、PMM监控
第七部分
选型决策矩阵
功能对比、场景推荐、迁移策略
第八部分
本章总结
核心对比、实战练习

【第一部分】Operator生态全景

1.1 社区活跃度对比

根据GitHub Star数据(截至2026年3月),PostgreSQL Operator生态的活跃度如下:

Operator
GitHub Stars
维护方
许可证
核心特点
CloudNativePG
8,257
EDB
Apache 2.0
无Patroni依赖,CNCF沙箱
Zalando Postgres Operator
5,119
Zalando
MIT
Patroni/Spilo架构,久经考验
Crunchy PGO
4,381
Crunchy Data
Apache 2.0
pgBackRest集成,企业支持
StackGres
1,380
OnGres
AGPL 3.0
Web UI,Envoy集成
Percona Operator
358
Percona
Apache 2.0
Percona生态集成

关键洞察:

  • • CNPG是增长最快的Operator,已进入CNCF沙箱
  • • Zalando Operator在生产环境中验证最充分(管理4000+集群)
  • • Crunchy PGO是商业化最成熟的选项

1.2 核心功能对比总览

根据Percona官方文档的对比分析:

功能
CNPG
PGO
Zalando
StackGres
Percona
HA机制
自研实例管理器
Patroni
Patroni
Patroni
Patroni
自动故障转移
✅
✅
✅
✅
✅
连接池
PgBouncer(独立部署)
PgBouncer
PgBouncer(内置)
PgBouncer(内置)
PgBouncer
备份工具
Barman Cloud
pgBackRest
WAL-G
pgBackRest
pgBackRest
PITR
✅
✅
✅
✅
✅
Web UI
❌
❌
❌
✅(Admin UI)
❌
对象存储支持
S3/GCS/Azure
S3/GCS/Azure
S3/GCS/Azure
S3/GCS/Azure
S3/GCS/Azure
跨区域容灾
✅(Replica Cluster)
✅
✅
✅
✅
商业支持
EDB
Crunchy Data
社区
OnGres
Percona

1.3 Operator选型的核心考量

在选择Operator时,需要从以下几个维度评估:

维度
关键问题
运维复杂度
需要多少K8s知识?是否有Web UI降低门槛?
故障转移机制
切换速度?是否需要外部依赖(etcd)?
备份恢复能力
支持哪些存储后端?PITR粒度如何?
存储策略
是否支持WAL独立存储?存储扩容是否自动化?
升级策略
数据库版本升级是否自动化?Operator升级是否平滑?
社区活跃度
问题响应速度?文档质量?

【第二部分】CloudNativePG (CNPG)——K8s原生设计的先行者

2.1 核心定位

CNPG是由EDB(PostgreSQL生态核心贡献者)创建并维护的Operator,目前已进入CNCF沙箱。其核心设计理念是将PostgreSQL运维知识编码为Kubernetes原生资源。

2.2 架构特点

┌─────────────────────────────────────────────────────────────┐
│                    Kubernetes API Server                     │
└───────────────────────────────┬─────────────────────────────┘
                                │ 直接监听/调谐
┌───────────────────────────────▼─────────────────────────────┐
│                    CNPG Controller Manager                   │
│                      (无需etcd/Patroni)                     │
└───────────────────────────────┬─────────────────────────────┘
                                │ 直接管理
┌───────────────────────────────▼─────────────────────────────┐
│                         PostgreSQL Pods                      │
│  ┌─────────────┐  ┌─────────────┐  ┌─────────────┐          │
│  │ Primary     │  │ Replica     │  │ Replica     │          │
│  │ + Instance  │  │ + Instance  │  │ + Instance  │          │
│  │ Manager     │  │ Manager     │  │ Manager     │          │
│  └─────────────┘  └─────────────┘  └─────────────┘          │
└─────────────────────────────────────────────────────────────┘

关键设计决策:

  1. 1. 不使用StatefulSet:直接管理Pod,获得更灵活的控制
  2. 2. 不使用Patroni:自研Instance Manager,无需外部依赖
  3. 3. 无etcd依赖:利用K8s API作为状态存储

2.3 优势与局限

优势:

优势
说明
CNCF背书
社区活跃,增长最快
K8s原生
无额外依赖,部署简单
备份完善
Barman Cloud集成,支持S3/GCS/Azure
文档优秀
EDB官方维护,质量高
声明式表空间
原生支持表空间管理

局限:

局限
说明
无Web UI
纯CLI操作,门槛较高
无数据库分支
不支持instant cloning
开发者自服务弱
需要平台团队介入
K8s知识要求高
不适合K8s新手

2.4 最佳适用场景

  • • ✅ 已有K8s运维能力的平台团队
  • • ✅ 追求开源、无厂商锁定的组织
  • • ✅ 需要纯K8s原生体验的场景
  • • ❌ 需要Web UI的团队
  • • ❌ 需要开发者自服务数据库分支的场景

【第三部分】Crunchy Postgres Operator (PGO)——最成熟的企业级选择

3.1 核心定位

Crunchy PGO是最老牌的PostgreSQL Operator,由Crunchy Data开发和维护,在K8s生态中拥有最长的生产验证历史。

3.2 架构特点

PGO基于Patroni实现高可用,深度集成pgBackRest进行备份管理:

apiVersion: postgres-operator.crunchydata.com/v1beta1
kind:
 PostgresCluster
metadata:

  name:
 hippo
spec:

  postgresVersion:
 16
  instances:

    -
 name: pgha
      replicas:
 3
      dataVolumeClaimSpec:

        storageClassName:
 fast-ssd
        resources:

          requests:

            storage:
 50Gi
  backups:

    pgbackrest:

      repos:

        -
 name: repo1
          s3:

            bucket:
 my-backups
            region:
 us-east-1
          schedules:

            full:
 "0 1 * * 0"           # 每周日全量
            differential:
 "0 1 * * 1-6"  # 每周一到周六差异
  proxy:

    pgBouncer:

      replicas:
 2

3.3 优势与局限

优势:

优势
说明
生产验证充分
最老牌,企业用户众多
pgBackRest集成
最成熟的备份工具,支持差异备份
企业支持
Crunchy Data提供商业支持
pgMonitor监控
内置Prometheus监控方案
文档丰富
官方文档详尽,示例众多

局限:

局限
说明
配置复杂
CRD结构较复杂,学习曲线陡
依赖Patroni
增加外部依赖和运维复杂度
升级需手动
数据库升级不是完全自动化
无Web UI
纯CLI操作

3.4 最佳适用场景

  • • ✅ 企业级生产环境,需要商业支持
  • • ✅ 已有Patroni使用经验的团队
  • • ✅ 重视备份功能的场景(pgBackRest最成熟)
  • • ❌ 追求轻量级、无外部依赖的团队
  • • ❌ 需要Web UI的团队

【第四部分】Zalando Postgres Operator——大规模验证的Patroni方案

4.1 核心定位

Zalando Postgres Operator是社区最广泛使用的Operator之一,由欧洲最大电商平台Zalando开发,管理着4000+ PostgreSQL集群。

4.2 架构特点

Zalando Operator的核心是Spilo——一个集成了Patroni、PgBouncer和WAL-G的PostgreSQL Docker镜像:

┌─────────────────────────────────────────────────────────────┐
│                      Spilo Container                         │
│  ┌─────────────┐  ┌─────────────┐  ┌─────────────┐          │
│  │ PostgreSQL  │  │  Patroni    │  │  PgBouncer  │          │
│  │  (数据库)   │  │  (HA管理)   │  │  (连接池)   │          │
│  └─────────────┘  └─────────────┘  └─────────────┘          │
│  ┌─────────────┐                                           │
│  │   WAL-G     │  ← 备份工具                                │
│  └─────────────┘                                           │
└─────────────────────────────────────────────────────────────┘

部署方式:

# Helm部署(推荐)
helm repo add postgres-operator-charts \
  https://opensource.zalando.com/postgres-operator/charts/postgres-operator
helm install postgres-operator postgres-operator-charts/postgres-operator

# Kustomize部署(生产推荐)

kubectl apply -k github.com/zalando/postgres-operator/manifests

4.3 优势与局限

优势:

优势
说明
大规模验证
Zalando生产环境4000+集群
Patroni成熟
最成熟的PostgreSQL HA方案
团队隔离
命名空间级别的资源隔离
部署灵活
支持Helm/Kustomize/手动
MIT许可证
最宽松的开源协议

局限:

局限
说明
学习曲线陡
Patroni配置复杂
维护活跃度下降
更新频率低于CNPG
无Web UI
纯CLI操作
AWS深度绑定
部分功能依赖AWS(如EBS扩容)

4.4 最佳适用场景

  • • ✅ 已使用Patroni的团队
  • • ✅ 大规模PostgreSQL部署(数百集群以上)
  • • ✅ 运行在AWS环境
  • • ❌ 追求K8s原生体验的团队
  • • ❌ 需要厂商商业支持的场景

【第五部分】StackGres——全栈集成的Web UI方案

5.1 核心定位

StackGres是OnGres公司开发的全栈PostgreSQL平台,最大的特色是提供了Web UI,大大降低了运维门槛。

5.2 架构特点

StackGres的独特之处在于使用Envoy作为数据库代理:

┌─────────────────────────────────────────────────────────────┐
│                      StackGres Admin UI                      │
│                    (Web图形化管理界面)                       │
└───────────────────────────────┬─────────────────────────────┘
                                │
┌───────────────────────────────▼─────────────────────────────┐
│                         Envoy Mesh                           │
│         (服务网格代理,负责负载均衡和可观测性)               │
└───────────────────────────────┬─────────────────────────────┘
                                │
┌───────────────────────────────▼─────────────────────────────┐
│                    PostgreSQL + Patroni                      │
│                    (底层HA由Patroni实现)                    │
└─────────────────────────────────────────────────────────────┘

部署命令:

# 一键安装
kubectl apply -f 'https://sgres.io/install'

# 或使用Helm

helm install --namespace stackgres stackgres-operator \
  https://stackgres.io/downloads/stackgres-k8s/stackgres/latest/helm/stackgres-operator.tgz

5.3 优势与局限

优势:

优势
说明
Web UI
唯一提供图形化界面的主流Operator
Envoy集成
内置负载均衡和可观测性
分布式存储支持
支持Rook/Ceph
自动化小版本升级
减少运维负担

局限:

局限
说明
资源占用高
Envoy mesh增加资源开销
AGPL许可证
对某些企业有合规限制
社区较小
用户基数小于CNPG和Zalando
无数据库分支
不支持instant cloning

5.4 最佳适用场景

  • • ✅ 需要Web UI降低运维门槛的团队
  • • ✅ 已使用Envoy服务网格的环境
  • • ✅ 需要分布式存储的场景
  • • ❌ 资源受限的环境
  • • ❌ 对AGPL许可证敏感的企业

【第六部分】Percona Operator——Percona生态的集成方案

6.1 核心定位

Percona Operator基于Crunchy PGO 4.7构建,集成了Percona监控和管理(PMM)方案。

6.2 架构特点

Percona Operator的核心增强是PMM集成:

┌─────────────────────────────────────────────────────────────┐
│                   Percona Operator                           │
│                     (基于PGO 4.7)                          │
└───────────────────────────────┬─────────────────────────────┘
                                │
            ┌───────────────────┼───────────────────┐
            ▼                   ▼                   ▼
    ┌─────────────┐     ┌─────────────┐     ┌─────────────┐
    │  PostgreSQL │     │  pgBackRest │     │   PgBouncer │
    │  + Patroni  │     │  (备份)    │     │  (连接池)  │
    └─────────────┘     └─────────────┘     └─────────────┘
            │                   │                   │
            └───────────────────┼───────────────────┘
                                ▼
                    ┌─────────────────────┐
                    │  Percona Monitoring │
                    │  and Management     │
                    │  (PMM Web UI)      │
                    └─────────────────────┘

6.3 优势与局限

优势:

优势
说明
PMM集成
内置Percona监控方案,提供Web UI
存储无关
支持NFS、hostPath、各种存储类
Percona生态
可与Percona其他产品集成

局限:

局限
说明
用户数最少
GitHub Star仅358
基于PGO 4.7
与新版PGO存在差异
社区较小
问题响应可能较慢

6.4 最佳适用场景

  • • ✅ 已使用Percona生态(如Percona XtraDB Cluster)
  • • ✅ 需要PMM监控能力
  • • ✅ 对存储类型有特殊要求
  • • ❌ 追求最大社区支持的团队

【第七部分】选型决策矩阵

7.1 功能对比总结

功能
CNPG
PGO
Zalando
StackGres
Percona
Star数
8,257
4,381
5,119
1,380
358
HA机制
自研
Patroni
Patroni
Patroni
Patroni
备份工具
Barman
pgBackRest
WAL-G
pgBackRest
pgBackRest
Web UI
❌
❌
❌
✅
✅(PMM)
外部依赖
无
Patroni
Patroni
Patroni
Patroni
K8s原生度
最高
中等
中等
中等
中等
学习曲线
中
高
中高
中
高
商业支持
EDB
Crunchy
社区
OnGres
Percona

7.2 场景推荐

场景
首选
备选
理由
全新K8s环境
CNPG
Zalando
K8s原生设计,无历史包袱
已有Patroni经验
Zalando
PGO
充分利用现有知识
需要商业支持
PGO
CNPG
Crunchy Data企业支持最成熟
需要Web UI
StackGres
Percona
唯一提供原生Web UI
Percona生态用户
Percona
PGO
与现有工具链集成
大规模部署
Zalando
CNPG
4000+集群验证
备份功能优先
PGO
CNPG
pgBackRest最成熟
轻量级、无依赖
CNPG
-
唯一无需Patroni的方案

7.3 Operator间迁移

由于选型决策可能随时间变化,了解迁移路径也很重要:

迁移触发场景:

  • • 许可证变化(如StackGres的AGPL)
  • • 维护活跃度下降
  • • 功能需求无法满足
  • • 商业支持需求变化

迁移方式:

方式
原理
适用场景
逻辑复制
通过发布/订阅迁移数据
有停机窗口
备份恢复
pgBackRest/Barman恢复
数据量大,可接受PITR
卷拷贝
直接拷贝PVC数据
同K8s集群,版本兼容

7.4 选型决策流程图

开始选型
    │
    ▼
是否需要Web UI?
    ├── 是 → StackGres Percona(PMM)
    │
    ▼
是否需要商业支持?
    ├── 是 → PGO(Crunchy)/ CNPG(EDB)
    │
    ▼
是否已有Patroni经验?
    ├── 是 → Zalando PGO
    │
    ▼
是否追求K8s原生、无依赖?
    ├── 是 → CNPG(首选)
    │
    ▼
是否Percona生态用户?
    ├── 是 → Percona Operator
    │
    ▼
是否追求最大社区支持?
    └── CNPG

【第八部分】本章总结

8.1 核心知识点速查

Operator
一句话总结
最佳场景
CNPG
K8s原生、无依赖、增长最快
全新K8s环境
PGO
最老牌、pgBackRest、企业支持
需要商业支持
Zalando
大规模验证、Patroni驱动
已有Patroni经验
StackGres
Web UI、Envoy集成
需要图形化管理
Percona
PMM监控、Percona生态
Percona用户

8.2 选型建议总结

团队情况
推荐
理由
小团队,K8s经验少
StackGres
Web UI降低门槛
平台团队,追求开源
CNPG
社区最活跃,技术最先进
企业级,需要支持
PGO
最成熟的商业化方案
已有Patroni投资
Zalando
复用现有知识
Percona用户
Percona
生态集成

8.3 实战练习

练习1:部署对比

# 任务:
# 1. 分别部署CNPG和Zalando Operator到两个namespace

# 2. 各创建一个3实例集群

# 3. 对比两者的CRD结构差异

# 4. 对比故障转移速度

练习2:备份功能对比

# 任务:
# 1. 为CNPG集群配置S3备份

# 2. 为PGO集群配置pgBackRest备份

# 3. 对比两者的备份格式和恢复流程

练习3:选型分析

# 任务:
# 选择一个真实业务场景(如:10人团队、无K8s经验、需要Web UI)

# 分析每个Operator的优缺点

# 给出推荐方案并说明理由

8.4 下期预告

第7期:监控与可观测性——Prometheus + Grafana

我们将深入PostgreSQL on K8s的监控体系:

  • • Prometheus集成:各Operator的监控方案对比
  • • 关键指标采集:连接数、TPS、复制延迟、WAL归档
  • • Grafana仪表盘:CNPG官方Dashboard使用
  • • 日志采集:Loki + Promtail方案
  • • 告警配置:AlertManager规则设置

监控是生产环境的眼睛,下期见!

本文为学习笔记,内容基于CloudNativePG、Crunchy PGO、Zalando Operator官方文档及社区对比分析提炼总结。

文章转载自绩隐金,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论