關於 GKE 的本機 SSD


本機固態硬碟 (SSD) 是固定大小的 SSD 磁碟機,可掛接至單一 Compute Engine VM。您可以在 GKE 上使用本機 SSD,取得附加至叢集中每個節點的高效能非永久性 (臨時) 儲存空間。本機 SSD 的總處理量也高於標準磁碟,延遲時間也較短

在 1.25.3-gke.1800 以上版本中,您可以將 GKE 節點集區設定為使用本機 SSD,並透過 NVMe 介面做為本機臨時儲存空間或原始區塊儲存空間。

如果您使用 GKE 搭配標準叢集,可以在建立節點集區時,將本機 SSD 磁碟區連結至節點。這項功能可提升工作負載的暫時性儲存空間效能,適用於使用 emptyDir 磁碟區本機 PersistentVolume 的工作負載。只要不違反叢集的機器類型限制及超出專案的配額,就可以建立具有本機 SSD 的節點集區。

本機 SSD 磁碟只會連結至一個節點,而節點本身是暫時性的。工作負載隨時可排定至其他節點。

設定本機 SSD 時,GKE 會自動將下列目錄掛接至本機 SSD 磁碟區,以提升效能:/var/lib/kubelet/var/log/pods/var/lib/containerd。這可確保您能更快存取重要的 Kubelet 資料、Pod 記錄和容器執行階段檔案。

如要進一步瞭解本機 SSD 的優點和限制 (例如效能,以及每種機器類型允許的 SSD 磁碟數量),請參閱 Compute Engine 說明文件中的「本機 SSD」一節。

為何選擇 GKE 本機 SSD

如果工作負載有下列任一需求,本機 SSD 會是不錯的選擇:

  • 您想執行會下載及處理資料的應用程式,例如 AI 或機器學習、分析、批次處理、本機快取和記憶體內資料庫。
  • 您的應用程式有特殊的儲存空間需求,而且您希望在高效能的臨時儲存空間中存取原始區塊。
  • 您想執行專門的資料應用程式,並希望像 Pod 的節點層級快取一樣運作本機 SSD 磁碟區。您可以運用這種方法,提升 Aerospike 或 Redis 等記憶體內資料庫應用程式的效能。

臨時儲存空間

建議使用 --ephemeral-storage-local-ssd 選項,為節點暫時性儲存空間佈建本機 SSD (如果您使用第三代機器系列,這是預設選項)。 這種做法會將 emptyDir 磁碟區、可寫入資料的容器層和映像檔置於本機 SSD,這些項目共同構成節點暫存空間。與預設的永久磁碟相比,這項功能可提升 I/O 頻寬,並縮短 Pod 啟動時間。

使用本機 SSD 做為節點暫時儲存空間時,開機磁碟本機 SSD 磁碟區就無法用於其他用途。請勿直接使用具有特殊權限的 Daemonset、HostPath 或其他機制修改本機 SSD 裝置,否則節點可能會發生故障。/dev/nvme*如要精細控管本機 SSD 磁碟區,請改用原始區塊方法。

封鎖裝置儲存空間

區塊裝置儲存空間可讓您隨機存取大小固定的資料區塊。某些專門的應用程式需要直接存取區塊裝置儲存空間,例如檔案系統層會造成不必要的負擔。

使用區塊裝置儲存空間的常見情境包括:

  • 資料直接在基礎儲存空間中整理的資料庫。
  • 軟體本身會實作某種儲存空間服務 (軟體定義的儲存空間系統)。

在 GKE v1.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 第 1、2 和 3 代機器系列的本機 SSD 磁碟區。本機 SSD 磁碟區需要 n1-standard-1 以上的機器類型。 系統不支援預設機器類型「e2-medium」。如要判斷機器系列,請使用機器類型名稱中的數字。舉例來說,N1 機器是第一代,N2 機器是第二代。如需可用機器系列和類型清單,請參閱 Compute Engine 說明文件中的機器家族資源和比較指南

