通过Rancher部署bitnami PostgreSQL后无root及postgres用户权限问题
Bitnami PostgreSQL 11.6.0 镜像 Rancher 部署问题解决方案
1. shell提示"I have no name"问题
该问题是bitnami非root镜像的常见表现:镜像默认使用UID为1001的postgres用户运行进程,当你exec进入Pod时,当前用户UID为1001,但容器内/etc/passwd没有对应UID的用户映射记录,就会出现这个提示,不影响进程运行。
解决方法:
- 部署时在Pod的
securityContext配置段添加如下参数,确保用户映射正常:
securityContext: runAsUser: 1001 runAsNonRoot: true
- 进入Pod时指定用户UID即可正常显示用户名,命令为:
kubectl exec -it <你的Pod名称> -n <你的命名空间> --user 1001 -- /bin/bash
2. 无root权限无法切换postgres用户问题
bitnami PostgreSQL镜像出于安全设计,默认禁用root登录和sudo权限,不需要手动切换用户。
解决方法:
- 按上述方法指定UID 1001进入容器,就是postgres运行用户,可直接执行
psql等数据库操作命令。 - 若确实需要root权限操作,可临时在Pod的
securityContext中配置runAsUser: 0,启动后即为root用户,生产环境不建议该操作,会带来安全风险。
3. 外部PgAdmin无法访问数据库问题
按以下顺序排查即可:
- 确认Service配置:Rancher中需要创建NodePort/LoadBalancer类型的Service,端口映射到Pod的5432端口,确保端口配置没有冲突。
- 确认数据库访问规则:进入Pod查看
/bitnami/postgresql/conf/pg_hba.conf文件,默认配置只允许本地访问,需要添加host all all 0.0.0.0/0 md5规则允许外部IP连接,修改后重启Pod生效。 - 确认认证信息:PgAdmin中填写的用户名默认是
postgres,密码要和部署时设置的POSTGRESQL_PASSWORD环境变量值完全一致。 - 确认网络放行:检查K8s集群是否配置了禁止外部访问5432端口的网络策略,节点防火墙是否放通了Service对应的外部端口。
内容的提问来源于stack exchange,提问作者Jin Ma
相关产品推荐
相关产品推荐

