本頁面說明如何在 Google Kubernetes Engine (GKE) 叢集和節點集區中,自訂節點開機磁碟。
總覽
建立 GKE 叢集或節點集區時,您可以選擇要為每個節點安裝 Kubernetes 節點檔案系統的 Persistent Disk 類型。根據預設,GKE 1.24 以上版本會使用平衡型永久磁碟。您也可以指定其他永久磁碟類型,例如標準或 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]
舉例來說,下列指令會建立 SSD 永久磁碟類型為 pd-ssd
的叢集 example-cluster
:
gcloud container clusters create example-cluster --disk-type pd-ssd
控制台
如要透過 Google Cloud 控制台建立叢集時選取開機磁碟,請按照下列步驟操作:
前往 Google Cloud 控制台的「Google Kubernetes Engine」頁面。
按一下「add_box Create」(建立)。
視需要設定叢集。
在導覽選單中展開「default-pool」,然後按一下「Nodes」。
在「Boot disk type」(開機磁碟類型) 下拉式清單中,選取永久磁碟類型。
點選「建立」。
如要為現有叢集建立具有自訂開機磁碟的節點集區:
前往 Google Cloud 控制台的「Google Kubernetes Engine」頁面。
在叢集清單中,按一下您要修改的叢集名稱。
按一下 add_box「Add Node Pool」(新增節點集區)。
視需要設定節點集區。
按一下導覽選單中的「節點」。
在「Boot disk type」(開機磁碟類型) 下拉式清單中,選取永久磁碟類型。
點選「建立」。
保護節點開機磁碟
節點開機磁碟預設會儲存容器映像檔、部分系統程序記錄、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 叢集中,大規模宣告及強制執行自訂政策。
- 安裝 Policy Controller。
- 使用
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 限制是,節點集區建立後就無法變更。也就是說:
- 如果節點集區是使用客戶管理的加密功能建立,您就無法隨後停用開機磁碟的加密功能。
- 如果建立節點集區時未啟用客戶管理的加密功能,您就無法在之後啟用開機磁碟的加密功能。不過,您可以建立啟用客戶管理加密的新節點集區,並刪除先前的節點集區。
限制
設定自訂開機磁碟前,請先考量以下限制: