【问题标题】:Replicate docker-compose volume behavior in kubernetes在 Kubernetes 中复制 docker-compose 卷行为
【发布时间】:2019-12-14 04:20:06
【问题描述】:

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

如果我为 postgres 使用 emptyDir 卷,我可以成功测试我的应用程序,但我无法持久化 postgres 数据。

      volumes:
      - name: "pgdata-vol"
        emptyDir: {}

在 MacOS 上,我可以使用 hostPath 卷保存 postgres 数据。

  volumes:
  - name: "pgdata-vol"
    hostPath:
      path: /tmp/vols/pgdata

不幸的是,如果我在 Windows 上尝试相同的解决方案,我会遇到权限错误。这在上一个问题中讨论过。见Kubernetes (in Docker for Windows) Volume Configuration for Postgres

我不需要通过主机文件系统访问我的卷。我只是希望我的音量从一次运行到下一次运行。在使用以下卷定义运行 docker-compose ... updocker-compose ... down 时,我能够实现此行为。

volumes:
  pgdata:

卷参考

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

有没有一个好名字可以用来描述这种类型的卷?有没有办法将这种类型的卷翻译成 kubernetes?

【问题讨论】:

    标签: kubernetes docker-compose docker-volume


    【解决方案1】:

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

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

    详情请见:https://kubernetes.io/docs/concepts/storage/volumes/

    对于 Docker for Windows 的权限问题,您可能需要考虑使用 minikube。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-12
      • 1970-01-01
      • 1970-01-01
      • 2021-03-09
      • 1970-01-01
      相关资源
      最近更新 更多