本页面介绍了如何将 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 服务装载文件系统
要装载网络文件系统,请执行以下操作:
使用以下示例定义用于启动应用并指定 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"
使用 Dockerfile 定义环境配置。您将使用
RUN
指定任何其他所需的系统软件包,例如 NBD 的nbd-client
。使用CMD
指定运行映像时要执行的命令(启动脚本run.sh
),并为ENTRYPOINT
提供默认参数来指定 init 进程二进制文件。
通过 Cloud Run 服务代码访问网络文件系统
要访问服务代码中的网络文件系统,请像往常一样使用文件读写操作。
容器化和部署
在 Cloud Run 服务代码完成后,您可以像往常一样对 Cloud Run 服务进行容器化和部署,但请务必指定第二代执行环境。