本頁說明如何在 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-ssdhyperdisk-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 控制台建立叢集時選取開機磁碟,請按照下列步驟操作:
前往 Google Cloud 控制台的「Create a Kubernetes cluster」(建立 Kubernetes 叢集) 頁面。
視需要設定叢集。
展開導覽選單中的「default-pool」,然後按一下「Nodes」。
在「Boot disk type」(開機磁碟類型) 下拉式選單中,選取永久磁碟類型。
點選「建立」。
如要為現有叢集建立具有自訂開機磁碟的節點集區,請按照下列步驟操作:
前往 Google Cloud 控制台的「Google Kubernetes Engine」頁面。
在叢集清單中,按一下您要修改的叢集名稱。
按一下「Nodes」(節點) 分頁標籤。
按一下「建立由使用者管理的節點集區」add_box。
視需要設定節點集區。
按一下導覽選單中的「節點」。
在「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限制範本定義限制,禁止使用下列磁碟區類型:configMapemptyDir(如果不是由 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 限制是,節點集區建立後即無法變更。也就是說:
- 如果節點集區是使用客戶自行管理的加密金鑰建立,您就無法在之後停用開機磁碟的加密功能。
- 如果建立節點集區時未啟用客戶自行管理的加密金鑰,您就無法在之後啟用開機磁碟加密功能。不過,您可以建立啟用客戶管理加密的新節點集區,然後刪除先前的節點集區。
限制
設定自訂開機磁碟前,請先考量下列限制: