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

时间:2019-11-09 20:33:57

标签: docker google-cloud-platform google-cloud-storage mount

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

如何在虚拟机内部安装存储桶?如何在我的VM中运行的Docker容器中装入存储桶?

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

发现了关于Fuse的一些信息,但是仅将单个存储桶安装到VM文件系统看起来就太复杂了。

2 个答案:

答案 0 :(得分:1)

如果没有第三方软件(例如FUSE),则无法将Google Cloud Storage存储桶安装在Google Compute实例或容器中。 Linux和Windows都没有内置的Cloud Storage驱动程序。

答案 1 :(得分:1)

Google Cloud Storage是对象存储API,不是文件系统。结果,它并不是真正设计为“挂载”在VM中。它的设计具有很高的耐用性,并且可以扩展到非常大的对象(和大量对象)。

尽管您可以使用gcsfuse将其挂载为文件系统,但是该方法有很多明显的缺点。例如,对于普通文件系统而言,执行even simple operations的操作可能会非常昂贵。

同样,有许多surprising behaviors是由于它是对象存储而导致的。例如,您不能编辑对象-它们是不可变的。为了给写到对象中间的错觉,实际上是在每次调用close()fsync()时删除并重新创建对象。

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

最后,如果您实际需要的是文件系统,而不是GCS,那么如果您需要一个针对该特定用例设计的大型可挂载文件系统,则Google Cloud会提供至少两种其他选择:

  • Persistent Disk,这是您通过VM获得的基准文件系统,但是您可以将许多设备安装在单个VM上。但是,您无法一次将它们以一次读取/写入的方式装载到多个VM,如果您需要将它们装载到多个VM,则the persistent disk must be read only用于装载它们的所有实例。
  • Cloud Filestore是一项托管服务,在永久性磁盘之前提供NFS服务器。因此,文件系统可以被读取/写入并在许多VM之间共享。但是,它比PD昂贵得多(在撰写本文时,us-central1中,每GB /月约为0.20美元/ GB,而$ 0.04 / GB /月),并且具有最小大小要求(1TB)。