在 Kubernetes 上部署 PostgreSQL — 基于 CloudNativePG 的完整设置指南

发布日期:2026-06-16 10:02:03   浏览量 :2
发布日期:2026-06-16 10:02:03  
2

最初发布于 DevToolHub,随着 CloudNativePG 的发展,我会在那里持续更新本指南。

在 Kubernetes 中运行 PostgreSQL 曾经是个糟糕的主意。有状态副本集配置复杂,持久卷不可靠,而故障转移往往意味着数据丢失。大多数团队最终都选择了托管云数据库,并认为问题已解决。

这种考量如今已经改变。CloudNativePG(云原生 PostgreSQL)——这款列入云原生计算基金会清单的 PostgreSQL 运算符——开箱即用地支持高可用性、自动故障转移、时间点恢复、连接池和流复制。到 2026 年,它已成为在 Kubernetes 上运行生产级 PostgreSQL 的标准方式,“在 K8s 上自托管”与“托管云数据库”之间的差距已显著缩小。

本指南将详细介绍完整的 CloudNativePG 设置流程——从安装运算符到部署具备生产就绪能力的集群。

完整指南涵盖的内容

  • 为何选择 CloudNativePG 而非普通的有状态副本集 —— 运算符究竟做了哪些原始有状态副本集无法实现的事情
  • 安装运算符 —— 使用 kubectl 和 kubectl-cnpg 插件
  • 部署包含 3 个实例的高可用集群 —— 1 个主节点 + 2 个备用节点,并包含 PostgreSQL 调优参数
  • 连接您的应用程序 —— 读写服务与只读服务的区别,以及用于调试的端口转发
  • 备份并将预写式日志归档至 S3 —— 计划备份、保留策略,以及验证归档是否正常工作
  • PgBouncer 连接池 —— 池化器资源,事务模式与会话模式的区别
  • 基于角色的访问控制和网络策略 —— 在 Kubernetes 层限制谁可以访问数据库
  • 测试故障转移 —— 如何模拟主节点故障以及预期结果
  • 时间点恢复 —— 从预写式日志归档中恢复到确切的时间戳
  • 常见错误与最佳实践 —— 存储容量规划、池化模式、pg_hba.conf 默认配置、同步复制

大多数指南忽略的关键一点

必须在向数据库写入数据之前配置好预写式日志归档——您无法事后启用时间点恢复功能。请在进行首次应用程序写入之前配置好备份。

那么,您应该使用哪种设置?

K8s 上的 CloudNativePG —— 适合拥有 Kubernetes 专业知识、希望获得完全运维控制权、具备时间点恢复能力并能自定义 PostgreSQL 配置,同时不愿支付托管数据库高昂费用的团队。

托管 PostgreSQL(RDS、Cloud SQL、DigitalOcean 托管数据库)—— 在运维简便性方面仍然胜出。无需维护运算符,自动故障转移由服务商处理。

CloudNativePG 显著缩小了两者之间的差距——但正确的选择取决于您的团队对数据库运维工作的接受程度。

我在 DevToolHub 上保留了完整的分步指南,包括所有 YAML 清单文件和 kubectl 命令:Kubernetes 上的 PostgreSQL — 使用 CloudNativePG 的完整设置指南

我在 devtoolhub.com 撰写实用的 DevOps 和 Kubernetes 指南。对您的设置有疑问?欢迎留言评论。

免责声明:本文内容来自互联网,该文观点不代表本站观点。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,请到页面底部单击反馈,一经查实,本站将立刻删除。

关于我们
热门推荐
合作伙伴
免责声明:本站部分资讯来源于网络,如有侵权请及时联系客服,我们将尽快处理
Copyright © 2025-2027 ToB产业网址导航 公安备案 浙公网安备33010602013138号 浙ICP备16025413号-9
支持 反馈 订阅 数据