在kubernetes中复制docker组合卷行为

在kubernetes中复制docker组合卷行为,kubernetes,docker-compose,docker-volume,Kubernetes,Docker Compose,Docker Volume,我正在将tomcat+postgres应用程序的docker compose文件迁移到kubernetes。我的测试环境是启用Kubernetes的Windows Dockers 如果我将emptyDir卷用于postgres,我可以成功地测试我的应用程序,但我无法持久保存postgres数据 volumes: - name: "pgdata-vol" emptyDir: {} 在MacOS上,我能够使用hostPath卷持久化postgres数据

我正在将tomcat+postgres应用程序的docker compose文件迁移到kubernetes。我的测试环境是启用Kubernetes的Windows Dockers

如果我将emptyDir卷用于postgres,我可以成功地测试我的应用程序,但我无法持久保存postgres数据

      volumes:
      - name: "pgdata-vol"
        emptyDir: {}
在MacOS上,我能够使用hostPath卷持久化postgres数据

  volumes:
  - name: "pgdata-vol"
    hostPath:
      path: /tmp/vols/pgdata
不幸的是,如果我在Windows上尝试相同的解决方案,我会遇到权限错误。这在前面的问题中讨论过。看

我不需要通过主机文件系统访问卷。我只是希望我的卷从一次运行持续到下一次运行。我可以在运行
docker compose时实现此行为。。。向上
docker compose。。。向下
使用以下卷定义

volumes:
  pgdata:
卷参考

    environment:
      - PGDATA=/pgdata
    volumes:
      - pgdata:/pgdata

是否有一个好的名称来描述这种类型的卷?有没有办法将这种类型的卷转换成库伯内特斯

空目录实际上是用于临时数据的。 如果您需要持久数据,您可以选择使用Docker中的主机路径,但如果您有多个节点,则pod将被安排用于不同的节点,数据将丢失

因此,更好的解决方案是使用持久卷。这必须由您的基础架构提供,因此特定于您的环境

详情请参阅:

对于Windows DOCKER的权限问题,您可能需要考虑使用MINKUBE替代。