本文說明 Google Kubernetes Engine (GKE) 節點上,Compute Engine 永久磁碟和 Hyperdisk 的永久磁碟附加限制運作方式。為妥善安排工作負載及調整節點集區大小,您必須瞭解可連結至 GKE 節點的永久磁碟區數量上限。如要進一步控管工作負載排程,特別是在單一執行個體上使用多種磁碟類型,且附加限制各不相同時,可以使用節點標籤覆寫預設附加限制。
本文適用於建立及分配儲存空間的儲存空間專家,以及管理工作負載排程和節點集區大小的 GKE 管理員。如要進一步瞭解 Google Cloud 內容中提及的常見角色和範例工作,請參閱「常見的 GKE Enterprise 使用者角色和工作」。
總覽
在 GKE 中,當您使用 Compute Engine 永久磁碟 CSI 驅動程式 (pd.csi.storage.gke.io) 要求 PersistentVolume (PV) 時,系統會從 Google Cloud 永久磁碟服務佈建區塊儲存空間磁碟區。
在 GKE 叢集上啟用 Compute Engine Persistent Disk CSI 驅動程式 (PDCSI) 時,PDCSI 驅動程式會計算每個節點的永久磁碟區附加限制,並向 kubelet 回報。Kubernetes 排程器會根據這項資訊做出排程決策,確保不會在已達附加容量的節點上,排程過多需要永久磁碟區的 Pod。如果 PDCSI 驅動程式回報的附加限制不準確 (具體來說,回報的數字高於實際限制),Pod 就無法排定時間,會停留在 Pending 狀態。如果使用第三代機型 (例如 C3),就可能發生這種情況,因為這類機型的 Hyperdisk 和 Persistent Disk 附加限制不同。
瞭解永久磁碟區的附加限制
如果是第四代之前的機器,Compute Engine PDCSI 驅動程式會將所有機型的永久磁碟區連結匯總限制設為 128 個磁碟 (127 個資料磁碟加上一個開機磁碟)。附加限制適用於 Persistent Disk 和 Hyperdisk 磁碟區的總和。Hyperdisk 的掛接限制取決於基礎 Compute Engine 機型、機器擁有的 vCPU 數量,以及特定 Hyperdisk 類型。
例如:
- 對於 C4 等第四代機型,PDCSI 驅動程式會根據節點的 vCPU 數量計算預設附加限制,並準確回報給 Kubernetes。回報的掛接限制通常介於 8 到 128 個永久磁碟區之間。
- 相較之下,如果是 C3 等第三代機型,PDCSI 驅動程式會向 Kubernetes 回報預設連接限制為固定限制 128 個磁碟,這可能會導致 Pod 排程失敗,因為實際限制可能會低於 128 個磁碟 (視 vCPU 數量而定)。
您可以使用節點標籤覆寫預設連接限制。
請參閱 Compute Engine 說明文件中的下列實用資源:
- 如要瞭解可用的 Compute Engine 機型世代,請參閱「Compute Engine 術語」一節中的表格。
- 如需機器類型及其相容的 Persistent Disk 類型清單,請參閱「機器系列支援」。
- 如要瞭解不同 Hyperdisk 類型的 CPU 數量,以及對應的 Hyperdisk 連接數量上限,請參閱「每個 VM 的 Hyperdisk 磁碟區數量上限」。
- 如要瞭解 Hyperdisk 附加限制如何套用至節點,請參閱「每個 VM 的 Hyperdisk 限制摘要」。
覆寫預設永久磁碟區連結限制
如果您有特定需求或節點設定,想為節點附加特定數量的永久磁碟,可以使用下列節點標籤,覆寫節點集區的預設永久磁碟附加限制:node-restriction.kubernetes.io/gke-volume-attach-limit-override: VALUE。
您可以在下列 GKE 版本使用這個節點標籤:
1.32.4-gke.1698000以上版本。1.33.1-gke.1386000以上版本。
新增節點集區
如要建立新的節點集區,並指定永久磁碟區連結限制,請執行下列指令:
gcloud container node-pools create NODE_POOL_NAME \
--cluster=CLUSTER_NAME \
--node-labels=node-restriction.kubernetes.io/gke-volume-attach-limit-override=VALUE
現有節點集區
如要修改現有節點集區目前的永久磁碟附加限制,請按照下列步驟操作:
更新節點集區的附加限制:
gcloud container node-pools update NODE_POOL_NAME \ --cluster=CLUSTER_NAME \ --node-labels=node-restriction.kubernetes.io/gke-volume-attach-limit-override=VALUE重新啟動
pdcsi-nodeDaemonSet:kubectl rollout restart ds pdcsi-node -n kube-systempdcsi-nodePods 處於Running狀態後,就會套用新的附加限制。
更改下列內容:
NODE_POOL_NAME:要建立或更新的節點集區名稱。CLUSTER_NAME:要建立或更新節點集區的叢集名稱。VALUE:介於0和127之間的整數,用於指定可連接的新永久磁碟區數量。如果指定的值大於 127,系統會忽略節點標籤,PDCSI 驅動程式會改用預設的永久磁碟區附加限制。第 3 代機器的預設上限為 128,第 4 代機器的預設上限則是以 vCPU 數量為準。
驗證覆寫
如要確認覆寫是否正確套用,請檢查節點標籤和節點容量。
在下列指令中,請將 NODE_NAME 替換為節點名稱,該節點屬於您套用覆寫節點標籤的特定節點集區。
檢查節點標籤:
kubectl get node NODE_NAME --show-labels輸出內容應包含
node-restriction.kubernetes.io/gke-volume-attach-limit-override標籤。檢查節點容量:
kubectl describe node NODE_NAME輸出內容應包含
attachable-volumes-gce-pd容量,且應與您為節點集區設定的覆寫值相符。詳情請參閱「檢查節點的可分配資源」。