使用 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 被设计为与存储类无关,并已被证明可以与其他存储类一起工作。

公众号:黑客下午茶

云原生 PostgreSQL 集群 - PGO:来自 Crunchy Data 的 Postgres Operator的更多相关文章

  1. 云原生 PostgreSQL 集群 - PGO:5分钟快速上手

    前提条件 请确保您的主机上安装了以下实用程序: kubectl git 安装 第 1 步:下载示例 首先,转到 GitHub 并 fork Postgres Operator 示例存储库: https ...

  2. [云原生]Kubernetes - 集群搭建(第2章)

    目录 一.前置知识点 二.kubeadm部署方式介绍 三.安装要求 四.最终目标 五.准备环境 六.环境初始化 6.1 设置系统主机名以及Hosts文件的相互解析 6.2 安装依赖文件(所有节点) 6 ...

  3. 云原生 PostgreSQL - CrunchyData PGO 教程:创建、连接、删除 Postgres 集群

    入门 作为安装的一部分,请确保您已完成以下操作: 分叉 Postgres Operator 示例存储库并将其克隆到您的主机. https://github.com/CrunchyData/postgr ...

  4. 多云混合云之多集群统一管理:基于阿里云ACK统一纳管多个不同Kubernetes集群

    目前阿里云云原生产品家族已经支持多集群管理功能,允许使用阿里云容器服务Kubernetes(简称ACK)控制台或kubectl命令接入.统一纳管其他公有云.客户IDC自建K8s集群,集中管理部署K8s ...

  5. 分布式 PostgreSQL 集群(Citus)官方示例 - 实时仪表盘

    Citus 提供对大型数据集的实时查询.我们在 Citus 常见的一项工作负载涉及为事件数据的实时仪表板提供支持. 例如,您可以是帮助其他企业监控其 HTTP 流量的云服务提供商.每次您的一个客户端收 ...

  6. 分布式 PostgreSQL 集群(Citus),官方快速入门教程

    多租户应用程序 在本教程中,我们将使用示例广告分析数据集来演示如何使用 Citus 来支持您的多租户应用程序. 注意 本教程假设您已经安装并运行了 Citus. 如果您没有运行 Citus,则可以使用 ...

  7. 用 edgeadm 一键安装边缘 K8s 集群和原生 K8s 集群

    背景 目前,很多边缘计算容器开源项目在使用上均存在一个默认的前提:用户需要提前准备一个标准的或者特定工具搭建的 Kubernetes 集群,然后再通过特定工具或者其他方式在集群中部署相应组件来体验边缘 ...

  8. 分布式 PostgreSQL 集群(Citus)官方教程 - 迁移现有应用程序

    将现有应用程序迁移到 Citus 有时需要调整 schema 和查询以获得最佳性能. Citus 扩展了 PostgreSQL 的分布式功能,但它不是扩展所有工作负载的直接替代品.高性能 Citus ...

  9. 分布式 PostgreSQL 集群(Citus)官方示例 - 时间序列数据

    在时间序列工作负载中,应用程序(例如一些实时应用程序查询最近的信息,同时归档旧信息. https://docs.citusdata.com/en/v10.2/sharding/data_modelin ...

随机推荐

  1. 移动端position:fixed 解决方案

    相信不少人做移动端项目的时候都会遇到position:fixed 的坑. 下面提供一个解决方法,不用引入任何其他的js库,纯css解决. 解决问题的关键就是:fixed元素内部必须嵌套一个positi ...

  2. 安装JavaJDK没有jre环境的解决办法 错误: C:\Program Files\Java\jdk-11.0.7\jre

    安装JDK11 发先没有jre解决办法 在安装目录下执行 bin\jlink.exe --module-path jmods --add-modules java.desktop --output j ...

  3. Python多环境管理神器(pipenv)

    pipenv 参考官网:https://pipenv.pypa.io/ pipenv 是一款比较新的包管理工具,其借鉴了 javascript 的 npm 和 PHP 的 composer 等理念,通 ...

  4. MCU软件最佳实践——独立按键

    1. 引子 在进行mcu驱动和应用开发时,经常会遇到独立按键驱动的开发,独立按键似乎是每一个嵌入式工程师的入门必修课.笔者翻阅了许多书籍(包括上大学时候用的书籍)同时查阅了网上许多网友的博客,无一例外 ...

  5. Nginx 反向代理解决跨域问题分析

    当你遇到跨域问题,不要立刻就选择复制去尝试.请详细看完这篇文章再处理 .我相信它能帮到你. 分析前准备: 前端网站地址:http://localhost:8080 服务端网址:http://local ...

  6. JDK原子操作类

    在Atomic包里一共提供了13个类,属于4种类型的原子更新方式,分别是原子更新基本类型.原子更新数组.原子更新引用和原子更新属性(字段).Atomic包里的类基本都是使用Unsafe实现的包装类. ...

  7. 【机器学习基础】无监督学习(1)——PCA

    前面对半监督学习部分作了简单的介绍,这里开始了解有关无监督学习的部分,无监督学习内容稍微较多,本节主要介绍无监督学习中的PCA降维的基本原理和实现. PCA 0.无监督学习简介 相较于有监督学习和半监 ...

  8. 聊一聊如何用C#轻松完成一个SAGA分布式事务

    背景 银行跨行转账业务是一个典型分布式事务场景,假设 A 需要跨行转账给 B,那么就涉及两个银行的数据,无法通过一个数据库的本地事务保证转账的 ACID ,只能够通过分布式事务来解决. 市面上使用比较 ...

  9. 定义函数返回 ax2 + bx + c = 0 的两个解

    # -*- coding: utf-8 -*- import math def quadratic(a, b, c): s = b*b - 4*a*c if a == 0: x = -c / b re ...

  10. Android开发-数据库代码编写

    数据库代码主要是查找 package com.example.Utils.database; import android.annotation.SuppressLint; import androi ...