第一代和第二代機器系列需求

如要搭配使用第 1 代或第 2 代機器系列與本機 SSD,叢集或節點集區必須執行 GKE 1.25.3-gke.1800 以上版本。

如要在第一代或第二代機器系列上佈建本機 SSD,請指定要搭配 VM 使用的本機 SSD 磁碟區數量。如需機器系列和對應允許的本機 SSD 數量清單,請參閱 Compute Engine 說明文件中的「選擇有效的本機 SSD 數量」。

第三代和第四代機器系列需求

如要搭配本機 SSD 使用第 3 代機器系列,叢集或節點集區必須執行下列其中一個 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 使用第 4 代機器系列,叢集或節點集區必須執行下列其中一個 GKE 版本或更新版本:

  • 1.32.1-gke.1357000

對於第 3 代和第 4 代機器系列,每個機器類型都會預先設定為沒有本機 SSD,或是固定數量的本機 SSD 磁碟區。您未指定要加入的本機 SSD 磁碟區數量。而是隱含地定義為 VM 形狀的一部分。

如需機型系列和對應允許的本機 SSD 數量清單,請參閱 Compute Engine 說明文件中的「選擇有效的本機 SSD 數量」。

本機固態硬碟磁碟區的使用模式

如要在叢集中使用本機 SSD 磁碟區,請按照下列一般步驟操作:

  1. 佈建已連結本機 SSD 的節點集區:如要建立已連結本機 SSD 的 GKE 節點集區,請在呼叫 create cluster 指令時,傳遞暫時性儲存空間或原始區塊儲存空間參數。設定本機 SSD 參數後,系統會建立 GKE 節點集區,並根據您選擇的參數,將本機 SSD 附加至節點,然後設定為本機暫時儲存空間或原始區塊儲存空間。如要進一步瞭解本機 SSD 的佈建選項,請參閱本機 SSD 參數
  2. 從本機 SSD 磁碟區存取資料:如要使用本機 SSD 磁碟區的資料,可以運用 Kubernetes 建構函式,例如 emptyDir 或本機永久磁碟區。如要進一步瞭解這些選項,請參閱本機 SSD 存取權

GKE 的本機 SSD 參數

下表摘要說明 GKE 提供的建議參數,可用於在叢集上佈建本機 SSD 儲存空間。您可以使用 gcloud CLI 傳遞這些參數。

本機 SSD 類型 gcloud CLI 指令 GKE 可用性 本機 SSD 設定檔
臨時儲存空間本機 SSD gcloud container clusters create
--ephemeral-storage-local-ssd
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
--local-nvme-ssd-block
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
--local-ssd-count

儲存技術: SCSI

在 Pod 之間共用資料: 是,透過本機 PV

資料生命週期:節點

大小和 RAID 設定需求: 375 GiB。如要使用較大的大小,必須手動設定 RAID。

格式: 檔案系統 (ext-4)

Kubernetes 排程器整合: 預設為無。您需要確保節點容量,並處理干擾鄰居。如果選擇加入店面瀏覽次數,系統會整合排程。

gcloud container clusters create
--ephemeral-storage-local-ssd
暫存空間參數 (Beta 版) gcloud beta container clusters create
--ephemeral-storage

儲存技術: NVMe

在 Pod 之間共用資料:

資料生命週期:Pod

大小和 RAID 設定需求: 最多 9 TiB。GKE 會在幕後自動設定 RAID。

格式: 檔案系統 (Kubernetes emptyDir)

整合 Kubernetes 排程器: 預設為完全整合。Kubernetes 排程器會先確保節點有空間,再放置節點,並視需要調整節點大小。

gcloud container clusters create
--ephemeral-storage-local-ssd
本機 SSD 磁碟區參數 (Alpha 版) gcloud alpha container clusters create
--local-ssd-volumes

儲存技術: NVMe 或 SCSI

在 Pod 之間共用資料:

資料生命週期:節點

