PostgreSQL最初发布于1996年,当时云原生甚至还不是一个术语。目前,它是第二大最受欢迎的关系型开源数据库DB-engines。随着其受欢迎程度的增长和Kubernetes的上升趋势,在k8上运行PostgreSQL有多种解决方案也就不足为奇了。
在这篇博文中,我们将比较这些解决方案,并回顾它们各自的优缺点。在我们显微镜下的解决方案是:
- Crunchy Data PostgreSQL运算符
- CloudNative PG来自企业数据库
- StackGres从OnGres
- Zalando Postgres接线员
- 雷竞技下载官网PostgreSQL的Percona操作符
摘要及对照表见我们的文档。
Crunchy Data PGO
松脆的数据是一家在PostgreSQL社区很有名的公司。他们为PG提供了广泛的服务和软件解决方案。他们的PostgreSQL Operator (PGO)是完全开源的(Apache 2.0许可证),但同时运营商使用的容器映像是在Crunchy Data Developer Program下发布的。这意味着在没有与Crunchy Data签订合同的情况下,您不能在生产中使用这些图像的Operator。欲知详情,请浏览使用条款。
部署
根据文档,该操作符的最新版本是5.2.0,但Github中最新的标签是4.7.7。我无法找到哪个版本可以用于生产,但我将使用来自GitHub页面的快速安装,该页面安装5.2.0。快速起步并不是那么快。首先,你需要用例子来分叉存储库:链接。
执行这些命令对我来说失败了:
|
1
2
3.
4
5
6
7
|
YOUR_GITHUB_UN=<您的GitHub用户名>"
cd
postgres-操作符-例子
克隆
成
“postgres-operator-examples”
。
。
。
git
@
github
com
:
许可
否认
(
publickey
)
。
致命的
:
可以
不
读
从
远程
存储库
。
|
我刚刚克隆了回购
|
1
|
git
克隆
--深度
1
https
://github
com/spron-在/postgres-操作符-例子
|
运行kustomize脚本也失败了:
|
1
2
|
美元
kubectl
应用
-k
kustomize/安装
错误
:
不能
来
找到
一个
的
“kustomization.yaml”
,
“kustomization.yml”
或
“Kustomization”
在
目录
“/ home雷竞技下载官网 / percona / postgres-operator-examples / kustomize /安装的
|
说明书上的说明文档页面有其他命令,所以我用它们代替。作为一个热爱开源的人,我发送了一个公关修复Github上的文档
|
1
2
|
kubectl
应用
-k
kustomize/安装/名称空间
kubectl
应用
--服务器-一边
-k
kustomize/安装/默认的
|
现在安装了Operator。安装集群:
|
1
|
kubectl
应用
-k
kustomize/postgres/
|
特性
PGO操作符被许多公司用于生产,具有管理功能,并允许用户微调PostgreSQL集群。
不需要进行常规的第二天操作,如备份和缩放。下面的特点很有趣:
- 扩展管理。PostgreSQL扩展扩展了数据库的功能。使用PGO,您可以轻松地为集群添加扩展,并在引导过程中配置它们。我喜欢这种方法的简单性。
- 用户/数据库管理。在集群初始化时创建用户和数据库。这对于CICD管道和各种自动化来说非常方便。
- 使用注释进行备份。通常,操作符为备份和恢复提供单独的自定义资源定义。在PGO的情况下,备份和恢复是通过注释管理的。这是一个反模式,但仍然遵循声明式形式。
CloudNative PG
这个操作员逐渐成熟了EnterpriseDB(EDB)最近终于开源了。它是apache授权的,完全开源的,并且有一个EDB Postgres操作员这是一个基于CloudNative PG的分支,企业版有一些额外的功能,例如,支持Red Hat OpenShift。
部署
使用快速入门,下面是如何安装操作符:
|
1
|
kubectl
应用
-f
https
://生
.githubusercontent
com/cloudnative-pg/cloudnative-pg/释放-1.17/释放/cnpg-1.17.0.yaml
|
它会自动创建cnpg-系统命名空间,并部署必要的crd、服务帐户等。
完成之后,就可以部署PostgreSQL集群了。有很多exampolary yaml。
|
1
|
kubectl
应用
-f
https
://cloudnative-pg
.io/文档/1.17/样品/集群-例子
.yaml
|
还有一个舵图可用这样可以进一步简化安装。
特性
CloudNative PG提供了广泛的常规操作功能:备份、扩展和升级。Operator的体系结构非常有趣:
- 没有StatefulSets。通常情况下,你会看到StatefulSets用于Kubernetes中的有状态工作负载。在这里,PostgreSQL集群部署了独立的pod,由操作员完全控制。
- 没有Patroni。Patroni是PostgreSQL社区中构建高可用集群的事实上的标准。相反,他们使用Postgres实例管理器。
- 酒吧间侍应。这也不是一个常见的选择,但可以解释为pgBarman, PostgreSQL的备份工具,由EDB收购的第二象限团队开发。
除了架构决策之外,还有一些东西让我觉得很新鲜:
- 文档。作为一名产品经理,我真的被他们的文档迷住了。它非常详细,深入细节,充满了各种各样的示例,涵盖了各种各样的用例。
- 用于创建集群的自定义资源称为“集群”。这有点奇怪,但是运行一些Kubectl得到集群有点酷。
- 你可以引导新的集群,从一个现有的备份对象和使用流复制从现有的PostgreSQL集群,甚至从Kubernetes外部。对于CICD和迁移非常有用。
StackGres
OnGres是一家为PostgreSQL提供支持、专业和管理服务的公司。经营者——StackGres-根据AGPL v3授权。
部署
安装非常简单,并有详细说明在网站上。它可以归结为一个命令:
|
1
|
kubectl
应用
-f
“https://sgres.io/install”
|
这将部署web用户界面和操作符。StackGres支持UI和常规YAML清单部署。UI是全功能的,并允许您做的一切,运营商支持从CRD。获取登录名和密码:
|
1
2
|
kubectl
得到
秘密
-n
stackgres
stackgres-restapi
--模板
'{{printf "用户名= %sn" (.data. name = %sn")k8sUsername | base64decode)
kubectl
得到
秘密
-n
stackgres
stackgres-restapi
--模板
'{{printf "密码= %sn" (.data. password = %sn")base64decode)}}'
|
连接到UI。您可以通过LoadBalancer或Kubernetes端口转发公开UI:
|
1
2
|
POD_NAME=美元
(
kubectl
得到
豆荚
--名称空间
stackgres
-l
“程序= stackgres-restapi”
-o
jsonpath=“{. items [0] .metadata.name}”
)
kubectl
港口-向前
美元
{
POD_NAME
}
--地址
0.0.0.0
8443
:
9443
--名称空间
stackgres
|
在UI中部署集群非常简单,这里就不赘述了。
特性
UI允许用户使用集群扩展、备份、恢复、克隆和执行各种其他任务。我发现调试问题有点困难。建议设置一个日志服务器并在其上调试问题,但我还没有尝试过。但是UI本身是成熟的、灵活的,而且非常漂亮!
有趣的的:
- 实验Babelfish支持从MSSQL迁移来节省许可成本。
- 扩展管理系统,用户可以选择扩展及其版本来扩展PG集群功能。

