雲原生 PostgreSQL 叢集 - PGO:來自 Crunchy Data 的 Postgres Operator

為少發表於2022-02-23

使用 PGOKubernetes 上執行 Cloud Native PostgreSQL:來自 Crunchy DataPostgres Operator

PGO 是由 Crunchy Data 開發幷包含在 Crunchy PostgreSQL for Kubernetes 中的 Postgres Operator,可自動化並簡化在 Kubernetes 上部署和管理開源 PostgreSQL 叢集。

無論您是需要啟動並執行一個簡單的 Postgres 叢集,還是需要在生產中部署一個高可用性、容錯群叢集,或者是執行自己的資料庫即服務(database-as-a-service)PostgreSQL Operator 都提供了保持雲原生 Postgres 叢集健康所需的基本功能,包括:

Postgres 叢集供應

輕鬆建立、擴充套件和刪除 PostgreSQL 叢集,同時完全自定義您的 PodPostgreSQL 配置!

高可用性

由基於分散式共識的高可用性解決方案支援的安全、自動故障轉移。使用 Pod Anti-Affinity 來幫助恢復;您可以配置它的 aggressive! 失敗的初選會自動恢復,從而加快恢復時間。

支援在多個 Kubernetes 叢集中工作的備用 PostgreSQL 叢集

災難恢復

備份和恢復利用開源 pgBackRest 實用程式,包括對完整、增量和差異備份以及高效增量恢復的支援。 設定您希望備份保留多長時間。適用於非常大的資料庫!

TLS

通過為 PostgreSQL 伺服器啟用 TLS 來保護應用程式和資料伺服器之間的通訊,包括強制所有連線使用 TLS 的能力。

監控

使用開源 pgMonitor 庫跟蹤 PostgreSQL 叢集的執行狀況。

PostgreSQL 使用者管理

使用強大的命令從您的 PostgreSQL 叢集中快速新增和刪除使用者。 管理密碼過期策略或使用您首選的 PostgreSQL 身份驗證方案。

升級管理

以最小的可用性影響安全地應用 PostgreSQL 更新到您的 PostgreSQL 叢集。

高階複製支援

對於對丟失事務敏感的工作負載,可以在非同步複製同步複製之間進行選擇。

克隆

使用 pgo create cluster --restore-from 從現有叢集或備份建立新叢集。

連線池

使用 pgBouncer 進行連線池。

K8S 親和力和容忍度

使用 node affinity(節點親和性)PostgreSQL 叢集部署到您偏好的 Kubernetes 節點,或者指定 Kubernetes 可以將 PostgreSQL 例項排程到哪些節點並具有 tolerations(容忍度)

定期備份

選擇備份型別(完整、增量、差異)以及您希望它在每個 PostgreSQL 叢集上發生的頻率

備份到 S3 或 GCS

將您的備份儲存在 Amazon S3、任何支援 S3 協議的物件儲存系統或 GCS 中。PostgreSQL Operator 可以從這些備份中備份、恢復和建立新叢集。

多名稱空間支援

您可以控制 PGO(Postgres Operator) 如何利用具有多種不同部署模型的 Kubernetes 名稱空間

  • PGO 和所有 PostgreSQL 叢集部署到同一個名稱空間
  • PGO 部署到一個名稱空間,並將所有 PostgreSQL 叢集部署到不同的名稱空間
  • PGO 部署到一個名稱空間,並跨多個名稱空間管理 PostgreSQL 叢集
  • 使用 pgo 客戶端執行 pgo create namespacepgo delete namespace 動態新增和刪除由 PostgreSQL Operator 管理的名稱空間

Kubernetes 名稱空間

完全可定製性

Postgres Operator(PGO) 使 Postgres 在支援 Kubernetes 的平臺上啟動和執行變得容易,但也可以進行進一步的自定義。因此,PGO 允許您進一步自定義您的部署,包括:

工作原理

Crunchy PostgreSQL Operator 擴充套件了 Kubernetes,為快速建立和管理 PostgreSQL 叢集提供更高階別的抽象。Crunchy PostgreSQL Operator 利用稱為 “自定義資源(Custom Resources)”Kubernetes 概念來建立多個自定義資源定義 (CRD),以允許管理 PostgreSQL 叢集。

包含的元件

使用 PostgreSQL Operator 部署的 PostgreSQL 容器包括以下元件:

除上述內容外,地理空間增強的 PostgreSQL + PostGIS 容器還新增了以下元件:

PostgreSQL Operator Monitoring 使用以下元件:

未直接與 PostgreSQL Operator 整合但可以與其一起工作的其他容器包括:

有關 PostgreSQL Operator 的哪些版本包含哪些元件的更多資訊,請訪問文件的相容性部分。

支援的平臺

PGOPostgres Operator,是 Kubernetes-native 的,並保持與 Kubernetes 1.11 的向後相容性,並針對以下平臺進行了測試:

  • Kubernetes 1.17+
  • Openshift 4.4+
  • OpenShift 3.11
  • Google Kubernetes Engine (GKE), including Anthos
  • Amazon EKS
  • Microsoft AKS
  • VMware Tanzu

此列表僅包括 Postgres Operator 在釋出過程中經過專門測試的平臺:PGO 也適用於其他 Kubernetes 發行版。

儲存

PGO,即 Postgres Operator,使用各種不同型別的 Kubernetes 儲存和 Storage Classes 以及 hostPathNFS 進行了測試。

有各種不同型別的 Storage Class 可供 Kubernetes 使用,PGO 盡最大努力測試每一個,但由於這一領域的廣度,PGO 無法驗證每一類中的 Postgres Operator 功能。儘管如此,PostgreSQL Operator 被設計為與儲存類無關,並已被證明可以與其他儲存類一起工作。

公眾號:黑客下午茶

相關文章