【发布时间】:2020-03-15 09:44:06
【问题描述】:
尝试在 kubernetes 中部署 postgres (https://github.com/paunin/PostDock/tree/master/k8s/example2-single-statefulset),
- 使用 pgpool-II(2 个副本)以及 1 个 postgres-master pod 和 2 个 slave pod。
kubectl get pods -n postgres
NAME READY STATUS RESTARTS AGE
psql-db-pgpool-8****c-7**k 1/1 Running 0 35d
psql-db-pgpool-8****c-m**5 1/1 Running 0 35d
psql-db-node-0 1/1 Running 0 35d
psql-db-node-1 1/1 Running 0 35d
psql-db-node-2 1/1 Running 0 20h
- 使用 postgres 用户从主 postgres 数据库创建了一个用户“test”。
- 尝试从 pod (node-0) 内部连接时,身份验证成功,用户为“test”。
root@postgres-db-node-0:/# psql -h localhost postgres -U test
psql (11.4 (Debian 11.4-1.pgdg90+1))
Type "help" for help.
postgres=> \l
- 尝试连接 kubernetes 集群的 NodePort IP 和 NodePort 时,新用户“test”身份验证失败,pool_passwd 文件不包含“test”条目
psql -h NODE_IP -U test -d postgres --port NODE_PORT
psql: FATAL: md5 authentication failed
DETAIL: pool_passwd file does not contain an entry for "test"
- 登录pgpool-II pod一探究竟
root@psql-db-pgpool-8****c-7**k:/# cat /usr/local/etc/pool_passwd
user1:md5****422f
replica_user:md5****3
在数据库中创建的新用户“test”不会反映在 pgpool 中。它是否以这种方式工作,每次创建新用户时创建和更新 pgpool?还是我错过了此用户更新的某些内容。
【问题讨论】:
标签: postgresql authentication kubernetes database-replication pgpool