節點特定卷限制
本頁面描述了不同雲提供商可以附加到節點的最大卷數。
像 Google、Amazon 和 Microsoft 這樣的雲提供商通常對可以附加到節點的卷數有限制。Kubernetes 尊重這些限制非常重要。否則,排程到節點上的 Pod 可能會卡住,等待卷附加。
Kubernetes 預設限制
Kubernetes 排程器對可以附加到節點的卷數有預設限制
雲服務 | 每個節點的最大卷數 |
---|---|
Amazon Elastic Block Store (EBS) | 39 |
Google 持久磁碟 | 16 |
Microsoft Azure 磁碟儲存 | 16 |
動態卷限制
以下卷型別支援動態卷限制。
- 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
狀態。