- 要执行升级、真空和其他数据库活动,操作员提供数据库操作能力。它还有内置的基准测试,这很酷!

Zalando Postgres接线员
Zalando是鞋类,时尚和美容的在线零售商。它是本文中唯一一家不以数据库为中心的公司。他们开源了他们内部用来运行和管理PostgreSQL数据库的Operator,并被广泛采用。值得一提的是,Zalando团队开发并开源Patroni,被广泛采用和使用。
部署
你可以部署Zalando操作员通过舵图或kubectl。与StackGres一样,这个Operator有一个内置的web UI。
头盔图的安装是最快和最简单的方法,让一切启动和运行:
|
1
2
3.
4
5
6
7
8
9
10
11
|
为postgres-operator添加repo
舵
回购
添加
postgres-操作符-图表
https
://开源
.zalando
com/postgres-操作符/图表/postgres-操作符
#安装postgres-operator
舵
安装
postgres-操作符
postgres-操作符-图表/postgres-操作符
为postgres-operator-ui添加repo
舵
回购
添加
postgres-操作符-用户界面-图表
https
://开源
.zalando
com/postgres-操作符/图表/postgres-操作符-用户界面
#安装postgres-operator-ui
舵
安装
postgres-操作符-用户界面
postgres-操作符-用户界面-图表/postgres-操作符-用户界面
|
暴露UI:
|
1
|
kubectl
港口-向前
svc/postgres-操作符-用户界面
8081
:
80
|
连接到UI并创建集群。
特性
这是最古老的PostgreSQL操作符之一,随着时间的推移,它的功能不断扩展。它支持备份和恢复、主要版本升级等等。此外,它有一个基于web的用户界面,以方便上手。
- 运营商严重依赖于Spilo-提供PostgreSQL和Patroni捆绑在一起的docker映像。它也在Zalando开发。这是构建HA体系结构的核心部分。
- 由于Zalando的基础设施使用AWS,因此该运营商经过了大量测试,可以与AWS集成。您可以在一些特性中看到它——比如AWS EBS的实时卷大小调整或gp2到gp3迁移。
雷竞技下载官网PostgreSQL的Percona操作符
雷竞技下载官网Percona致力于为任何地方的数据库提供软件和服务。Kubernetes是云原生工作负载的实际标准,有助于实现这一承诺。
我们的操作符最重要的是什么:
- 完全开源
- 由社区和Percona团队支持。雷竞技下载官网如果您与Percona签订了合同,您将享受到我们卓越的服雷竞技下载官网务。
- 它基于Crunchy Data PGO v 4.7,增强了监控、可升级性和灵活性raybet雷竞技竞猜在线官网
部署
我们有快速启动安装指南通过头盔和定期YAML清单。通过头盔的安装方法如下:
安装操作员:
|
1
2
|
舵
回购
添加
雷竞技下载官网
https
://雷竞技下载官网
.github
.io/雷竞技下载官网-舵-图表/
舵
安装
我的-操作符
雷竞技下载官网/pg-操作符
--版本
1.3.0
|
部署PostgreSQL集群:
|
1
|
舵
安装
我的-db
雷竞技下载官网/pg-db
--版本
1.3.0
|
特性
大多数特性都继承自Crunchy Data——备份、伸缩、多集群复制等等。
-
- 开源的。与Crunchy Data PGO相比,我们没有对容器映像施加任何限制,因此它是完全开源的,可以在生产中不受任何限制地使用。
- 雷竞技下载官网Praybet雷竞技竞猜在线官网ercona监控和管理(PMM)是一个开源的数据库监控、可观察性和管理工具。raybet雷竞技竞猜在线官网雷竞技下载官网Percona Operators集成了PMM,因此用户可以完全查看数据库的运行状况。
- 自动智能升级。我们的操作员不仅允许用户升级数据库,而且还以安全、零停机的方式自动升级。
- 一站式服务。今天的企业环境默认是多数据库的。雷竞技下载官网Percona可以帮助公司在Kubernetes上全面运行PostgreSQL、MySQL和MongoDB数据库工作负载。
为了让你兴奋,我们正在开发这个操作器的第二个版本。它将具有改进的架构,消除现有的备份和恢复限制,支持存储和资源的自动扩展等等。本季度我们计划发布测试版,请密切关注我们发布的版本。
结论
PostgreSQL在Kubernetes中并不是一个必要的邪恶,而是那些选择k8作为平台的公司的一个进化步骤。选择供应商和解决方案是一个重要的技术决策,它可能会影响未来的各种业务指标。还在为各种选择感到困惑吗?请开始讨论论坛或联系我们的团队。
Perc雷竞技下载官网ona Kubernetes操作符可以自动创建、修改或删除MySQL、MongoDB或PostgreSQL环境中的成员。

想要每周更新最新的博客文章?
现在订阅,我们将在每周五东部时间下午1点向您发送最新消息。
相关博客文章
推荐的文章
2023年4月14日
费尔南多·劳达雷斯·卡马戈斯
MySQL数据缓存效率
2023年4月13日
Naveed谢赫
PostgreSQL中的复制延迟
2023年4月13日
金伯利威尔金斯
MongoDB V4.2 EOL即将到来:现在如何升级和注意陷阱!
最受欢迎文章
2023年1月17日
谢尔盖Pronin
使用Percona Advisors确保数据库安全雷竞技下载官网
2023年2月10日
马塞洛•阿尔特曼
雷竞技下载官网Percona XtraBackup现在支持IAM实例配置文件
2023年2月10日
拉蒂。乔杜里
雷竞技下载官网Percona XtraBackup和MySQL 5.7等待刷新表状态查询