PostgreSQL服务部署
1、部署服务
部署服务,公共的操作参考mysql配置,这里不再重复。
名称:dmm-pg12 (自定义,该名称同时做为服务名)
Docker镜像:172.16.102.2:5000/library/bitnami/postgresql:12.10.0
容器端口:5432(这里通过NodePort方式暴露,方便开发时连接)
环境变量:
POSTGRESQL_POSTGRES_PASSWORD:xxxxxxxx(postgres 账号密码)
POSTGRESQL_DATABASE:imp_adb (创建一个
imp_adb
数据库,根据业务自定义)POSTGRESQL_USERNAME:imp (
imp_adb
数据库的用户)POSTGRESQL_PASSWORD:xxxxxx (
imp_adb
数据库的用户密码)
配置PVC存储卷,根据业务自定义容量,请匆设置过大
容器路径:
/bitnami/postgresql
子路径:postgresql
(先这样配置,启动会失败,子路径是用于跟初始化容器对应)
容器启动错误:mkdir: cannot create directory ‘/bitnami/postgresql/data’: Permission denied
,因为当前容器没有权限将data
的目录挂载到存储上,需要通过初始化容器,先进行授权。
2、添加初始化容器
初始化容器的目的是先创建一个目录,然后将权限提升,再启动pg数据库容器时才有权限将数据写入目录。
通过应用右侧的菜单选择添加Sidecar
名称:pd-data-directory-init (这个名称随意)
Sidecar类型:Init容器
Docker镜像:172.16.102.2:5000/library/busybox:1.36.0 (选择busybox是因为该容器很小,只有2M多)
- 点击
添加映射
,显示高级选项
(命令在高级选项中)
添加映射,在创建的PVC添加
容器路径:/bitnami (这个也随意,保持跟镜像中的路径目录一致,这个目录是在
busybox
容器创建,我们目的是为了创建一个PG的数据目录,把这个目录写到对象存储中)命令:
sh -c 'mkdir -p /bitnami/postgresql && chmod 777 /bitnami/postgresql'
这个命令的目的是在容器路径/bitnami
(这个需要一致)下创建一个postgresql
目录,同时把该目录权限提升到最大(该权限可自行调整,只要容器有权限写入数据即可)
3、测试连接
配置完成后,点击启动
,启动成功后,通过NodePort暴露的端口进行访问.
启动后,显示出来的端口,如:20683
则为pg映射出来的端口,测试集群通过:172.16.103.10 进行服务器连接