【问题标题】:How to manage file uploads with GKE?如何使用 GKE 管理文件上传?
【发布时间】:2016-09-21 01:29:48
【问题描述】:

感谢 Google Container Engine (GKE),我正在尝试使用 kubernetes 运行 api(基于 Symfony)。 此 API 还允许用户存储和下载文件,这些文件应该保存在某个地方。

我尝试使用 1 个副本运行它,并注意到在创建新容器期间服务出现停机时间。看起来至少需要 2 个副本才能避免停机。

考虑到这一点,我对这些选项很感兴趣:

  • 基于 Google Persistent Disk 的卷。这是否意味着我所有的副本都在同一个节点上? (ReadWriteOnce 访问模式)。如果是这样,如果节点发生故障,我的服务将不可用。
  • 基于 Flocker(后端持久磁盘)的卷。在 GKE 上安装它的推荐方式是什么?

还有其他有趣的选择吗?你会推荐什么?

【问题讨论】:

  • 为什么不将文件放入 Google Cloud Storage?因此,您可以运行任意数量的副本,而不必再关心本地存储。

标签: kubernetes symfony google-kubernetes-engine


【解决方案1】:

使用 GCS(如提到的 tex)可能是最简单的解决方案(并且在 GKE 集群中会非常快)。这里是an answer that may help

如果您对本地持久性存储有特殊需求,可以使用 Google 持久性磁盘,但它们只能以可写方式挂载在一个地方。

Petsets(目前为 alpha 版)将为分布式持久集群内存储提供更好的支持,因此如果 GCS 不适合您,您也可以查看它。

【讨论】:

  • 我尝试了 GCS 解决方案。我不得不修改 the adapter 以使其与较新的 google-api / guzzle 版本一起使用。事实上,我还有其他依赖项使用最新版本的 guzzle。我在本地测试时表现不佳,但我认为这是由于 Gaufrette 进行了多次 API 调用。使用此 GCS 选项,图像的 url 是否应该直接指向 GCS 服务器?还是应该先通过我的 API?
  • 关于Petsets,它会是“官方”推荐的处理这种需求的方式吗?
  • PetSets 提供了管理分布式持久存储的原语,但很可能会在 petSets 之上构建一些东西以提供更简单的存储抽象(例如Cassandra)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-07-18
  • 1970-01-01
  • 2019-08-27
  • 2012-04-23
相关资源
最近更新 更多