节点专属卷限制

此页面描述了可以连接到节点的最大卷数,适用于各种云提供商。

Google、Amazon 和 Microsoft 等云提供商通常限制可以连接到节点的卷数。 Kubernetes 尊重这些限制非常重要。 否则,调度到节点上的 Pod 可能会卡在等待卷连接的状态。

Kubernetes 默认限制

Kubernetes 调度器对可以连接到节点的卷数有默认限制

云服务每个节点的最大卷数
Amazon Elastic Block Store (EBS)39
Google Persistent Disk16
Microsoft Azure Disk Storage16

动态卷限制

功能状态: Kubernetes v1.17 [稳定]

以下卷类型支持动态卷限制。

  • Amazon EBS
  • Google Persistent Disk
  • Azure Disk
  • CSI

对于由树内卷插件管理的卷,Kubernetes 会自动确定节点类型并强制执行该节点适当的最大卷数。 例如

  • Google Compute Engine 上,最多可以连接 127 个卷到节点,具体取决于节点类型

  • 对于 Amazon EBS 磁盘在 M5、C5、R5、T3 和 Z1D 实例类型上,Kubernetes 仅允许将 25 个卷连接到节点。 对于 Amazon Elastic Compute Cloud (EC2) 上的其他实例类型,Kubernetes 允许将 39 个卷连接到节点。

  • 在 Azure 上,最多可以连接 64 个磁盘到节点,具体取决于节点类型。 有关详细信息,请参阅 Azure 虚拟机大小

  • 如果 CSI 存储驱动程序通告了节点的卷的最大数量(使用 NodeGetInfo),则 kube-scheduler 会遵守该限制。 有关详细信息,请参阅 CSI 规范

  • 对于由树内插件管理的已迁移到 CSI 驱动程序的卷,最大卷数将由 CSI 驱动程序报告的卷数。

可变的 CSI 节点可分配计数

特性状态: Kubernetes v1.35 [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 将定期调用相应 CSI 驱动程序的 NodeGetInfo 端点,以使用 nodeAllocatableUpdatePeriodSeconds 中指定的间隔刷新可连接的最大卷数。 此字段的允许最小值是 10 秒。

如果卷附加操作因 ResourceExhausted 错误(gRPC 代码 8)而失败,Kubernetes 会立即触发该节点的可用卷数的更新。 此外,kubelet 会将受影响的 Pod 标记为 Failed,允许其控制器处理重新创建。 这可以防止 Pod 在 ContainerCreating 状态下无限期地卡住。

防止在没有 CSI 驱动程序的情况下放置 Pod

特性状态: Kubernetes v1.35 [alpha](默认禁用)

如果启用了 VolumeLimitScaling 特性门控 并且安装了相应的 CSIDriver 对象,则调度器将防止将 Pod 放置到尚未安装 CSI 驱动程序的节点。 此限制仅适用于需要相应 CSI 卷的 Pod。

上次修改时间为 2025 年 12 月 02 日下午 9:34 PST:添加 KEP-5030 更改的文档 (#52893) (bf510474aa)