本機固態硬碟 (SSD) 是固定大小的 SSD 硬碟,可掛接至單一 Compute Engine VM。您可以在 GKE 上使用本機 SSD,取得高效能的非永久性 (臨時) 儲存空間,並附加至叢集中的每個節點。相較於標準磁碟,本機 SSD 也提供更高的處理量和更低的延遲時間。
在 1.25.3-gke.1800 以上版本中,您可以設定 GKE 節點集區,使用具備 NVMe 介面的本機 SSD,做為本機臨時儲存空間或原始區塊儲存空間。
如果您使用 GKE 搭配 Standard 叢集,可以在建立節點集區時,將本機 SSD 磁碟區附加至節點。這樣一來,使用 emptyDir 磁碟區或本機 PersistentVolume 的工作負載,就能提升臨時儲存空間的效能。您可以在叢集的機器類型限制和專案配額內,建立含有本機 SSD 的節點集區。
本機 SSD 磁碟只會連接至一個節點。節點本身是臨時的,也就是說,工作負載可以排程到不同的節點。為確保需要本機 SSD 的工作負載排定至適當的節點,請使用節點相似度。例如,使用節點標籤 cloud.google.com/gke-ephemeral-storage-local-ssd: "true"。
設定本機 SSD 時,GKE 會自動將下列目錄掛接至本機 SSD 磁碟區,以提升效能:/var/lib/kubelet、/var/log/pods 和 /var/lib/containerd。這種做法有助於確保能更快存取重要的 kubelet 資料、Pod 記錄和容器執行階段檔案。
如要進一步瞭解本機 SSD 的優點和限制,例如效能和每種機型允許的 SSD 磁碟數量,請參閱 Compute Engine 說明文件中的「本機 SSD」。
選擇 GKE 本機 SSD 的原因
如果工作負載有下列任一需求,本機 SSD 會是理想選擇:
- 您想執行下載及處理資料的應用程式,例如 AI 或機器學習、數據分析、批次處理、本機快取和記憶體內資料庫。
- 您的應用程式有特殊儲存需求,且您希望在高效能臨時儲存空間上存取原始區塊。
- 您想執行專門的資料應用程式,並想操作本機 SSD 磁碟區,做為 Pod 的節點層級快取。您可以採用這種方法,提升 Aerospike 或 Redis 等記憶體內資料庫應用程式的效能。
臨時儲存空間
建議您使用 --ephemeral-storage-local-ssd 選項,為節點臨時儲存空間佈建本機 SSD (如果您使用的是第三代機器系列,則這是預設選項)。這種做法會將 emptyDir 磁碟區、可寫入資料的容器層和映像檔 (共同構成節點臨時儲存空間) 放在本機 SSD。優點包括 I/O 頻寬比預設永久磁碟更高,以及 Pod 啟動時間更短。
如果將本機 SSD 用於節點臨時儲存空間,開機磁碟本機 SSD 磁碟區就無法用於其他用途。請勿使用具備特殊權限的 DaemonSet、HostPath 或其他機制,直接修改本機 SSD 裝置 (例如 /dev/nvme*),否則節點可能會故障。如要精細控管本機 SSD 磁碟區,請改用原始區塊方法。
區塊裝置儲存空間
區塊裝置儲存空間可隨機存取大小固定的區塊資料。某些專門的應用程式需要直接存取區塊裝置儲存空間,例如檔案系統層會產生不必要的負擔。
區塊裝置儲存空間的常見用途包括:
- 直接在基礎儲存空間中整理資料的資料庫。
- 本身會實作某種儲存空間服務的軟體 (軟體定義儲存空間系統)。
在 GKE 1.25.3-gke.1800 以上版本中,您可以使用 --local-nvme-ssd-block 選項,建立附加原始區塊本機 NVMe SSD 的叢集和節點集區。接著,您可以格式化所選檔案系統 (例如 ZFS 或 HDFS) 並設定 RAID,藉此自訂區塊儲存空間。如果您需要額外控管機制,來執行特別需要存取本機 SSD 支援區塊儲存空間的工作負載,這個選項就很合適。
如果您想使用統一的資料快取在 Pod 之間共用資料,且資料與節點生命週期綁定,也可以搭配本機 SSD 使用區塊存取方式。如要這麼做,請安裝具有 RAID 設定的 DaemonSet、格式化檔案系統,並使用本機 PersistentVolume 在 Pod 之間共用資料。
機器需求
為 GKE 叢集和節點集區佈建本機 SSD 的方式,取決於基礎機型。GKE 支援 Compute Engine 第一、第二和第三代機器系列的本機 SSD 磁碟區。本機 SSD 磁碟區需要 n1-standard-1 以上的機器類型。不支援預設機型 e2-medium。如要找出機器系列,請查看機型名稱中的數字。舉例來說,N1 機器是第一代,N2 機器是第二代。如需可用機器系列和類型的清單,請參閱 Compute Engine 說明文件中的機器家族資源與比較指南。
GKE 不支援搭配使用 C4N 機器系列和本機 SSD。Compute Engine 的預先發布版中,這個機器系列支援本機 SSD。
第一代和第二代機器系列需求
如要搭配使用第一代或第二代機器系列與本機 SSD,叢集或節點集區必須執行 GKE 1.25.3-gke.1800 以上版本。
如要在第一代或第二代機器系列上佈建本機 SSD,請指定要與 VM 搭配使用的本機 SSD 磁碟區數量。如要查看機器系列清單和對應的本機 SSD 允許數量,請參閱 Compute Engine 說明文件中的「選擇有效的本機 SSD 數量」。
第三代和第四代機器系列需求
如要搭配使用第三代機器系列和本機 SSD,叢集或節點集區必須執行下列其中一個 GKE 版本或更新版本:
- 1.25.13-gke.200 至 1.26
- 1.26.8-gke.200 至 1.27
- 1.27.5-gke.200 至 1.28
- 1.28.1-gke.200 至 1.29
如要搭配使用第四代機器系列和本機 SSD,叢集或節點集區必須執行下列其中一個 GKE 版本或更新版本:
- 1.32.1-gke.1357000
第三代和第四代機器系列中,每種機器類型都預先設定為沒有本機 SSD,或有固定數量的本機 SSD 磁碟區。您不必指定要納入的本機 SSD 磁碟區數量。叢集可用的本機 SSD 容量,會隱含定義為 VM 形態的一部分。
如要查看機器系列清單和對應的本機 SSD 允許數量,請參閱 Compute Engine 說明文件中的「選擇有效的本機 SSD 數量」。
本機 SSD 磁碟區的使用模式
如要在叢集中使用本機 SSD 磁碟區,請按照下列一般步驟操作:
- 佈建附加本機 SSD 的節點集區:如要建立附加本機 SSD 的 GKE 節點集區,請在呼叫
create cluster指令時,傳入暫時儲存空間或原始區塊儲存空間參數。設定本機 SSD 參數後,系統會建立 GKE 節點集區,並根據您選擇的參數,將本機 SSD 附加及設定為本機臨時儲存空間或原始區塊儲存空間。如要進一步瞭解佈建本機 SSD 的選項,請參閱「本機 SSD 參數」。 - 存取本機 SSD 磁碟區中的資料:如要使用本機 SSD 磁碟區中的資料,您可以使用 Kubernetes 建構,例如 emptyDir 或本機永久磁碟區。如要進一步瞭解這些選項,請參閱「本機 SSD 存取權」。
GKE 的本機 SSD 參數
下表匯總 GKE 建議的參數,用於在叢集佈建本機 SSD 儲存空間。您可以使用 gcloud CLI 傳入這些參數。
| 本機 SSD 類型 | gcloud CLI 指令 | GKE 可用性 | 本機 SSD 設定檔 |
|---|---|---|---|
| 臨時儲存空間本機 SSD | gcloud container clusters create |
v1.25.3-gke.1800 以上版本 |
儲存技術: NVMe 跨 Pod 共用資料:否 資料生命週期:Pod 大小和 RAID 設定需求:最多 9 TiB。GKE 會自動在背景設定 RAID。 格式: 檔案系統 (Kubernetes emptyDir) Kubernetes 排程器整合: 預設為完全整合。Kubernetes 排程器可確保節點在放置前有可用空間,並視需要調度節點資源。 如要瞭解如何使用這個 API 參數,請參閱「佈建及使用本機 SSD 支援的暫時儲存空間」。 |
| 本機 NVMe SSD 區塊 | gcloud container clusters create |
v1.25.3-gke.1800 以上版本 |
儲存技術: NVMe 跨 Pod 共用資料:是,透過本機 PV。 資料生命週期:節點 大小和 RAID 設定需求:最多 9 TiB。如需更大的大小,請手動設定 RAID。 格式: 原始區塊 Kubernetes 排程器整合: 預設為「否」。您必須確保節點容量,並處理干擾鄰居。如果選擇加入本地 PV,系統會整合排程。 如要瞭解如何使用這個 API 參數,請參閱「佈建及使用本機 SSD 支援的原始區塊儲存空間」。 |
支援現有的本機 SSD 參數
下表匯總這些現有的本機 SSD 參數和建議的替代參數:
| 現有的本機 SSD 參數 | gcloud CLI 指令 | 本機 SSD 設定檔 | 建議的本機 SSD 參數正式發布版 |
|---|---|---|---|
| 本機 SSD 數量參數 | gcloud container clusters create |
儲存技術: SCSI Pod 之間共用資料: 是,透過本機 PV 資料生命週期:節點 大小和 RAID 設定需求: 375 GiB。如要使用較大的大小,則須手動設定 RAID。 格式: 檔案系統 (ext-4) Kubernetes 排程器整合: 預設為「否」。您必須確保節點容量,並處理干擾鄰近資源的問題。如果選擇加入本地 PV,系統會整合排程。 |
gcloud container clusters create |
| 暫時儲存空間參數 (Beta 版) | gcloud beta container clusters create |
儲存技術: NVMe 跨 Pod 共用資料: 否 資料生命週期:Pod 大小和 RAID 設定需求: 最多 9 TiB。GKE 會自動在背景設定 RAID。 格式: 檔案系統 (Kubernetes emptyDir) Kubernetes 排程器整合: 預設為完全整合。Kubernetes 排程器可確保節點在放置前有可用空間,並視需要調度節點資源。 |
gcloud container clusters create |
| 本機 SSD 磁碟區參數 (Alpha 版) | gcloud alpha container clusters create |
儲存技術: NVMe 或 SCSI 跨 Pod 共用資料: 否 資料生命週期:節點 大小和 RAID 設定需求: 375 GiB。如要使用更大的大小,請手動設定 RAID。 格式: 檔案系統 (ext-4) 或原始區塊 Kubernetes 排程器整合: 預設為「否」,您必須確保節點容量,並處理干擾鄰居。 |
gcloud container clusters create |
本機 SSD 存取權
您可以使用下列任一方法存取本機 SSD 磁碟區。
emptyDir 磁碟區
在 GKE 1.25.3-gke.1800 以上版本中,您可以透過 --ephemeral-storage-local-ssd 選項,將本機 SSD 支援的emptyDir 磁碟區做為臨時儲存空間。在大多數情況下,我們建議採用這種方法,包括需要高效能臨時暫存空間的應用程式。
在 GKE 中,您可以設定節點集區,使用 NVMe 介面將節點臨時儲存空間掛接至本機 SSD。
詳情請參閱這個範例。
本機永久磁碟區
本機永久磁碟區代表連接至單一節點的本機磁碟。本機永久磁碟區可讓您在 Pod 之間共用本機 SSD 資源。由於本機磁碟是本機 SSD 磁碟,因此資料仍為臨時資料。
如果叢集執行下列任一項目,建議採用這個方法:
- 使用 StatefulSets 和 volumeClaimTemplates 的工作負載。
- 共用節點集區的工作負載。每個本機 SSD 磁碟區都可以透過 PersistentVolumeClaim 預留,且特定 HostPath 不會直接在 Pod 規格中編碼。
- 需要將資料重力移至相同本機 SSD 的 Pod。Pod 一律會排定至與本機 PersistentVolume 相同的節點。
詳情請參閱這個範例和開放原始碼 Kubernetes Volumes 說明文件。
處理主機維護作業
部分使用本機 SSD 的 GKE 節點 (例如連接超過 18 TiB Titanium SSD 的 Z3 機型) 不支援在主機維護期間進行即時遷移。而是停止並就地重新啟動。如要查看在維護事件期間有特定行為的機器家族清單,請參閱 Compute Engine 說明文件中的「關於主機事件」。
由於重新啟動的機型可能會延長節點停機時間,因此您應設計具備彈性的應用程式,並預期 Pod 會終止並在其他節點上重新排程。
與連接 GPU 和 TPU 的節點類似,您可以設定叢集,妥善管理這些維護事件。GKE 維護處理常式元件會自動偵測本機 SSD 節點即將進行的維護作業。在維護作業開始前,處理常式會對節點加上污點,防止排定新的 Pod,然後安全地淘汰現有 Pod。這樣一來,Pod 就能在叢集中的其他可用節點上重新排程,並遵循您設定的任何 PodDisruptionBudget。
如要瞭解如何設定工作負載來管理這些事件,請參閱「管理無法即時遷移的 GKE 節點中斷情形」。
限制
應用程式必須妥善處理無法存取本機 SSD 磁碟區資料的情況。如果 Pod 或節點遭到刪除、修復、升級,或發生無法復原的錯誤,寫入本機 SSD 磁碟的資料不會保留。
臨時儲存空間本機 SSD 參數會將本機 SSD 磁碟區設為採用以 Pod 為基礎的資料生命週期,而 NVMe 本機 SSD 區塊參數則會將本機 SSD 磁碟區設為採用以節點為基礎的資料生命週期。
如需永久儲存空間,建議使用耐用的儲存空間選項 (例如 Persistent Disk、Filestore 或 Cloud Storage)。您也可以使用區域副本,盡可能降低叢集生命週期或應用程式生命週期作業期間資料遺失的風險。
節點集區建立後,即無法修改本機 SSD 設定。您無法啟用、停用或更新現有節點集區的本機 SSD 設定。如要進行任何變更,您必須刪除節點集區,並重新建立新的節點集區。
使用 emptyDir 的 Pod 會以透明方式使用本機 SSD,但該節點集區中所有節點上的所有 Pod 都是如此。GKE 不支援在同一個節點集區中,部分 Pod 使用由本機 SSD 支援的本機 SSD emptyDir 磁碟區,而其他 Pod 使用由節點開機磁碟支援的 emptyDir 磁碟區。如果工作負載使用的 emptyDir 磁碟區是由節點開機磁碟支援,請將工作負載排定在其他節點集區。
Autopilot 叢集和自動佈建節點功能,僅支援透過自訂 ComputeClass 使用本機 SSD
如果工作負載在儲存空間最佳化的 Z3 VM、Z4D VM 或 Z4M VM 上執行,請使用本機 SSD 做為臨時儲存空間。這些機器支援即時遷移,但須符合下列條件:
Z3 VM 附加的 Titanium SSD 不超過 18 TiB,但如果 Z3 VM 附加的 Titanium SSD 超過 18 TiB,則會在維護事件期間終止。詳情請參閱「Z3 執行個體的維護體驗」。由於 Titanium SSD 超過 18 TiB 的 Z3 VM 會終止,因此在維護事件期間,節點的本機 SSD 資料可能無法使用,且維護後不保證能復原資料。詳情請參閱「執行個體終止後的磁碟持續性」。
Z4D VM 附加的 Titanium SSD 容量不超過 42 TiB,但如果 Z4D VM 附加的 Titanium SSD 容量超過 42 TiB,則會在維護事件期間終止。
Z4M VM 附加的 Titanium SSD 容量不超過 48 TiB,且未使用 Cloud RDMA,則支援即時遷移。Z4M 如果 VM 附加超過 48 TiB 的 Titanium SSD,或設定為使用 Cloud RDMA,則會在維護事件期間終止。
後續步驟
- 瞭解如何佈建及使用本機 SSD 支援的暫時儲存空間。
- 瞭解如何佈建及使用本機 SSD 支援的原始區塊儲存空間。
- 瞭解如何使用專屬 Persistent Disk 做為臨時磁碟區。
- 瞭解如何建立磁碟區。
- 瞭解如何使用 Compute Engine 永久磁碟 CSI 驅動程式。