创建实例
目录
介绍
此功能允许用户在 Kubernetes 集群内创建和管理 PostgreSQL 数据库实例。用户可以通过配置以下内容,快速部署满足需求的数据库实例:
前提条件
在创建 PostgreSQL 实例之前,请确保:
- 已配置合适的存储类。
- Postgres Operator 已正确安装并运行。
- 您拥有创建资源的必要权限。
版本支持
当前支持 PostgreSQL 版本 11、12、14,推荐使用最新的稳定版本。
架构选择
Postgres Operator 支持以下架构:
- 单节点:适用于开发和测试环境
- 主从复制:推荐用于生产环境,具备:
操作步骤
创建单节点实例
# 示例最小 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
预期输出:
输出字段说明:
NOTE
- 生产环境建议使用主从架构
- 部署前请确认存储类支持动态供应
- 配置合适的资源限制
- 对关键数据实施定期备份操作
WARNING
- 资源限制设置不当可能导致性能问题或 Pod 被驱逐
- 未备份时,故障可能导致数据丢失