本總覽介紹 Cloud Storage FUSE CSI 驅動程式,可用於在 Google Kubernetes Engine (GKE) 中,將 Cloud Storage bucket 掛接為本機檔案系統。這項功能特別適合需要將訓練資料、模型和檢查點儲存在 Cloud Storage 的機器學習工作負載。
本總覽適用於開發人員和資料科學家,他們想從 Kubernetes 應用程式存取或儲存訓練資料、推論模型權重和查核點,這些資料都儲存在 Cloud Storage 中。
閱讀本頁面之前,請先熟悉 Kubernetes、GKE 和 Cloud Storage。
運作方式
驅動程式會使用容器儲存空間介面 (CSI) 標準,讓在 Pod 中執行的應用程式順暢存取 Cloud Storage bucket,就像存取掛接的檔案系統一樣。也就是說,您可以將 Cloud Storage bucket 視為 Kubernetes 應用程式的持續性可擴充資料來源,不必進行複雜的設定或程式碼變更。
Cloud Storage FUSE CSI 驅動程式提供全代管服務,並採用開放原始碼的 Google Cloud Storage FUSE CSI 外掛程式。有了 CSI 驅動程式,您就能透過 Kubernetes API 將既有的 Cloud Storage bucket 當做磁碟區使用。應用程式可使用 Cloud Storage FUSE 檔案系統語意上傳及下載物件。
使用者空間中的檔案系統 (FUSE) 是一種介面,用於將檔案系統匯出至 Linux 核心。Cloud Storage FUSE 可讓您將 Cloud Storage 值區掛接為檔案系統,應用程式就能使用常見的檔案 I/O 作業 (例如開啟、讀取、寫入及關閉),存取值區中的物件,而不必使用雲端專屬的 API。
驅動程式原生支援下列方式,可供您設定 Cloud Storage 支援的磁碟區:
- CSI 臨時磁碟區:您可以在 Pod 規格中內嵌指定 Cloud Storage 值區。如要使用簡化的 Pod 型介面,且不需要 Kubernetes 持續性磁碟區的經驗,請使用臨時 CSI 磁碟區。 如要使用這個選項,請參閱「將 Cloud Storage bucket 掛接為 CSI 臨時磁碟區」。
- PersistentVolumes:您可以使用靜態佈建,建立參照 Cloud Storage 值區的 PersistentVolume 資源。Pod 隨後就能參照繫結至這個 PersistentVolume 的 PersistentVolumeClaim。如果您已熟悉 PersistentVolume,且希望與現有部署作業保持一致,請使用這個選項。如要使用這個選項,請參閱「將 Cloud Storage bucket 掛接為永久磁碟區」。
用途
Cloud Storage FUSE CSI 驅動程式適用於下列情境:
AI 與機器學習
- 訓練:您可以使用 Cloud Storage FUSE CSI 驅動程式讀取訓練資料,並將 Cloud Storage 做為事實來源,檢查已儲存的模型。舉例來說,在 GKE 上使用 PyTorch、JAX 或 TensorFlow 訓練模型時,驅動程式可提供對儲存在 Cloud Storage bucket 中的訓練資料集的存取權。
- 推論:您可以提供 ML 推論模型,從儲存在 Cloud Storage 的檔案推論結果。您可以使用 Cloud Storage FUSE CSI 預先載入儲存在 Cloud Storage 中的模型權重。此外,您可以使用平行下載和檔案快取,加快從 Cloud Storage 讀取大型檔案的速度,以進行多執行緒下載。這項功能可縮短模型載入時間,特別是讀取超過 1 GB 的模型時
資料分析管道
有了 Cloud Storage FUSE CSI 驅動程式,應用程式就能直接存取及分析儲存在 Cloud Storage 中的大型資料集,進而簡化資料處理工作。舉例來說,在 GKE 上執行的 Spark 工作可以使用 CSI 驅動程式處理 Cloud Storage 中儲存的資料,不必先下載資料。
優點
使用 CSI 驅動程式可享有下列優點:
- 設定簡單:Cloud Storage FUSE CSI 驅動程式會自動在標準和 Autopilot 叢集上部署及管理驅動程式。使用 CSI 臨時磁碟區可簡化磁碟區設定和管理作業。 這是因為不需要 PersistentVolumeClaim 和 PersistentVolume 物件。
- 安全性:Cloud Storage FUSE CSI 驅動程式不需要具備特殊權限的存取權。 這項做法可將與特殊權限存取相關的風險降到最低,並提升安全性。您可以使用 GKE 適用的工作負載身分聯盟管理驗證,精細控管 Pod 存取 Cloud Storage 物件的方式。
- 效能:Cloud Storage FUSE CSI 驅動程式可透過多項功能提升效能,例如用於最佳化互動的 Sidecar、用於加快資料存取的平行下載,以及用於提升讀取效能和縮短延遲時間的中繼資料和檔案快取。如要進一步瞭解這些功能,請參閱「效能調整選項和功能」。
- 可攜性和彈性:Cloud Storage FUSE CSI 驅動程式可讓您使用標準檔案系統語意,掛接及存取 Cloud Storage bucket。這項功能提供熟悉的介面,可提升機器學習工作負載的可攜性,並避免您需要大幅變更程式碼或應用程式。GKE 提供的所有加速器 (包括 GPU 和 TPU) 都支援這項驅動程式。Cloud Storage FUSE CSI 驅動程式支援
ReadWriteMany
、ReadOnlyMany
和ReadWriteOnce
存取模式。您可以在 init 容器中使用 Cloud Storage FUSE 磁碟區。 - 可管理性:您不必安裝或管理驅動程式,即可在幕後執行 Cloud Storage FUSE。您也可以查看 Cloud Storage FUSE 的指標深入分析,包括檔案系統、Cloud Storage 和檔案快取用量。
效能調整選項和功能
Cloud Storage FUSE CSI 驅動程式提供多種效能調整選項和功能,可最佳化 Pod 存取 Cloud Storage 儲存空間值區中資料的方式。
舉例來說,啟用檔案快取並調整要求並行程度,可大幅縮短載入訓練資料的時間,進而加快訓練速度。
原生 Sidecar:Cloud Storage FUSE CSI 驅動程式會在 Pod 中附加 Sidecar 容器,管理與 Cloud Storage 的互動。Sidecar 會處理掛接作業,並與 Cloud Storage 互動,讓應用程式順暢存取資料。您可以設定 CPU 和記憶體等資源,或調整與快取和緩衝區相關的設定,藉此微調 Sidecar 容器的效能。Cloud Storage FUSE CSI 驅動程式的 Sidecar 容器和 Istio 可以共存,並在 Pod 中同時執行。
平行下載:從 GKE 版本 1.30.3-gke.1571000 和 Cloud Storage FUSE v.2.4.0 開始,啟用檔案快取後,您可以使用平行下載功能,加快從 Cloud Storage 讀取大型檔案的速度,以進行多執行緒下載。這項功能可縮短模型載入時間,特別是讀取超過 1 GB 的資料時 (例如載入 Llama 2 70B 時,速度最多可提升一倍)。
支援中繼資料快取:Cloud Storage FUSE CSI 驅動程式會快取檔案中繼資料 (例如大小和修改時間),藉此提升效能。CSI 驅動程式預設會啟用這項狀態快取,並將資訊儲存在本機,而非重複向 Cloud Storage 要求資訊,藉此縮短延遲時間。您可以設定快取資料的大小上限,以及資料在快取中保留的時間長度。微調中繼資料快取後,您就能減少對 Google Cloud Storage 的 API 呼叫次數,盡量減少網路流量和延遲時間,進而提升應用程式效能和效率。
支援檔案快取:您可以搭配使用 Cloud Storage FUSE CSI 驅動程式和檔案快取,提升應用程式從 Cloud Storage bucket 處理小型檔案時的讀取效能。Cloud Storage FUSE 檔案快取功能是以用戶端為基礎的讀取快取,可從您選擇的快取儲存空間更快地提供重複的檔案讀取作業。您可以根據價格與效能需求,從一系列讀取快取儲存空間選項中選擇,包括本機 SSD、以永久磁碟為基礎的儲存空間和 RAM 磁碟。
支援節點重新啟動:從 GKE 1.33.1-gke.1959000 版開始,使用 GCSFuse CSI 磁碟區的 Pod 可以在 GKE 節點重新啟動後自動復原。如果叢集執行的是舊版,Pod 無法復原,您必須重新部署。
如要瞭解效能調校最佳做法,請參閱「針對 GKE 效能最佳化 Cloud Storage FUSE CSI 驅動程式」。
限制
CSI 驅動程式有下列限制:
- 與 POSIX 檔案系統相比,Cloud Storage FUSE 檔案系統在效能、可用性、存取授權和語意方面有所不同。
- GKE Sandbox 不支援 Cloud Storage FUSE CSI 驅動程式。
- Cloud Storage FUSE CSI 驅動程式不支援磁碟區快照、磁碟區複製或磁碟區擴充功能。
- 使用 Workload Identity Federation for GKE 時,讀寫工作負載必須啟用統一值區層級存取權。
- 請參閱 Cloud Storage FUSE CSI 驅動程式 GitHub 專案中的已知問題。
- 請參閱 Cloud Storage FUSE CSI 驅動程式 GitHub 專案中的待解決問題。
- 由於 GKE 適用的工作負載身分聯盟有相關限制,Cloud Storage FUSE CSI 驅動程式不支援在主機網路 (
hostNetwork: true
) 上執行的 Pod。 - 如果 GKE 叢集版本早於 1.32.3-gke.1099000,則 JSON 加密
mountOption
字串的大小會受到限制。值區名稱、使用者提供的掛接選項和驅動程式提供的mountOptions
合計不得超過 500 個字元。在 GKE 叢集 1.32.3-gke.1099000 以上版本中,JSON 訊息的門檻已提高至 5,000 個位元組。
需求條件
如要使用 Cloud Storage FUSE CSI 驅動程式,叢集必須符合下列 GKE 版本要求:
- 使用執行 GKE 1.24 以上版本的 Linux 叢集。
- 啟用 Workload Identity Federation for GKE 和 GKE 中繼資料伺服器。
- 使用最新版本的 Google Cloud CLI。
如要使用 Cloud Storage FUSE CSI 驅動程式的特定功能,還須符合下列需求:
功能 | GKE 版本規定 |
---|---|
Sidecar 容器的私有映像檔、自訂寫入緩衝區磁碟區,以及 Sidecar 容器資源要求 | 1.27.10-gke.1055000、1.28.6-gke.1369000、1.29.1-gke.1575000 以上版本。 |
檔案快取、磁碟區屬性 | 1.27.12-gke.1190000、1.28.8-gke.1175000、1.29.3-gke.1093000 以上版本。 |
初始化容器中的 Cloud Storage FUSE 磁碟區 | 1.29.3-gke.1093000 以上版本,且所有節點都使用 GKE 1.29 以上版本。 |
平行下載 | 1.29.6-gke.1254000、1.30.2-gke.1394000 以上版本。 |
Cloud Storage FUSE 指標 | 1.31.1-gke.1621000 以上版本,1.33.0-gke.2248000 以上版本預設會啟用。 |
中繼資料預先擷取 | 1.32.1-gke.1357001 以上版本。 |
串流寫入 | 1.32.1-gke.1753001 以上版本,在 1.33.2-gke.1043000 以上版本中預設為啟用。 |
設定核心預先讀取 | 1.32.2-gke.1297001 以上版本。 |
支援節點重新啟動 | 1.33.1-gke.1959000 以上版本。 |