使用 NBD、9P、CIFS/Samba 和 Ceph 网络文件系统

本页面介绍了如何将 NDB、9P、CIFS/Samba 和 Ceph 网络文件系统与 Cloud Run 搭配使用。

如果您在 Cloud Run 上使用 NFS、Filestore 或 Cloud Storage FUSE,请参阅以下页面:

您可以使用 NBD、9P、CIFS/Samba 和 Ceph 网络文件系统在 Cloud Run 中的多个容器和服务之间共享和保留数据。此功能仅在您使用 Cloud Run 第二代执行环境时可用。

如果您需要使用这些文件系统在 Cloud Run 服务中读取和写入文件,您可以使用多种方法:

  • 如果您不需要在实例的生命周期结束后继续保留数据保留,可以使用内置内存文件系统
  • 如果您需要在实例生命周期结束后保留数据,并且想要使用标准文件系统语义,请将 NDB、9P、CIFS/Samba 和 Ceph 网络文件系统与 Cloud Run 搭配使用。
  • 如果您需要在实例生命周期结束后继续保留数据,并且不需要标准文件系统语义,最简单的方法是使用 Cloud Storage 客户端库。如果您需要同时访问多个实例中的数据,这也是一个不错的选择。

限制

以下注意事项适用于在 Cloud Run 上使用 NDB、9P、CIFS/Samba 和 Ceph 网络文件系统的情况:

  • 在部署到 Cloud Run 时,您必须指定第二代执行环境

  • Cloud Run 旨在快速扩容到大量实例。但是,大多数网络文件系统并非设计为供大量客户端并发使用。请考虑使用实例数上限功能来限制 Cloud Run 实例的数量。

设置网络文件系统

如果您尚未设置文件服务器,请按照 Compute Engine 上的文件服务器解决方案指南,根据需要选择并设置正确的文件系统。如果您使用的是现有文件服务器,请确保可从 VPC 网络访问它

配置无服务器 VPC 访问通道连接器

您需要使用无服务器 VPC 访问通道连接器将 Cloud Run 服务连接到运行网络文件系统的 VPC 网络。

要在同一 VPC 网络上创建无服务器 VPC 访问通道连接器以连接到 Cloud Run 服务,请按照连接到 VPC 网络页面上的说明进行操作。

从 Cloud Run 服务装载文件系统

要装载网络文件系统,请执行以下操作:

  1. 使用以下示例定义用于启动应用并指定 Dockerfile 的装载点的启动脚本,并根据需要替换变量:

    • 对于 NBD

       echo "mounting ext4 image via NBD"
       nbd-client -L -name image IP_ADDRESS DEVICE_NAME
       mount DEVICE_NAME MOUNT_POINT_DIRECTORY

    • 对于通过 NBD 使用 PD-SSD

       echo "mounting PD-SSD via NBD"
       nbd-client -L -name disk IP_ADDRESS DEVICE_NAME
       mount DEVICE_NAME MOUNT_POINT_DIRECTORY

    • 对于 9P

       echo "mounting 9p export"
       mount -t 9p -o trans=tcp,aname=/mnt/diod,version=9p2000.L,uname=root,access=user IP_ADDRESS MOUNT_POINT_DIRECTORY

    • 对于 SMB

       echo "mounting SMB public share"
       mount -t cifs -ousername=USERNAME,password=PASSWORD,ip=IP_ADDRESS //FILESHARE_NAME MOUNT_POINT_DIRECTORY
       echo "mounts completed"

  2. 使用 Dockerfile 定义环境配置。您将使用 RUN 指定任何其他所需的系统软件包,例如 NBD 的 nbd-client。使用 CMD 指定运行映像时要执行的命令(启动脚本 run.sh),并为 ENTRYPOINT 提供默认参数来指定 init 进程二进制文件。

通过 Cloud Run 服务代码访问网络文件系统

要访问服务代码中的网络文件系统,请像往常一样使用文件读写操作。

容器化和部署

在 Cloud Run 服务代码完成后,您可以像往常一样对 Cloud Run 服务进行容器化部署,但请务必指定第二代执行环境

后续步骤