5 个 PostgreSQL Kubernetes Operator 选择

PostgreSQL (Postgres) 是一个健壮的有状态、对象关系和开源数据库,以其可靠性、高性能和可扩展性而闻名。数据库管理系统提供的功能包括外键约束、高可用性、复杂查询、SQL 多版本并发控制 (MVCC) 和可更新视图。这些特性使 PostgreSQL 适合为 Kubernetes (K8s) 应用程序提供弹性和高可用性的数据服务。

但是,要将 PostgreSQL 数据库组件实施到 Kubernetes 环境中,您需要一个自动配置、修改和监控 PostgreSQL 集群的操作员。操作员监控 PostgreSQL 集群清单——节点、安全性、容错性和站点拓扑——并进行必要的调整。

PostgreSQL Kubernetes Operator 包括:

  • Crunchy Data Postgres Operator
  • Zalando Postgres Operator
  • KubeDB Postgres Operator
  • StackGres
  • Percona Postgres Operator

让我们仔细看看这些 PostgreSQL Kubernetes Operator。我们将审查每个运营商的一些功能以及每个运营商的安装情况,以帮助您确定哪一个最能满足您的需求。

Crunchy Data Postgres Operator

Crunchy Postgres Operator for Kubernetes (PGO) 可自动部署并简化支持 Kubernetes 的 PostgreSQL 集群的管理。Operator 还提供 pod 自定义和 PostgreSQL 配置功能,通过 pgBackRest开源实用程序 提供高可用性、监控和数据恢复。

重要的 PGO 功能包括:

  • Crunchy Data 操作符,它允许持久存储配置,主要与动态存储类、HostPath 和网络文件系统 (NFS) 一起使用
  • PostgreSQL 配置,确保操作员部署健康的集群
  • 启用水平扩展以增加冗余和高可用性
  • 自定义 PostgreSQL 配置,允许用户在生产环境中配置 PostgreSQL 工作负载
  • 传输层安全 (TLS) 以保护数据服务器和 Postgres 操作员之间的交互(启用 TLS 安全的先决条件包括 CA 证书、TLS 私钥和 TLS 证书)
  • pgMonitor 库,用于监控您的 PostgreSQL 集群和主机环境的健康状况、指标和性能
  • PostgreSQL 用户管理,以帮助管理用户身份验证、入职和从 PostgreSQL 中删除
  • 节点亲和性部署,使操作员能够使用节点亲和性将 PostgreSQL 集群调度和部署到 Kubernetes 节点

您可以通过两种方式安装 PGO PostgreSQL Operator:

如何设置 PGO

您需要这些先决条件来安装和运行 PGO:

  • Kubernetes v1.13+
  • Kubectl
  • 应用程序端口
  • Kubernetes 集群,例如 Amazon Elastic Kubernetes Service (Amazon EKS)

有关安装和配置 PGO 的详细步骤,请参阅 Crunchy Data 的文档。Crunchy Operator 的架构依赖于 Kubernetes 自定义资源 (CR) 来创建各种自定义资源定义 (CRD) 来部署和管理 PostgreSQL 集群。这些 CRD 包括:

  • pgclusters.crunchydata.com
  • pgreplicas.crunchydata.com
  • pgtasks.crunchydata.com
  • pgpolicies.crunchydata.com

要让操作员使用自定义资源配置 PostgreSQL 集群,您需要首先将用于定义 PostgreSQL 集群的属性添加到 pgclusters.crunchydata.com CRD。包括集群名称、存储、秘密引用、边车和高可用性规则等详细信息。

接下来,PostgreSQL Operator 将运行各种任务来部署健康的集群。其中一项任务是为秘密引用创建部署,例如 pgBackRest 存储库和 PostgreSQL 主实例。

