GCP:如何从 VM 实例访问云存储桶

Via*_*mov 2 mount google-cloud-storage docker google-cloud-platform

我正在尝试在 GCP VM 实例中部署和运行 docker 映像。我需要它来访问某个 Cloud Storage Bucket(读取和写入)。

如何在 VM 内挂载存储桶?如何在我的 VM 中运行的 Docker 容器内安装存储桶?

我已经阅读谷歌云文档有一段时间了,但我仍然感到困惑。所有指南都展示了如何从本地机器访问存储桶,而不是如何将其挂载到 VM。 https://cloud.google.com/storage/docs/quickstart-gsutil

找到了一些关于Fuse 的东西,但是仅仅将单个存储桶安装到 VM 文件系统看起来过于复杂。

rob*_*emb 6

Google Cloud Storage 是一个对象存储 API,它不是一个文件系统。因此,它并不是真正设计为“安装”在 VM 中。它被设计为高度耐用且可扩展到非常大的对象(和大量对象)。

尽管您可以使用gcsfuse将其挂载为文件系统,但该方法有相当大的缺点。例如,即使是对普通文件系统进行简单的操作,在操作数量上也是很昂贵的。

同样,由于它是一个对象存储,因此有许多令人惊讶的行为。例如,您不能编辑对象——它们是不可变的。为了给人一种写入对象中间的错觉,实际上,只要调用close()fsync()发生,对象就会被删除并重新创建。

使用 GCS 的最佳方法是将您的应用程序设计为直接使用API(或S3 兼容 API)。这样,应用程序就能很好地理解语义,您可以针对它们进行优化以获得更好的性能并控制成本。因此,要从您的 docker 容器访问它,请确保您的容器可以通过 GCS 进行身份验证(通过实例上的凭据,或通过为具有访问存储桶的必要权限的服务帐户部署密钥),然后使用应用程序直接调用 API。

最后,如果您需要的实际上是一个文件系统,而不是专门的 GCS,如果您需要一个专为该特定用例设计的大型可挂载文件系统,Google Cloud 确实提供了至少 2 个其他选项:

  • Persistent Disk,这是您使用 VM 获得的基准文件系统,但您可以在单个 VM 上安装许多此类设备。但是,您不能一次将它们以读/写方式挂载到多个虚拟机——如果您需要挂载到多个虚拟机,则必须仅为它们挂载到的所有实例读取永久磁盘
  • Cloud Filestore是一种托管服务,可在永久性磁盘前提供 NFS 服务器。因此,文件系统可以以读/写方式挂载并在多个 VM 之间共享。然而,它us-central1比 PD贵得多(在撰写本文时,大约 0.20 美元/GB/月 vs 0.04 美元/GB/月),并且有最小大小要求 (1TB)。