大小和 RAID 設定需求:

375 GiB。如要使用較大的磁碟大小,必須手動設定 RAID。

格式: 檔案系統 (ext-4) 或原始區塊

Kubernetes 排程器整合: 預設為否。您需要確保節點上的容量,並處理干擾鄰居。

gcloud container clusters create
--local-nvme-ssd-block

本機 SSD 存取權

您可以使用下列其中一種方法存取本機 SSD 磁碟區。

emptyDir 磁碟區

在 GKE v1.25.3-gke.1800 以上版本中,您可以透過 --ephemeral-storage-local-ssd 選項,將臨時儲存空間做為本機 SSD 支援的空目錄磁碟區。在大多數情況下,包括需要高效能暫時性暫存空間的應用程式,我們都建議採用這種做法。

GKE 可讓您設定節點集區,透過 NVMe 介面將節點臨時儲存空間掛接至本機 SSD。

詳情請參閱這個範例

本機永久磁碟區

本機永久磁碟區代表附加至單一節點的本機磁碟。本機永久磁碟區可讓您在 Pod 之間共用本機 SSD 資源。由於本機磁碟是本機 SSD 磁碟,資料仍為暫時性。

如果叢集上執行下列任何項目,建議採用這種做法:

  • 使用 StatefulSetsvolumeClaimTemplates 的工作負載。
  • 共用節點集區的工作負載。您可以透過 PersistentVolumeClaim 保留每個本機 SSD 磁碟區,而且特定的 HostPath 不會在 Pod 規格中直接進行編碼。
  • 對同一個本機 SSD 需要資料引力的 Pod。Pod 一律會安排到與本機 PersistentVolume 相同的節點。

詳情請參閱這個範例,以及開放原始碼 Kubernetes Volumes 說明文件。

限制

  • 應用程式必須妥善處理無法存取本機 SSD 磁碟區資料的情況。如果刪除、修復或升級 Pod 或節點,或發生無法復原的錯誤,寫入本機 SSD 磁碟的資料就不會保留。

    臨時儲存空間本機 SSD 參數會將本機 SSD 磁碟區設定為以 Pod 為基礎的資料生命週期,而 NVMe 本機 SSD 區塊參數則會將本機 SSD 磁碟區設定為以節點為基礎的資料生命週期。

    如需永久儲存空間,建議使用具有耐用性的儲存選項 (例如 Persistent DiskFilestoreCloud Storage)。您也可以使用區域副本,在叢集生命週期或應用程式生命週期作業期間,將資料遺失的風險降到最低。

  • 節點集區建立後,本機 SSD 設定就無法修改。您無法為現有節點集區啟用、停用或更新本機 SSD 設定。如要變更任何內容,請先刪除節點集區,然後重新建立新的節點集區。

  • 使用 emptyDir 的 Pod 會透明地使用本機 SSD,但這適用於該節點集區中所有節點上的所有 Pod。在同一個節點集區中,GKE 不支援部分 Pod 使用本機 SSD 支援的 Local SSD emptyDir 卷宗,其他 Pod 則使用節點開機磁碟支援的 emptyDir 卷宗。如果工作負載使用由節點開機磁碟支援的 emptyDir 磁碟區,請在其他節點集區排定工作負載。

  • Autopilot 叢集和節點自動佈建功能不支援本機 SSD。

  • 建議您將本機 SSD 做為暫時性儲存空間,用於在儲存空間最佳化 (Z3) VM 上執行的工作負載。系統支援為少於 88 個 vCPU 的 Z3 VM 執行即時遷移,但如果 Z3 VM 具有 88 個以上的 vCPU,則會在維護事件期間終止。詳情請參閱 Z3 執行個體的維護體驗。由於系統會終止具有 88 個以上 vCPU 的 Z3 VM,節點本機 SSD 中的資料在維護事件期間可能無法使用,且無法保證維護作業後可復原資料。詳情請參閱「執行個體終止後磁碟的持續性」。

後續步驟