在Kubernetes中,来自ConfigMap的环境变量不会更改PostgreSql容器中的max_connections属性。如何通过Kubernetes中的环境变量更改Postgres max_connections配置?
我尝试了以下参数来配置Postgres。
问题是,我可以使用DB,USER和PASSWORD参数并按预期设置值。但是我需要更改max_connections配置。我进行了相关研究,看来PGOPTIONS是发送配置更改的正确选择。即使我尝试了PGOPTIONS和其他变体,也对max_connections值没有影响。我正在连接postgresql,并且正在执行SHOW MAX_CONNECTIONS查询,即使我在环境配置值中指定了1000,它也会显示100。
我在digitalocean中使用Kubernetes 1.14。
apiVersion: v1
kind: ConfigMap
metadata:
name: postgres-config-demo
labels:
app: postgres
data:
POSTGRES_DB: demopostgresdb
POSTGRES_USER: demopostgresadmin
POSTGRES_PASSWORD: demopostgrespwd
PGOPTIONS: "-c max_connections=1000 -c shared_buffers=1024MB"
POSTGRES_OPTIONS: "-c max_connections=1000 -c shared_buffers=1024MB"
PG_OPTIONS: "-c max_connections=1000 -c shared_buffers=1024MB"
MAX_CONNECTIONS: "1000"
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: pgdemo
spec:
serviceName: "postgres"
replicas: 2
selector:
matchLabels:
app: postgres
template:
metadata:
labels:
app: postgres
spec:
containers:
- name: postgres
image: postgres:latest
envFrom:
- configMapRef:
name: postgres-config-demo
env:
- name: PGOPTIONS
value: "-c max_connections=1000 -c shared_buffers=1024MB"
- name: "MAX_CONNECTIONS"
value: "1000"
ports:
- containerPort: 5432
name: postgredb
volumeMounts:
- name: postgredb
mountPath: /var/lib/postgresql/data
subPath: postgres
volumeClaimTemplates:
- metadata:
name: postgredb
spec:
accessModes: ["ReadWriteOnce"]
storageClassName: do-block-storage
resources:
requests:
storage: 3Gi
我希望将max_connections的值设置为1000。 但它看起来像是默认值,如100。
任何日志中都没有错误。
答案 0 :(得分:4)
PostgreSQL docker映像只能支持多个环境参数,POSTGRES_PASSWORD
,POSTGRES_USER
,POSTGRES_DB
,POSTGRES_INITDB_ARGS
,POSTGRES_INITDB_WALDIR
,POSTGRES_HOST_AUTH_METHOD
,{ {1}}。
如果要修改某些数据库配置参数,可以在kubernetes中使用PGDATA
。
部署Yaml文件部分
args
答案 1 :(得分:1)
您需要扩展基本图像(postgres:latest)。使用自定义更改覆盖默认配置,然后启动postgres。
答案 2 :(得分:1)
当通过PGOPTIONS的环境变量指定max_connections时,发生以下错误。因此,在args中而不是PGOPTIONS的环境变量中指定它是正确的。
2020-05-27 06:51:55.327 UTC [62] FATAL: parameter "max_connections" cannot be changed without restarting the server
psql: FATAL: parameter "max_connections" cannot be changed without restarting the server
containers:
- name: postgres
image: postgres:latest
args: ["-c", "max_connections=500"]
答案 3 :(得分:0)
Postgres docker镜像不允许通过环境变量设置max_connections
属性。您必须使用postgresql.conf
文件来设置此类配置。
使用自定义postgresql.conf
文件创建ConfigMap。然后将ConfigMap挂载到/etc/postgresql/
目录中。
您将找到一个示例postgresql.conf
文件here。