云原生 PostgreSQL 集群 - PGO:来自 Crunchy Data 的 Postgres Operator
使用 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
管理的命名空间
Kubernetes 命名空间
完全可定制性
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
被设计为与存储类无关,并已被证明可以与其他存储类一起工作。
公众号:黑客下午茶
云原生 PostgreSQL 集群 - PGO:来自 Crunchy Data 的 Postgres Operator的更多相关文章
- 云原生 PostgreSQL 集群 - PGO:5分钟快速上手
前提条件 请确保您的主机上安装了以下实用程序: kubectl git 安装 第 1 步:下载示例 首先,转到 GitHub 并 fork Postgres Operator 示例存储库: https ...
- [云原生]Kubernetes - 集群搭建(第2章)
目录 一.前置知识点 二.kubeadm部署方式介绍 三.安装要求 四.最终目标 五.准备环境 六.环境初始化 6.1 设置系统主机名以及Hosts文件的相互解析 6.2 安装依赖文件(所有节点) 6 ...
- 云原生 PostgreSQL - CrunchyData PGO 教程:创建、连接、删除 Postgres 集群
入门 作为安装的一部分,请确保您已完成以下操作: 分叉 Postgres Operator 示例存储库并将其克隆到您的主机. https://github.com/CrunchyData/postgr ...
- 多云混合云之多集群统一管理:基于阿里云ACK统一纳管多个不同Kubernetes集群
目前阿里云云原生产品家族已经支持多集群管理功能,允许使用阿里云容器服务Kubernetes(简称ACK)控制台或kubectl命令接入.统一纳管其他公有云.客户IDC自建K8s集群,集中管理部署K8s ...
- 分布式 PostgreSQL 集群(Citus)官方示例 - 实时仪表盘
Citus 提供对大型数据集的实时查询.我们在 Citus 常见的一项工作负载涉及为事件数据的实时仪表板提供支持. 例如,您可以是帮助其他企业监控其 HTTP 流量的云服务提供商.每次您的一个客户端收 ...
- 分布式 PostgreSQL 集群(Citus),官方快速入门教程
多租户应用程序 在本教程中,我们将使用示例广告分析数据集来演示如何使用 Citus 来支持您的多租户应用程序. 注意 本教程假设您已经安装并运行了 Citus. 如果您没有运行 Citus,则可以使用 ...
- 用 edgeadm 一键安装边缘 K8s 集群和原生 K8s 集群
背景 目前,很多边缘计算容器开源项目在使用上均存在一个默认的前提:用户需要提前准备一个标准的或者特定工具搭建的 Kubernetes 集群,然后再通过特定工具或者其他方式在集群中部署相应组件来体验边缘 ...
- 分布式 PostgreSQL 集群(Citus)官方教程 - 迁移现有应用程序
将现有应用程序迁移到 Citus 有时需要调整 schema 和查询以获得最佳性能. Citus 扩展了 PostgreSQL 的分布式功能,但它不是扩展所有工作负载的直接替代品.高性能 Citus ...
- 分布式 PostgreSQL 集群(Citus)官方示例 - 时间序列数据
在时间序列工作负载中,应用程序(例如一些实时应用程序查询最近的信息,同时归档旧信息. https://docs.citusdata.com/en/v10.2/sharding/data_modelin ...
随机推荐
- 信不信由你!iPhone6屏幕宽度不一定是375px,iPhone6 Plus屏幕宽度不一定是414px
看到这个题目你可能不信,引出这个问题的缘由是几次项目中Chrome模拟器和iPhone6真机预览效果不一致. 为什么在Chrome Emulation模拟手机页面和真机预览效果不一致? 以前觉得不外乎 ...
- Python科学计算类库
Numpy是什么 Numpy是一个开源的Python科学计算库.使用Numpy,就可以很自然地使用数组和矩阵.Numpy包含很多实用的数学函数,涵盖线性代数运算.傅里叶变换和随机数生成等功能. 矩阵: ...
- Oracle update和select 关联
Oracle update和select 关联 目录 Oracle update和select 关联 1.介绍 2.解决方法 2.1.需求 2.2.错误演示 2.3.解决方法 1.介绍 本文主要向大家 ...
- 《剑指offer》面试题04. 二维数组中的查找
问题描述 在一个 n * m 的二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数. 示例: ...
- STC8H开发(五): SPI驱动nRF24L01无线模块
目录 STC8H开发(一): 在Keil5中配置和使用FwLib_STC8封装库(图文详解) STC8H开发(二): 在Linux VSCode中配置和使用FwLib_STC8封装库(图文详解) ST ...
- RT-Thread移植到stm32
一.移植RT-Thread准备 RT-Thread源码 源码版本和下载方式,可以参考RT-Thread移植入门学习. keil软件 STM32工程项目模板 因为每一厂家提供的库文件可能有一些区别,在移 ...
- Nginx搭建游戏
目录 一:Nginx搭建<小游戏> 1.上传<象棋游戏>代码 2.编辑配置文件(尾部必须要加 .conf<文件>) 3.测试配置文件是否正常 4.重启Nginx 5 ...
- Java多线程专题6: Queue和List
合集目录 Java多线程专题6: Queue和List CopyOnWriteArrayList 如何通过写时拷贝实现并发安全的 List? CopyOnWrite(COW), 是计算机程序设计领域中 ...
- Windows安装软件出现 2502 2503的错误?
1 输入这个命令 2 3 msiexec /package +"需要安装文件的路径" 4 5 //注意路径的问题 斜杆要保持一致. 6 //注意要有空格. 我的安装路径 7 msi ...
- npm 查看一个包的版本信息
有了npm 我们能够简单的一段代码就下载我们需要的包,但是包是不断更新的, 所以我们要关注包的版本信息: 现在,假设我们需要 jquery ,但是jquery现在有很多版本,我们如何通过npm查看呢? ...