postgresql - 如何通过 Kubernetes statefulset 环境变量更改 Postgresql max_connections 配置?
问题描述
在 Kubernetes 中,来自 ConfigMap 的环境变量不会更改 PostgreSql pod 中的 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。
任何日志中都没有错误。
解决方案
Postgresql docker image 只能支持几个 env 参数,POSTGRES_PASSWORD
, POSTGRES_USER
, POSTGRES_DB
, POSTGRES_INITDB_ARGS
, POSTGRES_INITDB_WALDIR
, POSTGRES_HOST_AUTH_METHOD
, PGDATA
.
如果要修改一些数据库配置参数,可以args
在kubernetes中使用。
部署 yaml 文件分数
containers:
- args:
- -c
- max_connections=1000
- -c
- shared_buffers=1024MB
envFrom:
- configMapRef:
name: postgres-config
image: postgres
imagePullPolicy: IfNotPresent
name: postgres
推荐阅读
- python - 自定义用户模型表没有名为 is_staff 的列
- php - 输入类型编号作为下拉列表
- javascript - 异步显示一个 POST
- javascript - 拍卖模式 mongodb
- mongodb - 嵌套对象上的 MongoDB 唯一索引
- javascript - 使用数组作为数据而不是 Api 加载微调器的自动完成
- python - 每当在不和谐机器人中调用特定命令时都找不到命令
- python - 在烧瓶中重定向
- angular - Angular mat-tab-nav-bar how can I change the color of the text?
- ruby - 我是否在逻辑上重复了 Ruby 中的相同代码块?