节点特定卷限制
本页面描述了不同云提供商可以附加到节点的最大卷数。
像 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
状态。