# Node-specific Volume Limits

Node-specific Volume LimitsThis page describes the maximum number of volumes that can be attached to a Node for various cloud providers.Cloud providers like Google, Amazon, and Microsoft typically have a limit on how many volumes can be attached to a Node. It is important for Kubernetes to respect those limits. Otherwise, Pods scheduled on a Node could get stuck waiting for volumes to attach.Kubernetes default limitsThe Kubernetes scheduler has default limits on the number of volumes that can be attached to a Node:Cloud serviceMaximum volumes per NodeAmazon Elastic Block Store (EBS)39Google Persistent Disk16Microsoft Azure Disk Storage16Dynamic volume limitsFEATURE STATE: Kubernetes v1.17 [stable]Dynamic volume limits are supported for following volume types.Amazon EBSGoogle Persistent DiskAzure DiskCSIFor volumes managed by in-tree volume plugins, Kubernetes automatically determines the Node type and enforces the appropriate maximum number of volumes for the node. For example:On Google Compute Engine, up to 127 volumes can be attached to a node, depending on the node type.For Amazon EBS disks on M5,C5,R5,T3 and Z1D instance types, Kubernetes allows only 25 volumes to be attached to a Node. For other instance types on Amazon Elastic Compute Cloud (EC2), Kubernetes allows 39 volumes to be attached to a Node.On Azure, up to 64 disks can be attached to a node, depending on the node type. For more details, refer to Sizes for virtual machines in Azure.If a CSI storage driver advertises a maximum number of volumes for a Node (using NodeGetInfo), the kube-scheduler honors that limit. Refer to the CSI specifications for details.For volumes managed by in-tree plugins that have been migrated to a CSI driver, the maximum number of volumes will be the one reported by the CSI driver.Mutable CSI Node Allocatable CountFEATURE STATE: Kubernetes v1.34 [beta] (enabled by default: false)CSI drivers can dynamically adjust the maximum number of volumes that can be attached to a Node at runtime. This enhances scheduling accuracy and reduces pod scheduling failures due to changes in resource availability.To use this feature, you must enable the MutableCSINodeAllocatableCount feature gate on the following components:kube-apiserverkubeletPeriodic UpdatesWhen enabled, CSI drivers can request periodic updates to their volume limits by setting the nodeAllocatableUpdatePeriodSeconds field in the CSIDriver specification. For example:apiVersion: storage.k8s.io/v1 kind: CSIDriver metadata: name: hostpath.csi.k8s.io spec: nodeAllocatableUpdatePeriodSeconds: 60 Kubelet will periodically call the corresponding CSI driver’s NodeGetInfo endpoint to refresh the maximum number of attachable volumes, using the interval specified in nodeAllocatableUpdatePeriodSeconds. The minimum allowed value for this field is 10 seconds.If a volume attachment operation fails with a ResourceExhausted error (gRPC code 8), Kubernetes triggers an immediate update to the allocatable volume count for that Node. Additionally, kubelet marks affected pods as Failed, allowing their controllers to handle recreation. This prevents pods from getting stuck indefinitely in the ContainerCreating state.