[英]How to update max_connections in postgresql deployed on Kubernetes pod
[英]How to change Postgresql max_connections config via Kubernetes statefulset environment variable?
在 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 鏡像只能支持幾個 env 參數, POSTGRES_PASSWORD
, POSTGRES_USER
, POSTGRES_DB
, POSTGRES_INITDB_ARGS
, POSTGRES_INITDB_WALDIR
, POSTGRES_HOST_AUTH_METHOD
, PGDATA
。
如果要修改一些數據庫配置參數,可以在 kubernetes 中使用args
。
部署yaml文件分數
containers:
- args:
- -c
- max_connections=1000
- -c
- shared_buffers=1024MB
envFrom:
- configMapRef:
name: postgres-config
image: postgres
imagePullPolicy: IfNotPresent
name: postgres
當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"]
您需要擴展基本圖像( postgres:latest )。 使用自定義更改覆蓋默認配置,然后啟動 postgres。
Postgres docker 鏡像不允許通過環境變量設置max_connections
屬性。 您必須使用postgresql.conf
文件來設置此類配置。
使用自定義postgresql.conf
文件創建一個 ConfigMap。 然后將 ConfigMap 掛載到/etc/postgresql/
目錄中。
您將在此處找到示例postgresql.conf
文件。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.