设置 PostgreSQL 实例后,操作员会创建一个pgBackRest以利用其 repo 的副本配置功能。pgBackRest 存储库还包括如下功能和特性:

  • 通过“delta restore”组件提供自动修复失败的主节点
  • 提供集群克隆功能
  • 允许完整、增量和差异备份
  • 允许完整的时间点数据恢复

有关设置自定义配置、灾难恢复、用户角色和身份验证的进一步指导, 请参阅 Crunchy 的 PostgreSQL Operator文档。

Zalando Postgres Operator

Patroni 为 Zalando 的Postgres Operator提供支持。Operator 可帮助您自动集成到 CI/CD 管道中,而无需访问 Kubernetes API。这种直接访问消除了手动操作并自动化了资源配置。此外,该 Operator 使您能够管理各种命名空间中的多个 Postgres 集群。

大部分操作员范围简化了在 Kubernetes 上部署由 Patroni 提供支持的集群——滚动更新、配置和清理 Postgres 集群——而 Patroni 处理高可用性集群引导操作。

如何设置 Zalando Postgres Operator

我们建议使用以下选项之一在本地运行 Kubernetes:

  • Minikube用于创建单节点 Kubernetes 集群
  • k3dkind用于创建多节点 Kubernetes 集群

此外,请务必安装 kubectl 以与 Kubernetes 基础架构进行交互。

您可以通过以下三种方式之一安装 Postgres Operator:

  • 使用Helm 图表
  • 使用自定义清单。您可以使用 kubectl v1.14 或更新版本来安装 kubectl apply -k github.com/zalando/postgres-operator/manifests
  • 通过手动部署手动使用 YAML 清单(请注意,您需要将清单配置到您的 Kubernetes 环境)

有关详细的安装指南,请参阅 Zalando 的文档

一旦安装完成并且操作员正在运行,您就可以部署 Postgres 集群。首先,使用以下命令提交 Postgres 集群清单:

kubectl create -f manifests/minimal-postgres-manifest.yaml

在 Postgres Operator 添加并验证集群清单后,它会创建端点和服务资源以及 StatefulSet 以根据清单指示的实例生成新的 pod。

接下来,数据库 pod 将运行 Spilo 映像和 Patroni pod 模板,由数字后缀标识。它们将分为主 pod 和另一个 pod,用于端点和服务下的副本。

KubeDB

AppsCode 开发了KubeDB,可让您为各种数据库创建 Operator。KubeDB 自动执行 Kubernetes 中的常规 PostgreSQL 操作,例如集群配置、备份、恢复、修补、故障发现和修复。此外,KubeDB Operator 允许您为所有有状态和无状态应用程序管理一个堆栈,从而降低了复杂性。

KubeDB 的其他核心功能包括:

  • 能够在一次性备份或您喜欢的频率之间进行选择
  • KubeDB 只做加密非重复备份,因此您只需支付增量存储的成本
  • PostgreSQL 操作员使用 PersistentVolumeClaims (PVC) 为数据库实例配置磁盘,从而提高性能
  • 对 KubeDB 操作员及其数据库启用 Prometheus 的监控
  • 支持 PostgreSQL、MySQL、Redis、Memcached、MongoDB 和 Elasticsearch

如何设置 KubeDB

您将需要这些工具来运行 KubeDB:

  • Kubernetes 集群
  • Kubectl

由于 KubeDB 操作员在 Kubernetes 环境中监控 Postgres 对象,因此 KubeDB 操作员在创建 Postgres 对象后启动了一个新的 StatefulSet 和两个集群 IP 服务。

按照以下步骤安装 KubeDB 算子,并详细了解 KubeDB 算子如何在 Kubernetes 中管理 Postgres 数据库。

KubeDB 与其他 PostgreSQL 运营商的不同之处在于,其他运营商使用内部工具而不是 Patroni 管理集群。此外,KubeDB 在独立的 GitHub 存储库中维护组织良好的文档。

尽管该公司提供免费的社区运营商,但部署功能运营商所需的所有核心组件仅在其基于订阅的企业版中可用。有关更多安装说明,请参阅 KubeDB 的文档

