Files
k3s/010-中间件/002-postgresql/postgresql-deployment.yaml
2026-02-05 00:11:05 +08:00

168 lines
3.6 KiB
YAML

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: postgresql-pvc
namespace: postgresql
spec:
accessModes:
- ReadWriteOnce
storageClassName: longhorn
resources:
requests:
storage: 10Gi
---
apiVersion: v1
kind: Secret
metadata:
name: postgresql-secret
namespace: postgresql
type: Opaque
stringData:
POSTGRES_PASSWORD: "postgres123"
POSTGRES_USER: "postgres"
POSTGRES_DB: "postgres"
---
apiVersion: v1
kind: ConfigMap
metadata:
name: postgresql-config
namespace: postgresql
data:
postgresql.conf: |
# 连接设置
listen_addresses = '*'
max_connections = 100
# 内存设置
shared_buffers = 256MB
effective_cache_size = 1GB
maintenance_work_mem = 64MB
work_mem = 4MB
# WAL 设置
wal_level = replica
max_wal_size = 1GB
min_wal_size = 80MB
# 日志设置
logging_collector = on
log_directory = 'log'
log_filename = 'postgresql-%Y-%m-%d_%H%M%S.log'
log_statement = 'all'
log_duration = on
# 性能优化
random_page_cost = 1.1
effective_io_concurrency = 200
pg_hba.conf: |
# TYPE DATABASE USER ADDRESS METHOD
local all all trust
host all all 0.0.0.0/0 md5
host all all ::0/0 md5
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: postgresql
namespace: postgresql
spec:
serviceName: postgresql
replicas: 1
selector:
matchLabels:
app: postgresql
template:
metadata:
labels:
app: postgresql
spec:
containers:
- name: postgresql
image: postgres:16-alpine
ports:
- containerPort: 5432
name: postgresql
env:
- name: POSTGRES_USER
valueFrom:
secretKeyRef:
name: postgresql-secret
key: POSTGRES_USER
- name: POSTGRES_PASSWORD
valueFrom:
secretKeyRef:
name: postgresql-secret
key: POSTGRES_PASSWORD
- name: POSTGRES_DB
valueFrom:
secretKeyRef:
name: postgresql-secret
key: POSTGRES_DB
- name: PGDATA
value: /var/lib/postgresql/data/pgdata
volumeMounts:
- name: data
mountPath: /var/lib/postgresql/data
- name: config
mountPath: /etc/postgresql
resources:
requests:
memory: "512Mi"
cpu: "250m"
limits:
memory: "2Gi"
cpu: "1000m"
livenessProbe:
exec:
command:
- pg_isready
- -U
- postgres
initialDelaySeconds: 30
periodSeconds: 10
readinessProbe:
exec:
command:
- pg_isready
- -U
- postgres
initialDelaySeconds: 5
periodSeconds: 5
volumes:
- name: data
persistentVolumeClaim:
claimName: postgresql-pvc
- name: config
configMap:
name: postgresql-config
---
apiVersion: v1
kind: Service
metadata:
name: postgresql
namespace: postgresql
spec:
selector:
app: postgresql
ports:
- port: 5432
targetPort: 5432
protocol: TCP
type: ClusterIP
clusterIP: None
---
apiVersion: v1
kind: Service
metadata:
name: postgresql-service
namespace: postgresql
spec:
selector:
app: postgresql
ports:
- port: 5432
targetPort: 5432
protocol: TCP
type: ClusterIP