介绍

github地址:charts/bitnami/postgresql at main · bitnami/charts

artifactHub地址:

HA模式比单节点模式多了Pgpool(接入流量)、repmgr(自动切换主从状态)、witness(防止脑裂)等组件,适合用在生产环境上。

下载

helm repo add bitnami https://charts.bitnami.com/bitnami
helm repo update bitnami
helm pull bitnami/postgresql --version 16.7.26 # 这个chart是用来安装单节点pg
helm pull bitnami/postgresql-ha --version 16.3.1 # 这个chart是用来安装HA模式高可用pg

提示

  • bitnami/postgresql如果网络问题pull不下来就直接从bitnami github上clone下来源码,里面就有mysql的helm chart。
git clone https://github.com/bitnami/charts.git
  • 注意需要把charts/bitnami/common目录放到postgresql/charts/目录里面才能组成完整的helm chart,因为common是子chart需要安装。

配置-HA模式

生产环境注意

  • 生产环境中不推荐使用nfs,由于其单点无高可用、性能也有问题。如果k8s中没有配置ceph等分布式储,那就不推荐把数据库等需要持久化数据的服务部署到k8s中。
  • 这里学习环境可以使用nfs。
global: 
  defaultStorageClass: "sc-nfs" 
  postgresql: 
    password: "hangx" 
    repmgrPassword: "hangx" 
  pgpool: # pgpool可以将查询分发到多个PostgreSQL节点,实现读写分离 
    adminUsername: "" 
    adminPassword: "hangx" 
witness: # 用于提供额外的投票机制,防止脑裂现象。奇数个节点非必须,偶数个节点必须要装。
  create: true

安装

kubectl create ns postgresql
helm upgrade -i postgresql-ha -n postgresql -f values.dev.yaml .

使用

kubectl exec -ti pg-postgresql-ha-postgresql-0 -n postgresql -- bash
psql -h pg-postgresql-ha-pgpool -U postgres
# 创建数据库和表
CREATE DATABASE mydatabase;

\c mydatabase

CREATE TABLE employees ( 
     id SERIAL PRIMARY KEY, 
     name VARCHAR(100), 
     age INT, 
     department VARCHAR(50) 
); 

\d employees

# 查看集群状态
/opt/bitnami/scripts/postgresql-repmgr/entrypoint.sh repmgr -f /opt/bitnami/repmgr/conf/repmgr.conf cluster show