設定自訂開機磁碟


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

總覽

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

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

使用 SSD 開機磁碟的優點

使用 SSD 永久磁碟做為節點的開機磁碟,可以提供一些效能上的效益:

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

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

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

控制台

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

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

    前往「Google Kubernetes Engine」

  2. 按一下「 Create」(建立)

  3. 視需要設定叢集。

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

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

  6. 點選「建立」

如要為現有叢集建立具有自訂開機磁碟的節點集區:

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

    前往「Google Kubernetes Engine」

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

  3. 按一下 「Add Node Pool」(新增節點集區)

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

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

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

  7. 點選「建立」

保護節點開機磁碟

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

如果工作負載使用 configMapemptyDirhostPath 磁碟區,Pod 可能會將額外資料寫入節點開機磁碟。如要停止這項作業,請將 emptyDir 設為由 tmpfs 支援。如要瞭解如何執行這項操作,請參閱 Kubernetes 說明文件。由於 secretdownwardAPIprojected 磁碟區是由 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 寫入節點開機磁碟。

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

客戶自行管理的加密金鑰

如果要自行控制和管理加密金鑰的輪換作業,則可以使用客戶代管加密金鑰 (CMEK)。這些金鑰是用來對加密您資料的資料加密金鑰進行加密。如要瞭解如何對節點開機磁碟使用 CMEK,請參閱「使用客戶管理的加密金鑰」。

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

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

限制

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

後續步驟