问题概述
使用官方 postgresql 镜像,容器数据使用pvc申请pv进行持久化,但在重启pod后数据库数据丢失。
配置文件
1 | apiVersion: v1 |
验证重启数据丢失
容器挂载目录下写入数据
重启重启
登录容器查看文件
1
进入容器发现上述创建的文件已不存在
问题分析
- pod内查看挂载情况
1
2进入pod内,使用findmnt查看挂载发现数据库存储路径未在pv上,而是/dev/vda1磁盘挂载在/var/lib/postgresql/data目录。
这也就解释重启pod后该目录数据会被释放,导致数据丢失。
- 查看pg镜像构建
1
2docker history --no-trunc postgres:12.4
# 可以看出镜像的dockerfile中使用VOLUME挂载了/var/lib/postgresql/data
修改deployment中挂载路径
1 | 改mountPath为/var/lib/postgresql/data后,重启测试数据还在 |