Postgres Operator 在由 Patroni 提供支持的 Kubernetes (K8s) 上提供易于运行的高可用性 PostgreSQL 集群。它仅通过 Postgres 清单 (CRD) 进行配置,以轻松集成到自动化 CI/CD 管道中,而无需直接访问 Kubernetes API,从而促进基础设施即代码(infrastructure as code)而不是手动操作。

Operator 功能

  • Postgres 集群变化的滚动更新,包括快速的小版本更新
  • 无需重新启动 pod 即可调整实时卷大小(AWS EBSPVC
  • 使用 PGBouncer 进行数据库连接池
  • 支持 PG13 的快速升级。支持所有集群全局升级
  • 恢复和克隆 Postgres 集群(包括主要版本升级)
  • 此外,可以配置到 S3 存储桶的逻辑备份
  • 来自 S3 WAL 存档的备用集群
  • 可针对非云环境进行配置
  • K8s 上的基本凭证和用户管理,简化应用程序部署
  • 支持自定义 TLS 证书
  • 创建和编辑 Postgres 集群清单的 UI
  • Amazon AWSGoogle CloudOpenShiftKind 本地运行良好
  • 支持 AWS EBS gp2gp3 迁移,支持 iops 和吞吐量配置

PostgreSQL 功能

Postgres OperatorZalando 开发并已在生产中使用了三年多。

使用 Spilo 12 或更旧的镜像

如果您已经在旧版本中使用带有 Spilo 12 Docker 镜像的 Postgres operator,则需要注意备份路径的更改。我们将主版本引入备份路径,以平滑现在支持的主版本升级

新的 operator 配置可以设置兼容性标志 enable_spilo_wal_path_compat 以使 Spilo 在当前路径中查找 wal 段,但也可以在旧格式路径中查找。 这是以潜在的性能成本为代价的,应该在几天后禁用。

最新的 Spilo 镜像是:registry.opensource.zalan.do/acid/spilo-14:2.1-p4

最旧的 Spilo 镜像是:registry.opensource.zalan.do/acid/spilo-12:1.6-p5

入门

为了快速获得第一印象,请按照入门教程的说明进行操作。

支持的 Postgres 和应用程序设置

概念

Postgres operator 在 Kubernetes (K8s) 上管理 PostgreSQL 集群:

  1. operator 监视 PostgreSQL 集群清单的添加、更新和删除,并相应地更改正在运行的集群。 例如,当用户提交新清单时,operator 会获取该清单并生成一个新的 Postgres 集群以及所有必要的实体,例如 K8s StatefulSetsPostgres 角色。 有关清单可能包含的设置,请参阅此 Postgres 集群清单

  2. operator 还监视其自身配置的更新,并在必要时更改正在运行的 Postgres 集群。例如,如果 pod 中的 Docker 镜像发生变化,则 operator 执行滚动更新,这意味着它会与新的 Docker 镜像一一重新生成每个托管 StatefulSetpod
  3. 最后,operator 定期将每个 Postgres 集群的实际状态与集群清单中定义的所需状态同步。
  4. operator 的目标是解放双手,因为配置只能通过清单进行。 这可以轻松集成到自动化部署管道中,而无需直接访问 K8s

作用域

Postgres Operatorscope 是提供、修改配置和清理使用 PatroniPostgres 集群,基本上是为了在 K8s 上轻松方便地运行基于 Patroni 的集群。配置和修改包括一侧的 K8s 资源,但也包括集群启动并运行后的数据库和角色配置。我们尽量把工作留给 K8sPatroni,尤其是集群引导和高可用性。不过,operator 需要参与一些总体编排,比如滚动更新以改善用户体验。

在当前状态下,监控或调整 Postgres 不在 operator 的作用域内。但是,通过全局可配置的 sidecar,我们提供了足够的灵活性来补充其他工具,如 ZMONPrometheus 或更多 Postgres 特定选项。

所涉实体概述

这是一张图,它总结了 operator 在提交新的 Postgres cluster CRD 时将创建的内容:

如果没有对单个集群 pod 内部的概述,这张图是不完整的,所以让我们放大一下:

这两张图应该可以帮助您了解 operator 提供的功能类型的基础知识。

状态

该项目目前正在积极开发中。然而,Zalando 已经在内部使用它,以便在 K8s 上运行大量 Postgres 集群,用于 staging 环境和越来越多的 production 集群。在这种环境中,operator 被部署到多个 K8s 集群中,用户通过我们的 CI/CD 基础设施部署清单或依靠精简的用户界面来创建清单。

请将发现的任何问题报告给 https://github.com/zalando/postgres-operator/issues

相关视频

相关文章

更多

基础设施即代码(IAC),Zalando Postgres Operator 简介的更多相关文章

  1. 基础设施即代码(IAC),Zalando Postgres Operator UI 入门

    Postgres Operator UI 提供了一个图形界面,方便用户体验数据库即服务.一旦 database 和/或 Kubernetes (K8s) 管理员设置了 operator,其他团队就很容 ...

  2. Zalando Postgres Operator 快速上手

    本指南旨在让您快速了解在本地 Kubernetes 环境中使用 Postgres Operator. 前提条件 由于 Postgres Operator 是为 Kubernetes (K8s) 框架设 ...

  3. 云原生时代,为什么基础设施即代码(IaC)是开发者体验的核心?

    作者 | 林俊(万念) 来源 |尔达 Erda 公众号 从一个小故事开始 你是一个高级开发工程师. 某天,你自信地写好了自动煮咖啡功能的代码,并在本地调试通过.代码合并入主干分支后,你准备把服务发布到 ...

  4. 云原生之旅 - 4)基础设施即代码 使用 Terraform 创建 Kubernetes

    前言 上一篇文章我们已经简单的入门Terraform, 本篇介绍如何使用Terraform在GCP和AWS 创建Kubernetes 资源. Kubernetes 在云原生时代的重要性不言而喻,等于这 ...

  5. Developer Friendly | 基础设施即代码的事实标准Terraform已支持京东云!

    Developer Friendly | 基础设施即代码的事实标准Terraform已支持京东云! Chef.Puppet.Ansible.SaltStack 都可以称为配置管理工具,这些工具的主要目 ...

  6. AWS 基础设施即代码(五)

    基础设施即代码 概述 手动配置的挑战:可能因为人为错误导致缺乏可靠性,环境无法完全再现,同时需要额外文档 基础设施即代码,是软件开发中用于创建可重用.可维护.可扩展及可测试基础设施的技术.实践和工具, ...

  7. 云原生 PostgreSQL 集群 - PGO:来自 Crunchy Data 的 Postgres Operator

    使用 PGO 在 Kubernetes 上运行 Cloud Native PostgreSQL:来自 Crunchy Data 的 Postgres Operator! Cloud Native Po ...

  8. 《第一行代码》之——1.Android简介

    Android简介 Android系统架构 (图片源自维基百科) Android大致分为四层架构,五块区域. Linux内核层 Android系统基于Linux2.6,这一层为Android设备的各种 ...

  9. alpha阶段 代码结构及技术难点简介

    我们的产品是安卓端app,所以目前主要就是用Android Studio来进行代码开发. Android Studio的项目的结构还是比较清晰的,如下图,主要就是java文件夹内的代码部分(.java ...

随机推荐

  1. Net中异步

    同步和异步1.同步是指只启动一个线程2.异步是指同时启动多个线程3.同步方法会卡界面,异步方法不会卡界面 原因:异步方法启动了子线程执行任务,主线程得到释放4.同步方法会慢.异步方法会快 原因:异步启 ...

  2. 查看Linux系统、Apche、Nginx、 MySQL 、 PHP 版本

    1. 查看Linux版本: uname -a: more /etc/issue; cat /proc/version; 2. 查看Mysql版本: 在终端下执行 mysql -V #V必须大写 在he ...

  3. jinja2.exceptions.TemplateNotFound 报错处理

    一.检查模板文件夹是否正确. 遇到这个问题,首先需要检查你的模板文件夹命名是否规范,Flask默认会在工程下寻找templates文件夹,这个是默认配置,不能写成template或者其他名字.当然,如 ...

  4. 安装docker-compose 报错解决

  5. springboot 设定访问项目的根路径

    springboot的配置文件application.yml: spring.mvc.view.prefix : / spring.mvc.view.suffix : .html server: po ...

  6. vue Cannot read property ‘tapPromise‘ of undefined

    https://blog.csdn.net/qq379682421/article/details/111574290 https://github.com/SimenB/add-asset-html ...

  7. 使用Spring框架的好处是什么?

    轻量:Spring 是轻量的,基本的版本大约2MB. 控制反转:Spring通过控制反转实现了松散耦合,对象们给出它们的依赖,而不是创建或查找依赖的对象们. 面向切面的编程(AOP):Spring支持 ...

  8. Oracle入门基础(三)一一单行函数

    SQL> --字符函数 SQL> select lower('Hello World') 转小写,upper('Hello World') 转大写,initcap('hello world ...

  9. 用 Java 写一个单例类?

    饿汉式单例 public class Singleton { private Singleton(){} private static Singleton instance = new Singlet ...

  10. Spring Cloud第一次请求报错问题

    一.原因 我们在使用Spring Cloud的Ribbon或Feign来实现服务调用的时候,第一次请求经常会经常发生超时报错,而之后的调用就没有问题了.造成第一次服务调用出现失败的原因主要是Ribbo ...