Hans-Juergen Schoenig:Kubernetes 上 PostgreSQL 的日常运维:调整、扩缩容与升级

Hans-Juergen Schoenig:Kubernetes 上 PostgreSQL 的日常运维:调整、扩缩容与升级

💡 原文英文,约500词,阅读约需2分钟。
📝

内容提要

CYBERTEC PG Operator 实现 PostgreSQL 在 Kubernetes 上的无停机运维。修改清单即可调整内存、参数、副本数或小版本升级,Operator 以滚动方式先更新副本再切换主节点,全程可用。扩缩容自动克隆或排空节点,主节点移除前先故障转移,确保数据不丢失。其核心是声明式模型:用户修改期望状态,Operator 负责无停机协调。

🔎

延伸解读

声明式运维:将日常操作转化为清单修改

文章强调,使用 CYBERTEC PG Operator 后,调整资源、参数、副本数或小版本升级都只需修改清单中的一行。Operator 会以滚动方式协调变更,先更新副本,再切换主节点,确保数据库全程可用。这种声明式模型将运维人员从繁琐的步骤中解放出来,日常操作简化为 kubectl patch 或 Git 拉取请求,无停机由 Operator 负责。

扩缩容的自动化与数据安全

当需要更多读副本时,只需增加 numberOfInstances,Operator 会从主节点克隆新节点并开始流复制,数据自动同步。缩容时,Operator 会排空编号最高的节点;若该节点是主节点,Patroni 会先故障转移,确保主节点和数据不丢失。文章中的测试显示,在 2 到 3 再到 2 的扩缩容过程中,行数始终保持为 3。

小版本升级的无停机流程

小版本升级只需修改镜像字段。Operator 会重启 Pod 到新镜像(文章测试中约 25 秒),并执行与调整资源相同的切换模式:先更新副本,再切换主节点,实现零停机。但文章提醒,像 17 到 18 这样的大版本升级是更复杂的操作,Operator 会驱动 pg_upgrade 就地升级,需要单独谨慎处理。

❓

Q&A

在 Kubernetes 上如何给 PostgreSQL 增加内存而不导致停机?

通过修改清单中的资源限制(如将内存限制改为 1Gi),CYBERTEC PG Operator 会以滚动方式更新:先更新副本,然后切换主节点到已更新的节点,最后更新旧主节点,确保集群始终可用。

如何调整 PostgreSQL 的配置参数?

在清单中设置参数,Patroni 会在整个集群中应用该参数,无需手动重启数据库。

如何扩展 PostgreSQL 的读副本数量?

修改清单中的 numberOfInstances 字段,Operator 会从主节点克隆一个新节点并开始流复制,新节点自动拥有数据。

缩减 PostgreSQL 副本时如何保证数据不丢失?

Operator 会先排空编号最高的节点,如果该节点是主节点,Patroni 会先故障转移到其他节点,确保主节点和数据不丢失。

如何进行 PostgreSQL 的小版本升级?

只需修改清单中的镜像字段,Operator 会重启 Pod 到新镜像(约 25 秒),并执行与调整资源相同的零停机切换模式。

CYBERTEC PG Operator 的声明式模型是什么?

用户只需修改期望状态(如资源、参数、副本数、镜像),Operator 负责协调并执行滚动更新,实现无停机运维。日常操作就是 kubectl patch 命令或 Git 中的拉取请求。

🏷️

标签

➡️

继续阅读