Press "Enter" to skip to content

postgres 存储卷挂载问题

尝试用我的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来指定数据存储位置。

参考资料:https://github.com/docker-library/postgres/issues/263

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注