内容提要
CYBERTEC PG Operator 可通过 14 行 YAML 在 minikube 上部署高可用 PostgreSQL,支持主从选举、流复制和自动故障转移。单节点部署需设置 enable_pod_antiaffinity=false,多节点集群应保留反亲和性。验证表明主库可写、从库只读且复制零延迟,具备生产级基础,后续可扩容、升级及多区域部署。
延伸解读
反亲和性设置:单节点与多节点的关键区别
文章特别指出 enable_pod_antiaffinity=false 标志的重要性。默认情况下,操作符会将副本分散到不同 Kubernetes 节点,这是生产环境的理想行为。但在 minikube 单节点环境中,若不关闭反亲和性,副本将永远处于 Pending 状态。因此,在真实多节点集群上应保持反亲和性开启,以确保高可用性。
验证复制与只读:生产级基础的关键证明
通过在主库写入、在从库读取,并确认从库拒绝写入,文章验证了流复制确实生效且从库为只读。Patroni 显示主库和流式副本零延迟,这证明部署不仅是一个玩具,而是具备生产级基础。读者可以据此判断复制健康状态。
后续扩展:从基础部署到多区域
文章提到,这个 14 行 YAML 部署只是基础。在此基础上,可以调整规模、扩展和升级而不停机,这将是下一篇的主题,并最终通过多站点扩展到多区域。这为读者指明了从单集群到跨区域高可用的演进路径。
Q&A
如何在 minikube 上快速部署高可用 PostgreSQL?
使用 CYBERTEC PG Operator,只需一个 14 行的 YAML 文件即可完成部署。在单节点 minikube 上,必须设置 enable_pod_antiaffinity=false,否则副本会因反亲和性而一直处于 Pending 状态。
为什么在 minikube 上部署 PostgreSQL 高可用集群需要设置 enable_pod_antiaffinity=false?
因为默认情况下,Operator 会将副本分散到不同的 Kubernetes 节点上,这是生产环境所需的反亲和性。但 minikube 是单节点,如果不关闭反亲和性,副本将无法调度,一直处于 Pending 状态。
CYBERTEC PG Operator 部署的 PostgreSQL 集群如何验证主从复制是否正常工作?
可以通过在主库上执行写操作,然后在从库上读取来验证。从库应拒绝写操作,只能进行只读查询,并且复制延迟为零。
CYBERTEC PG Operator 支持自动故障转移吗?
是的,CYBERTEC PG Operator 支持自动故障转移,它通过 Patroni 实现领导者选举和健康检查,确保高可用性。
在生产环境的多节点 Kubernetes 集群中,是否应该保留 enable_pod_antiaffinity 的默认设置?
是的,在生产环境的多节点集群中,应保留反亲和性(即不设置 enable_pod_antiaffinity=false),这样副本会分散到不同节点,提高可用性。
使用 CYBERTEC PG Operator 部署的 PostgreSQL 集群具备哪些生产级特性?
具备主从选举、流复制、自动故障转移、健康检查等特性,并且主库可写、从库只读且复制零延迟,可以作为生产环境的基础。