雲原生 PostgreSQL 集群 – PGO:來自 Crunchy Data 的 Postgres Operator

  • 2022 年 2 月 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 被設計為與存儲類無關,並已被證明可以與其他存儲類一起工作。

公眾號:黑客下午茶