節點特定卷限制

本頁面描述了不同雲提供商可以附加到節點的最大卷數。

像 Google、Amazon 和 Microsoft 這樣的雲提供商通常對可以附加到節點的卷數有限制。Kubernetes 尊重這些限制非常重要。否則,排程到節點上的 Pod 可能會卡住,等待卷附加。

Kubernetes 預設限制

Kubernetes 排程器對可以附加到節點的卷數有預設限制

雲服務每個節點的最大卷數
Amazon Elastic Block Store (EBS)39
Google 持久磁碟16
Microsoft Azure 磁碟儲存16

動態卷限制

功能狀態: `Kubernetes v1.17 [穩定]`

以下卷型別支援動態卷限制。

  • Amazon EBS
  • Google 持久磁碟
  • Azure 磁碟
  • CSI

對於由樹內卷外掛管理的卷,Kubernetes 會自動確定節點型別,併為該節點強制執行適當的最大卷數。例如:

  • Google Compute Engine 上,最多可以將 127 個卷附加到節點,具體取決於節點型別

  • 對於 M5、C5、R5、T3 和 Z1D 例項型別的 Amazon EBS 磁碟,Kubernetes 僅允許將 25 個卷附加到節點。對於 Amazon Elastic Compute Cloud (EC2) 上的其他例項型別,Kubernetes 允許將 39 個卷附加到節點。

  • 在 Azure 上,最多可以將 64 個磁碟附加到節點,具體取決於節點型別。有關更多詳細資訊,請參閱 Azure 虛擬機器大小

  • 如果 CSI 儲存驅動程式(使用 NodeGetInfo)聲明瞭節點的最大卷數,則 kube-scheduler 將遵守該限制。有關詳細資訊,請參閱 CSI 規範

  • 對於已遷移到 CSI 驅動程式的樹內外掛管理的卷,最大卷數將是 CSI 驅動程式報告的卷數。

可變 CSI 節點可分配計數

特性狀態: Kubernetes v1.34 [beta] (預設停用)

CSI 驅動程式可以在執行時動態調整可以附加到節點的最大卷數。這提高了排程準確性,並減少了由於資源可用性變化導致的 Pod 排程失敗。

要使用此功能,你必須在以下元件上啟用 MutableCSINodeAllocatableCount 特性門:

  • kube-apiserver
  • kubelet

定期更新

啟用後,CSI 驅動程式可以透過在 CSIDriver 規範中設定 nodeAllocatableUpdatePeriodSeconds 欄位來請求定期更新其卷限制。例如:

apiVersion: storage.k8s.io/v1
kind: CSIDriver
metadata:
  name: hostpath.csi.k8s.io
spec:
  nodeAllocatableUpdatePeriodSeconds: 60

Kubelet 將使用 nodeAllocatableUpdatePeriodSeconds 中指定的間隔定期呼叫相應的 CSI 驅動程式的 NodeGetInfo 端點,以重新整理最大可附加捲數。此欄位允許的最小值為 10 秒。

如果卷附加操作因 ResourceExhausted 錯誤(gRPC 程式碼 8)而失敗,Kubernetes 將觸發對該節點的可分配卷計數進行即時更新。此外,kubelet 將受影響的 Pod 標記為 Failed,允許其控制器處理重新建立。這可以防止 Pod 無限期地卡在 ContainerCreating 狀態。

上次修改於 2025 年 8 月 28 日太平洋標準時間下午 3:32:清理關於 `KUBE_MAX_PD_VOLS` 環境變數的文件 (2c88dc6da9)