設定自訂開機磁碟

本頁說明如何在 Google Kubernetes Engine (GKE) 叢集和節點集區中,自訂節點開機磁碟。

總覽

建立 GKE 叢集或節點集區時,您可以為每個節點選擇要安裝 Kubernetes 節點檔案系統的永久磁碟類型。根據預設,GKE 1.24 以上版本會使用平衡型永久磁碟。您也可以指定其他 Persistent Disk 類型,例如標準或 SSD。詳情請參閱「儲存空間選項」一文。

已平衡和 SSD 永久磁碟的磁碟配額與標準永久磁碟配額不同。如果您要從標準持續性磁碟切換為平衡型永久磁碟,可能需要申請提高配額。詳情請參閱「資源配額」。

使用 SSD 開機磁碟的優點

使用 SSD 永久磁碟做為節點的開機磁碟,可帶來以下效能優勢:

  • 節點開機速度更快。
  • 由容器提供的二進位檔和檔案可以更快的提供給節點, 提升 I/O 密集型工作負載的效能,像是可託管靜態檔案的提供網路服務的應用程式,或短期執行的 I/O 密集型批次工作。
  • 儲存在節點本機媒體 (透過 hostPath 或 emptyDir 磁碟區公開) 的檔案,I/O 效能可望提升。

指定節點開機磁碟類型

建立叢集或節點集區時,您可以指定開機磁碟類型。

gcloud

如要建立具有自訂開機磁碟的叢集,請執行下列指令:

[DISK-TYPE] 可以是下列其中一個值:

  • pd-balanced (1.24 以上版本的預設值)
  • pd-standard (1.23 以下版本的預設值)
  • pd-ssd
  • hyperdisk-balanced

詳情請參閱「永久磁碟類型」。

gcloud container clusters create [CLUSTER_NAME] --disk-type [DISK_TYPE]

若要在現有叢集中建立節點集區:

gcloud container node-pools create [POOL_NAME] --disk-type [DISK_TYPE]

舉例來說,下列指令會建立叢集 example-cluster,並使用 SSD 永久磁碟類型 pd-ssd:

gcloud container clusters create example-cluster --disk-type pd-ssd

控制台

如要使用 Google Cloud 控制台建立叢集時選取開機磁碟,請按照下列步驟操作:

  1. 前往 Google Cloud 控制台的「Create a Kubernetes cluster」(建立 Kubernetes 叢集) 頁面。

    前往「建立 Kubernetes 叢集」

  2. 視需要設定叢集。

  3. 展開導覽選單中的「default-pool」,然後按一下「Nodes」。

  4. 在「Boot disk type」(開機磁碟類型) 下拉式選單中,選取永久磁碟類型。

  5. 點選「建立」。

如要為現有叢集建立具有自訂開機磁碟的節點集區,請按照下列步驟操作:

  1. 前往 Google Cloud 控制台的「Google Kubernetes Engine」頁面。

    前往「Google Kubernetes Engine」

  2. 在叢集清單中,按一下您要修改的叢集名稱。

  3. 按一下「Nodes」(節點) 分頁標籤。

  4. 按一下「建立由使用者管理的節點集區」。

  5. 視需要設定節點集區。

  6. 按一下導覽選單中的「節點」。

  7. 在「Boot disk type」(開機磁碟類型) 下拉式選單中,選取永久磁碟類型。

  8. 點選「建立」。

保護節點開機磁碟

節點開機磁碟預設會儲存容器映像檔、部分系統程序記錄、Pod 記錄和可寫入的容器層。

如果工作負載使用 configMap、emptyDir 或 hostPath 磁碟區,Pod 可能會將額外資料寫入節點開機磁碟。您可以將 emptyDir 設為由 tmpfs 支援,藉此停止這項作業。如要瞭解如何操作,請參閱 Kubernetes 說明文件。由於 secret、downwardAPI 和 projected 磁碟區是由 tmpfs 支援,因此使用這些磁碟區的 Pod 不會將資料寫入節點開機磁碟。

根據預設, Google Cloud會加密靜態儲存的客戶內容,包括節點開機磁碟。GKE 會為您管理加密作業,您不必採取任何動作。

不過,如果使用會寫入節點開機磁碟的磁碟區,您可能需要進一步控管 GKE 中工作負載資料的保護方式。您可以禁止 Pod 寫入節點開機磁碟,或對節點開機磁碟使用客戶自行管理的加密金鑰 (CMEK)。

禁止 Pod 寫入開機磁碟

如要避免 Pod 直接將資料寫入節點開機磁碟,請使用下列其中一種方法。

Policy Controller

Policy Controller 是 GKE Enterprise 的一項功能,可讓您在機群的 GKE 叢集中,大規模宣告及強制執行自訂政策。

  1. 安裝 Policy Controller。
  2. 使用 k8sPspVolumeTypes 限制範本定義限制,禁止使用下列磁碟區類型:
    • configMap
    • emptyDir (如果不是由 tmpfs 支援)
    • hostPath 如需操作說明,請參閱 Policy Controller 說明文件中的「使用限制範本庫」。

下列範例限制會限制叢集中所有 Pod 的這些磁碟區類型:

apiVersion: constraints.gatekeeper.sh/v1beta1
kind: K8sPSPVolumeTypes
metadata:
  name: deny-boot-disk-writes
spec:
  match:
    kinds:
    - apiGroups: [""]
      kinds: ["Pod"]
  parameters:
    volumes:
    - configMap
    - emptyDir
    - hostPath

PodSecurity 許可控制器

您可以使用內建的 Kubernetes PodSecurity 許可控制器,在特定命名空間或叢集中,強制執行不同層級的 Pod 安全性標準。「受限制」政策會禁止 Pod 寫入節點開機磁碟。

如要使用 PodSecurity 許可控制器,請參閱「使用 PodSecurity 套用預先定義的 Pod 層級安全性政策」。

客戶自行管理的加密金鑰

如要自行控管及管理加密金鑰輪替作業,可以使用客戶自行管理的加密金鑰 (CMEK)。這些金鑰用於加密資料加密金鑰,而資料加密金鑰則用於加密您的資料。如要瞭解如何為節點開機磁碟使用 CMEK,請參閱「使用客戶自行管理的加密金鑰」。

節點開機磁碟的 CMEK 限制是,節點集區建立後即無法變更。也就是說:

  • 如果節點集區是使用客戶自行管理的加密金鑰建立,您就無法在之後停用開機磁碟的加密功能。
  • 如果建立節點集區時未啟用客戶自行管理的加密金鑰,您就無法在之後啟用開機磁碟加密功能。不過,您可以建立啟用客戶管理加密的新節點集區,然後刪除先前的節點集區。

限制

設定自訂開機磁碟前,請先考量下列限制:

  • C3、G2 和 G4 機器系列不支援 pd-standard 節點開機磁碟類型。

後續步驟