使用 NBD、9P、CIFS/Samba 和 Ceph 網路檔案系統

本頁說明如何在 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 服務,請考慮使用執行個體數量上限功能,限制 Cloud Run 執行個體數量。

設定網路檔案系統

如果您尚未設定檔案伺服器,請按照「Compute Engine 上的檔案伺服器」解決方案指南,選取並設定符合需求的檔案系統。如果使用現有的檔案伺服器,請確認可從虛擬私有雲網路存取該伺服器

設定無伺服器虛擬私有雲存取連接器

您必須使用無伺服器虛擬私有雲存取連接器,將 Cloud Run 服務連線至網路檔案系統執行的虛擬私有雲網路。

如要在同一個虛擬私有雲網路中建立無伺服器虛擬私有雲存取連接器,以便連線至 Cloud Run 服務,請按照「連線至虛擬私有雲網路」頁面的操作說明進行。

從 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 服務所做的一樣,但請務必指定第二代執行環境

後續步驟