使用 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
被設計為與儲存類無關,並已被證明可以與其他儲存類一起工作。
公眾號:黑客下午茶