StackGres

StackGres Operator提供了多个框架来设置资源、配置持久卷和定义配置文件,就像 Zalando 提供的一样。这些配置经过全面验证,包括最佳实践和对在个人和企业级别部署 StackGres 操作员的支持。

团队在处理分布式基础架构时面临的一些核心挑战是可观察性、性能调整以及抽象出与相互交织的平台相关的复杂性。StackGres 对这些挑战的解决方案之一是将Envoy添加到他们的操作员中,这是一个通过可观察性和一致的性能调整帮助查明错误的代理。

在此过程中,操作员执行其 Kubernetes 任务,同时收集指标并调整平台以提高其容错性和可用性。

如何设置 StackGres

StackGres 的安装相对简单:您可以使用 kubectl 命令或通过 Helm 快速安装它,以进行生产就绪和可定制的安装:

kubectl apply -f 'https://sgres.io/install

or

helm install --namespace stackgres stackgres-operator --set-string
adminui.service.type=LoadBalancer
https://stackgres.io/downloads/stackgres-k8s/stackgres/latest/helm/stackgres-operator.tgz

安装后,确认操作员已准备好使用此命令:

kubectl wait -n stackgres deployment -l group=stackgres.io --for=condition=Available

当操作员准备好使用时,您会看到 Pod 正在运行:

➜ kubectl get pods -n stackgres -l group=stackgres.io
NAME                                  READY   STATUS    RESTARTS   AGE
stackgres-operator-78d57d4f55-pm8r2   1/1     Running   0          3m34s
stackgres-restapi-6ffd694fd5-hcpgp    2/2     Running   0          3m30s

您现在可以创建、扩展和自定义 Postgres 集群。查看 StackGres文档以获取有关如何配置和部署 StackGres 集群的进一步指导。

Percona Postgres Operator

Percona Distribution for PostgreSQL Operator是 Percona 对 Operator 领域的补充,基于 Crunchy Data 的 Operator。Percona 的架构与 Crunchy Data 非常相似,但有一些附加功能:

  • Percona 的内部监控解决方案 Percona 监控和管理 (PMM) 负责监控方面的繁重工作。它还有一个用户友好的 Web 控制台,用于查看高可用性 (HA) 代理指标。
  • Percona 的操作员与存储无关,可以使用网络文件系统 (NFS)、hostPath 卷和各种存储类。

Postgres Operator 在部署时将以下组件添加到 Postgres 容器套件中:

  • 主要 Postgres 数据库
  • 用于备份和灾难恢复的 pgBackRest 实用程序
  • 基于 Patroni 的高可用性组件
  • pg-stat-monitor 用于监控和性能查询
  • 用于 PostgreSQL 连接池的 pgBouncer

如何设置 Percona Postgres Operator

最新的 Percona Postgres 算子(1.10)正式支持这些平台:

  • OpenShift by RedHat 版本 4.7 – 4.9
  • 亚马逊弹性容器服务 (EKS) 1.18 – 1.21
  • 谷歌 Kubernetes 引擎 (GKE) 版本 1.19-1.22

您还可以通过 Minikube 或 Helm 图表安装 Percona。您将需要 kubectl 工具来在所有平台上部署操作员。

在每个平台上设置 Percona 需要不同的配置,所有这些都可以在他们的文档中找到。

结论

我们强调的操作符满足在 Kubernetes 上运行高可用性和容错 PostgreSQL 集群的基本阈值。但是,您需要为 Postgres pod 提供动态和容器原生存储,以保持可用性,即使在 pod 重新调度时也是如此。

您需要满足可用性、性能、安全性、合规性和服务级别协议 (SLA) 要求的端到端数据管理解决方案。详细了解Portworx 数据服务数据库即服务平台如何帮助部署和自动管理您的 Kubernetes 数据服务。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

进击云原生

众筹一元植发

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值