本頁面說明如何在 Cloud Run 中使用 NBD、9P、CIFS/Samba 和 Ceph 網路檔案系統。
如果您在 Cloud Run 上使用 NFS、Filestore 或 Cloud Storage FUSE,請參閱下列頁面:
您可以使用 NBD、9P、CIFS/Samba 和 Ceph 網路檔案系統,在 Cloud Run 中的多個容器和服務之間共用及儲存資料。您必須使用 Cloud Run 第二代執行環境,才能使用這項功能。
如果您需要使用這些檔案系統在 Cloud Run 服務中讀取及寫入檔案,可以選擇下列幾種做法:
- 如果您不需要在例項生命週期結束後持續保留資料,可以使用內建記憶體檔案系統。
- 如果您需要在執行個體生命週期結束後保留資料,且想使用標準檔案系統語意,請在 Cloud Run 中使用 NDB、9P、CIFS/Samba 和 Ceph 網路檔案系統。
- 如果您需要在執行個體生命週期結束後持續保留資料,且不需要標準檔案系統語意,最簡單的做法就是使用 Cloud Storage 用戶端程式庫。如果您需要同時存取多個執行個體的資料,這也是不錯的做法。
限制
以下注意事項適用於在 Cloud Run 上使用 NDB、9P、CIFS/Samba 和 Ceph 網路檔案系統:
在 Cloud Run 上部署時,您必須指定第二代執行環境。
Cloud Run 的設計可快速擴充至大量的執行個體。不過,大多數網路檔案系統並非設計用於大量用戶端的並行使用。建議您使用最大執行個體數功能,限制 Cloud Run 執行個體數量。
設定網路檔案系統
如果您尚未設定檔案伺服器,請按照「Compute Engine 上的檔案伺服器」解決方案指南,依據需求選取並設定正確的檔案系統。如果您使用的是現有的檔案伺服器,請確認可從 VPC 網路存取
設定無伺服器虛擬私有雲存取連接器
您必須使用無伺服器虛擬私有雲存取連接器,將 Cloud Run 服務連線至網路檔案系統執行所在的虛擬私有雲網路。
如要在相同的虛擬私有雲網路中建立無伺服器虛擬私有雲存取連接器,以便連線至 Cloud Run 服務,請按照「連線至虛擬私有雲網路」頁面上的操作說明進行。
從 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
提供預設引數,指定初始化程序二進位檔。
透過 Cloud Run 服務程式碼存取網路檔案系統
如要在服務程式碼中存取網路檔案系統,請按照平常的方式使用檔案讀取和寫入作業。
容器化及部署
完成 Cloud Run 服務程式碼後,請按照通常為 Cloud Run 服務執行的容器化和部署程序,務必指定第二代執行環境。