尝试用我的k8s+ceph的集群跑postgres的时候,每次启动容器日志显示“/var/lib/postgresql/data exists but is not empty”
大概意思是,容器挂载卷的目录已经有东西了,数据库没法初始化。
网上查资料看到,大概意思是如果你用的是docker的插件创建的volume,他会自动给你建一个“lost+found”目录。
解决方法是,postgre容器运行你通过环境变量传进去数据存储的目录,所以你只要在挂载路径下面再深一个目录来挂载数据即可。
apiVersion: apps/v1
kind: Deployment
spec:
template:
spec:
containers:
- name: postgres
image: postgres:9.5
env:
- name: POSTGRES_USER
value: postgres
- name: POSTGRES_PASSWORD
value: "xxxxxxxx"
- name: POSTGRES_DB
value: "xxxxxxxx"
- name: PGDATA
value: /var/lib/postgresql/data/pgdata
ports:
- containerPort: 5432
volumeMounts:
- name: postgres-data
mountPath: "/var/lib/postgresql/data"
volumes:
- name: postgres-data
persistentVolumeClaim:
claimName: postgres-data
通过环境变量PGDATA来指定数据存储位置。