创建实例

功能简介

本功能用于在 Kubernetes 集群中创建和管理 PostgreSQL 数据库实例。用户可以通过配置以下内容快速部署符合需求的数据库实例:

  • 资源规格
  • 账户信息
  • 存储需求

前提条件

在创建 PostgreSQL 实例之前,请确保:

  1. 已配置合适的存储类
  2. Postgres Operator 已正确安装并运行
  3. 具有创建资源的权限

版本支持

当前支持 PostgreSQL 11,12,14 版本,建议使用最新稳定版本。

架构选择

Postgres Operator 支持以下架构:

  • 单节点:适用于开发测试环境
  • 主从复制:生产环境推荐架构,支持:
    • 自动故障转移
    • 高可用性
    • 数据冗余

操作步骤

CLI
Web Console

创建单节点实例

# 最小化 HA 集群配置示例
cat << EOF | kubectl create -f -
apiVersion: acid.zalan.do/v1
kind: postgresql  # PostgreSQL 集群的自定义资源定义
metadata:
  name: pg-single
  namespace: c1-midautons
spec:
  ipFamilyPrefer: ""
  teamId: ACID
  enableExporter: true
  enablePgpool2: false
  spiloPrivileged: false
  spiloRunAsGroup: 103
  spiloRunAsUser: 101
  spiloAllowPrivilegeEscalation: false
  enableReadinessProbe: true
  postgresql:
    parameters:
      log_directory: /var/log/pg_log
    version: "14"
  numberOfInstances: 1
  resources:
    requests:
      cpu: "1"
      memory: 2Gi
    limits:
      cpu: "1"
      memory: 2Gi
  volume:
    size: 5Gi
    storageClass: c1-topolvmsc
EOF

创建高可用集群

cat << EOF | kubectl -n $NAMESPACE create -f -
apiVersion: acid.zalan.do/v1
kind: postgresql
metadata:
  name: pg-ha
  namespace: default
spec:
  ipFamilyPrefer: ""
  teamId: ACID
  enableExporter: true
  enablePgpool2: false
  spiloPrivileged: false
  spiloRunAsGroup: 103
  spiloRunAsUser: 101
  spiloAllowPrivilegeEscalation: false
  enableReadinessProbe: true
  postgresql:
    parameters:
      log_directory: /var/log/pg_log
    version: "14"
  numberOfInstances: 3
  resources:
    requests:
      cpu: "1"
      memory: 2Gi
    limits:
      cpu: "1"
      memory: 2Gi
  volume:
    size: 50Gi
    storageClass: default
  patroni:
    ttl: 30
    loop_wait: 10
    retry_timeout: 10
EOF

创建后可通过以下命令查看实例状态:

kubectl -n $NAMESPACE get postgresql

预期输出:

NAME                            AGE
pg-ha                           21h

输出字段说明:

字段说明
NAME实例名称
AGE创建时间

注意

  1. 生产环境建议使用主从复制架构
  2. 部署前请确保存储类支持动态供给
  3. 合理配置资源限制
  4. 对重要数据实施定期备份

警告

  • 不合理的资源限制可能导致性能问题或 Pod 被驱逐
  • 没有备份的情况下,故障时可能导致数据丢失