GKE 節點的永久磁碟區附加限制

本文說明 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 說明文件中的下列實用資源:

覆寫預設永久磁碟區連結限制

如果您有特定需求或節點設定,想為節點附加特定數量的永久磁碟,可以使用下列節點標籤,覆寫節點集區的預設永久磁碟附加限制: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

現有節點集區

如要修改現有節點集區目前的永久磁碟附加限制,請按照下列步驟操作:

  1. 更新節點集區的附加限制:

    gcloud container node-pools update NODE_POOL_NAME \
        --cluster=CLUSTER_NAME \
        --node-labels=node-restriction.kubernetes.io/gke-volume-attach-limit-override=VALUE
    
  2. 重新啟動 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 驅動程式會改用預設的永久磁碟區附加限制。第 3 代機器的預設上限為 128,第 4 代機器的預設上限則是以 vCPU 數量為準。

驗證覆寫

如要確認覆寫是否正確套用,請檢查節點標籤和節點容量。

在下列指令中,請將 NODE_NAME 替換為節點名稱,該節點屬於您套用覆寫節點標籤的特定節點集區。

  1. 檢查節點標籤:

    kubectl get node NODE_NAME --show-labels
    

    輸出內容應包含 node-restriction.kubernetes.io/gke-volume-attach-limit-override 標籤。

  2. 檢查節點容量:

    kubectl describe node NODE_NAME
    

    輸出內容應包含 attachable-volumes-gce-pd 容量,且應與您為節點集區設定的覆寫值相符。詳情請參閱「檢查節點的可分配資源」。

後續步驟