本文說明 Google Kubernetes Engine (GKE) 節點上,Compute Engine 永久磁碟和 Hyperdisk 的永久磁碟附加限制運作方式。如要正確排定工作負載時間表及調整節點集區大小,請務必瞭解可附加至 GKE 節點的永久磁碟數量上限。如要進一步控管工作負載排程,尤其是在單一執行個體上使用多種磁碟類型,且附加限制各不相同時,可以使用節點標籤覆寫預設附加限制。
本文適用對象為負責建立及分配儲存空間的儲存空間專家,以及管理工作負載排程和節點集區大小的 GKE 管理員。如要進一步瞭解 Trusted Cloud by S3NS 內容中提及的常見角色和範例工作,請參閱「常見的 GKE Enterprise 使用者角色和工作」。
總覽
在 GKE 中,使用 Compute Engine 永久磁碟 CSI 驅動程式 (pd.csi.storage.gke.io
) 要求 PersistentVolume (PV) 時,系統會從 Trusted Cloud 永久磁碟服務佈建區塊儲存空間磁碟區。
在 GKE 叢集啟用 Compute Engine Persistent Disk CSI 驅動程式 (PDCSI) 時,PDCSI 驅動程式會計算每個節點的永久磁碟區連結限制,並向 kubelet 回報。Kubernetes 排程器會根據這項資訊做出排程決策,確保不會在已達附加容量的節點上,排程過多需要永久磁碟區的 Pod。如果 PDCSI 驅動程式回報的附加限制不準確 (具體來說,回報的數字高於實際限制),Pod 就無法排程,會停留在 Pending
狀態。這類情況可能發生在第三代機器類型 (例如 C3),因為這類機器類型對 Hyperdisk 和永久磁碟的附加限制不同。
瞭解永久磁碟區的附加限制
如為第四代以前的機器,Compute Engine PDCSI 驅動程式會為所有機器類型設定 128 個磁碟的匯總永久磁碟連接上限 (127 個資料磁碟加上一個開機磁碟)。附加限制適用於 Persistent Disk 和 Hyperdisk 磁碟區的總和。對於 Hyperdisk,附加限制取決於基礎 Compute Engine 機器類型、機器擁有的 vCPU 數量,以及特定 Hyperdisk 類型。
例如:
- 對於 C4 等第四代機器類型,PDCSI 驅動程式會準確向 Kubernetes 回報預設的附加限制,該限制是根據節點的 vCPU 數量計算而得。回報的附加限制通常介於 8 到 128 個持續性磁碟區。
- 相較之下,對於 C3 等第三代機型,PDCSI 驅動程式會向 Kubernetes 回報固定限制 (128 個磁碟) 做為預設附加限制,但實際限制可能低於 128 個 (視 vCPU 數量而定),因此可能導致 Pod 排程失敗。
您可以使用節點標籤覆寫預設的附加限制。
請參閱 Compute Engine 說明文件中的下列實用資源:
- 如要瞭解可用的 Compute Engine 機器世代,請參閱「Compute Engine 術語」一節中的表格。
- 如需機器類型及其相容永久磁碟類型的清單,請參閱「機器系列支援」。
- 如要瞭解不同 Hyperdisk 類型在不同 CPU 數量下的 Hyperdisk 附加數量上限,請參閱「每個 VM 的 Hyperdisk 磁碟區數量上限」。
- 如要瞭解 Hyperdisk 連結限制如何套用至節點,請參閱 Hyperdisk VM 限制摘要。
覆寫預設的永久磁碟區附加限制
如果您有特定需求或節點設定,想為節點附加特定數量的永久磁碟,可以使用下列節點標籤,覆寫節點集區的預設永久磁碟附加限制: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-node
DaemonSet:kubectl rollout restart ds pdcsi-node -n kube-system
pdcsi-node
Pods 處於Running
狀態後,就會套用新的附加限制。
更改下列內容:
NODE_POOL_NAME
:要建立或更新的節點集區名稱。CLUSTER_NAME
:要建立或更新節點集區的叢集名稱。VALUE
:介於0
和127
之間的整數,用來指定可附加的新永久磁碟區數量。如果指定的值大於 127,系統會忽略節點標籤,PDCSI 驅動程式會改用預設的永久磁碟區附加限制。第三代機器的預設上限為 128,第四代機器的預設上限則是以 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
容量,該容量應與您為節點集設定的覆寫值相符。詳情請參閱「檢查節點上可分配的資源」。