雲原生 PostgreSQL 集群 – PGO:來自 Crunchy Data 的 Postgres Operator
- 2022 年 2 月 23 日
- 筆記
使用 PGO
在 Kubernetes
上運行 Cloud Native PostgreSQL
:來自 Crunchy Data
的 Postgres Operator
!
- Cloud Native PostgreSQL
- Crunchy Data
- Postgres Operator
PGO
是由 Crunchy Data
開發並包含在 Crunchy PostgreSQL for Kubernetes
中的 Postgres Operator
,可自動化並簡化在 Kubernetes
上部署和管理開源 PostgreSQL
集群。
- Crunchy PostgreSQL for Kubernetes
無論您是需要啟動並運行一個簡單的 Postgres
集群,還是需要在生產中部署一個高可用性、容錯群集群,或者是運行自己的資料庫即服務(database-as-a-service)
,PostgreSQL Operator
都提供了保持雲原生 Postgres
集群健康所需的基本功能,包括:
Postgres 集群供應
輕鬆創建、擴展和刪除 PostgreSQL 集群
,同時完全自定義您的 Pod
和 PostgreSQL
配置!
- provisioning
- 輕鬆創建、擴展和刪除 PostgreSQL 集群
高可用性
由基於分散式共識的高可用性解決方案
支援的安全、自動故障轉移。使用 Pod Anti-Affinity
來幫助恢復;您可以配置它的 aggressive
! 失敗的初選會自動恢復,從而加快恢復時間。
- 高可用性
- Pod Anti-Affinity
支援在多個 Kubernetes 集群
中工作的備用 PostgreSQL 集群
。
- 多個 Kubernetes 集群
災難恢復
備份和恢複利用開源 pgBackRest
實用程式,包括對完整、增量和差異備份以及高效增量恢復的支援
。 設置您希望備份保留多長時間。適用於非常大的資料庫!
TLS
通過為 PostgreSQL 伺服器啟用 TLS 來保護應用程式和數據伺服器之間的通訊,包括強制所有連接使用 TLS
的能力。
- PostgreSQL 伺服器啟用 TLS
監控
使用開源 pgMonitor
庫跟蹤 PostgreSQL
集群的運行狀況。
- 監控
- pgMonitor
PostgreSQL 用戶管理
使用強大的命令從您的 PostgreSQL
集群中快速添加和刪除用戶。 管理密碼過期策略或使用您首選的 PostgreSQL
身份驗證方案。
升級管理
以最小的可用性影響安全地應用 PostgreSQL
更新到您的 PostgreSQL
集群。
高級複製支援
對於對丟失事務敏感的工作負載,可以在非同步複製
和同步複製
之間進行選擇。
- 非同步複製
- 同步複製
克隆
使用 pgo create cluster --restore-from
從現有集群或備份創建新集群。
連接池
使用 pgBouncer
進行連接池。
K8S 親和力和容忍度
使用 node affinity(節點親和性) 將 PostgreSQL
集群部署到您偏好的 Kubernetes
節點,或者指定 Kubernetes
可以將 PostgreSQL
實例調度到哪些節點並具有 tolerations(容忍度)。
- node affinity
- Kubernetes 節點
- tolerations(容忍度)
定期備份
選擇備份類型(完整、增量、差異)以及您希望它在每個 PostgreSQL
集群上發生的頻率。
- scheduling-backups
備份到 S3 或 GCS
將您的備份存儲在 Amazon S3、任何支援 S3 協議的對象存儲系統或 GCS 中。PostgreSQL Operator
可以從這些備份中備份、恢復和創建新集群。
- 將您的備份存儲在 Amazon S3
- GCS
多命名空間支援
您可以控制 PGO(Postgres Operator)
如何利用具有多種不同部署模型的 Kubernetes 命名空間:
- 將
PGO
和所有PostgreSQL
集群部署到同一個命名空間 - 將
PGO
部署到一個命名空間,並將所有PostgreSQL
集群部署到不同的命名空間 - 將
PGO
部署到一個命名空間,並跨多個命名空間管理PostgreSQL
集群 - 使用
pgo
客戶端運行pgo create namespace
和pgo delete namespace
動態添加和刪除由PostgreSQL Operator
管理的命名空間
完全可訂製性
Postgres Operator(PGO)
使 Postgres
在支援 Kubernetes
的平台上啟動和運行變得容易,但也可以進行進一步的自定義。因此,PGO
允許您進一步自定義您的部署,包括:
- 為主存儲、副本存儲和備份存儲選擇不同的存儲類
- 為每個
PostgreSQL
集群部署選擇自己的容器資源類; 區分用於主集群和副本集群的資源! - 使用自己的容器鏡像倉庫,包括支援
imagePullSecrets
和私有倉庫 - 自定義您的 PostgreSQL 配置
- 帶上您自己的受信任證書頒發機構
(CA)
以與Operator API server
一起使用 - 覆蓋每個集群的
PostgreSQL
配置
工作原理
Crunchy PostgreSQL Operator
擴展了 Kubernetes
,為快速創建和管理 PostgreSQL
集群提供更高級別的抽象。Crunchy PostgreSQL Operator
利用稱為 「自定義資源(Custom Resources)」
的 Kubernetes
概念來創建多個自定義資源定義 (CRD)
,以允許管理 PostgreSQL
集群。
包含的組件
使用 PostgreSQL Operator
部署的 PostgreSQL 容器包括以下組件:
- PostgreSQL
- pgBackRest
- pgBouncer
- pgAdmin 4
- pgMonitor
- Patroni
- LLVM (for JIT compilation)
除上述內容外,地理空間增強的 PostgreSQL + PostGIS
容器還添加了以下組件:
PostgreSQL Operator Monitoring 使用以下組件:
未直接與 PostgreSQL Operator 集成但可以與其一起工作的其他容器包括:
有關 PostgreSQL Operator
的哪些版本包含哪些組件的更多資訊,請訪問文檔的兼容性部分。
支援的平台
PGO
是 Postgres 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
以及 hostPath
和 NFS
進行了測試。
有各種不同類型的 Storage Class
可供 Kubernetes
使用,PGO
盡最大努力測試每一個,但由於這一領域的廣度,PGO
無法驗證每一類中的 Postgres Operator
功能。儘管如此,PostgreSQL Operator
被設計為與存儲類無關,並已被證明可以與其他存儲類一起工作。
公眾號:黑客下午茶