关于Kubernetes体验的PostgreSQL

当前的炒作是将PostgreSQL数据库放入Kubernetes。显然,它是在堆栈顶部添加另一层。

这是人们应该始终牢记的一点,特别是如果计划在生产中运行。

它增加了DBA的堆栈,使他们不必处理操作员实现的K8s YAML配置文件。

对数据库服务器的访问也不同。DBA所学到的关于如何进行正确备份,更重要的是,测试备份和恢复备份的知识并不适用于所学到的知识。

仅通过一些Ansible脚本或使用shell脚本更改配置已不再可能。更改必须始终在YAML文件中完成,这些文件可以是普通的Kustomize,也可以是带有Helm图表的声明性配置。

重要提示

我已经更改了之前在这个博客上发布的一些信息。上面注明了我获得信息的日期和人。这些信息部分来自LinkedIn的一个帖子和电子邮件。

这些新信息都没有经过测试,只是添加了指向这些信息的链接。

历史

由于K8s最初打算启动一个包含应用程序的pod,所以一开始它没有永久存储。但如果没有永久存储数据的选项,在POD中拥有数据库就不是一个选项。当添加了永久卷时,情况发生了变化。

承诺似乎是,只要在PostgreSQL运行的地方设置一些东西就更容易了,而不必关心数据库。这显然不是它的工作原理。

PostgreSQL运算符

目前有几个开源的PostgreSQL操作符可用。不过,让我们看看他们,运算符的排序顺序是按字母顺序排列的。

这里比较的是开放源代码许可证下的第一个。此外,它们都实现了高可用性。

CloudNativePG

它最初由EDB开发,但已外包给公共组织。

存储库位于github.com/cloudnative-pg/cloudnate-pg。

PostgreSQL的Percona运算符

Percona从Crunchy数据中派生了PGO,可在github.com/Percona/Percona-postgresql-operator上找到来源。

PGO通过Crunchy数据

您可以在github.com/CrunchyData/postgres-operator上找到存储库。

Zalando的postgres操作员

该存储库可在GitHub上访问GitHub.com/zalando/postgres-operator。

StackGres

OnGres开发了另一个运营商,也可以在GitHub上使用,GitHub.com/OnGres/stackgres。

算子特征比较

脚节点:

1.通过postgis容器

2.Apache许可社区版

3.WAL-E已经过时了

4.我在文档中找到了一些提到的扩展,但没有支持的扩展列表,其中一些是Alexander Kukushkin提到的

5.支持更多扩展,正如我为其他操作符所发现的,包括一些外部数据包装器

结论

到目前为止,我查看了所有的操作符,除了Percona的操作符,但由于它基于PGO,所以应该与该操作符相似。

无论您喜欢哪一种,都有一些事情需要始终牢记:您需要调整PostgreSQL的设置,因为它几乎无法使用默认配置。我碰巧没有调整WAL设置,运行pgbench导致WAL文件不完整,并在PostgreSQL日志文件中出现错误。

还请记住,禁止在YAML配置之外创建数据库,我最终得到了一个数据库,由于pg_hba中缺少条目,无法从备份中恢复.conf文件。不过,有了tWAL Ghat知识,一旦PostgreSQL在K8s中运行,就从有效的SQL语句中删除create database。

所有运营商的文档都存在漏洞,有时很难找到正确的文档。

除Zalando之外,所有运营商都可以获得商业支持。

CloudNativePG

使用CloudNativePG,我发现在高可用性方面存在问题。事实上,现在这里的标准是Patroni,因为它是迄今为止最常用的一种,AFAIK。Patroni的一大优点是,它可以确保所有节点都运行相同的配置。

更改日期:2022-08-30

我没有找到任何关于如何进行次要PostgreSQL更新的信息,也没有找到如何进行主要更新的信息。

我从Lætitia Avrot那里得到了一个关于在哪里找到更新文档的提示,因此我更改了它。它也正在支持主要的PostgreSQL更新。

更改日期:2022-09-01

根据加布里埃尔·巴托利尼(Gabriele Bartolini)的说法,CloudNativePG确实支持PostgreSQL的主要升级,这是通过导入Postgres数据库完成的。

PGO

到目前为止,唯一的缺点是,它不支持PosgreSQL的主要升级,但不久前,Crunchy数据宣布,他们正在开发它。

更改日期:2022-08-31

Crunchy Data的Andrew L’Ecuyer联系了我,并给了我他博客文章的链接,其中指出,thtat PGO支持PostgreSQL自5.1以来的主要升级。

他还告诉我,Crunchy Data将研究恢复数据库的问题,该数据库是用SQL语句创建的,而不是通过操作符创建的。

postgres算子

Zalando的postgres操作员有一个问题,它没有提供适当的备份工具。pg_basebackup优于pg_ dump,后者根本不应被视为备份。由于WAL-E已经过时,因此不应使用。我们无法确定它是否适用于较新的PostgreSQL版本。

更改日期:2022-09-01

根据亚历山大·库库什金·扎兰多的说法,他已经承诺要维持一个沃尔-伊分叉,以维持它的生存。此外,运营商也支持WAL-G进行备份。

pg_basebackup由Patroni自动用于构建副本。

运算符还支持其他PostgreSQL扩展,它们已经添加。

StackGres

StackGres与postgres操作符有相同的问题:它使用pg_basebackup。此外,它不支持当前版本,截至撰写本文时为14,而15已经处于边缘。

更改日期:2022-09-01

我没有找到任何关于如何进行次要PostgreSQL更新的信息,也没有找到如何进行主要更新的信息。

根据塞巴斯蒂安·韦伯(Sebastian Webber)对LnkedOn的评论,StackGres支持PostgreSQL的小型和大型升级。这在他们的文档中有很深的记录:SGDbOps。

根据我在那里看到的,有一些对象可以填充值,但我没有看到任何示例。

根据阿尔瓦罗·埃尔南德斯·托托萨的说法,StackGres确实支持PostgreSQL 14,即使该项目的GitLab和GitHub自述页面明确声明只支持PostgreSQL 12和13。

它隐藏在2021 11月5日发布的测试版的发行说明中。

他还表示,StackGres正在使用WAL-G进行备份。SGBackupConfig的文档中提到了“basebackup”,而WAL-G并没有在关于备份的章节中提到,也没有在文档中提到。

原文标题:PostgreSQL On Kubernetes Experiences
原文作者:STEFANIE JANINE STÖLTING
原文链接:https://proopensource.it/blog/postgresql-on-k8s-experiences


免责声明:

1、本站资源由自动抓取工具收集整理于网络。

2、本站不承担由于内容的合法性及真实性所引起的一切争议和法律责任。

3、电子书、小说等仅供网友预览使用,书籍版权归作者或出版社所有。

4、如作者、出版社认为资源涉及侵权,请联系本站,本站将在收到通知书后尽快删除您认为侵权的作品。

5、如果您喜欢本资源,请您支持作者,购买正版内容。

6、资源失效,请下方留言,欢迎分享资源链接

文章评论

0条评论