Skip to content

Commit 67eeb4d

Browse files
authored
Merge pull request #54021 from torredil/main
sig-storage: Mutable CSI Node Allocatable Blog Graduates to GA
2 parents c54c84d + 011b90e commit 67eeb4d

File tree

1 file changed

+110
-0
lines changed

1 file changed

+110
-0
lines changed
Lines changed: 110 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,110 @@
1+
---
2+
layout: blog
3+
title: "Kubernetes v1.36: Mutable CSI Node Allocatable Graduates to GA"
4+
date: 2026-01-14T10:30:00-08:00
5+
slug: kubernetes-v1-36-mutable-csi-node-allocatable-ga
6+
draft: true
7+
author: Eddie Torres (Amazon Web Services)
8+
---
9+
10+
On behalf of Kubernetes SIG Storage, I am pleased to announce that the
11+
_mutable CSI node allocatable count_ feature has graduated to General
12+
Availability (GA) in Kubernetes v1.36!
13+
14+
This feature, first introduced as alpha in Kubernetes v1.33 and promoted to beta in
15+
v1.34, allows [Container Storage Interface
16+
(CSI)](https://kubernetes-csi.github.io/docs/introduction.html) drivers to
17+
dynamically update the reported maximum number of volumes that a node can handle.
18+
This capability significantly enhances the accuracy of pod scheduling decisions
19+
and reduces scheduling failures caused by outdated volume capacity information.
20+
21+
## Background
22+
23+
Traditionally, Kubernetes CSI drivers report a static maximum volume attachment
24+
limit when initializing. However, actual attachment capacities can change during
25+
a node's lifecycle for various reasons, such as:
26+
27+
- Manual or external operations attaching/detaching volumes outside of Kubernetes control.
28+
- Dynamically attached network interfaces or specialized hardware (GPUs, NICs,
29+
etc.) consuming available slots.
30+
- Multi-driver scenarios, where one CSI driver's operations affect available
31+
capacity reported by another.
32+
33+
Static reporting can cause Kubernetes to schedule pods onto nodes that appear to
34+
have capacity but don't, leading to pods stuck in a `ContainerCreating` state.
35+
36+
## Dynamically adapting CSI volume limits
37+
38+
With this feature now GA, Kubernetes enables CSI drivers to dynamically adjust
39+
and report node attachment capacities at runtime. This ensures that the
40+
scheduler, as well as other components relying on this information, have the
41+
most accurate, up-to-date view of node capacity.
42+
43+
### How it works
44+
45+
Kubernetes supports two mechanisms for updating the reported node volume limits:
46+
47+
- **Periodic Updates:** CSI drivers specify an interval to periodically refresh
48+
the node's allocatable capacity.
49+
- **Reactive Updates:** An immediate update triggered when a volume attachment
50+
fails due to exhausted resources (`ResourceExhausted` error).
51+
52+
### Example CSI driver configuration
53+
54+
Below is an example of configuring a CSI driver to enable periodic updates every 60 seconds:
55+
56+
```yaml
57+
apiVersion: storage.k8s.io/v1
58+
kind: CSIDriver
59+
metadata:
60+
name: example.csi.k8s.io
61+
spec:
62+
nodeAllocatableUpdatePeriodSeconds: 60
63+
```
64+
65+
This configuration directs kubelet to periodically call the CSI driver's
66+
`NodeGetInfo` method every 60 seconds, updating the node's allocatable volume
67+
count. Kubernetes enforces a minimum update interval of 10 seconds to balance
68+
accuracy and resource usage.
69+
70+
### Immediate updates on attachment failures
71+
72+
When a volume attachment operation fails due to a `ResourceExhausted` error
73+
(gRPC code `8`), Kubernetes immediately updates the allocatable count instead of
74+
waiting for the next periodic update. The kubelet then marks the affected pods
75+
as Failed, enabling their controllers to recreate them. This prevents pods from
76+
getting permanently stuck in the `ContainerCreating` state.
77+
78+
## What's new in GA
79+
80+
With the graduation to GA in Kubernetes v1.36, the
81+
`MutableCSINodeAllocatableCount` feature gate is unconditionally enabled
82+
and cannot be disabled. For any cluster running Kubernetes v1.36 or
83+
later:
84+
85+
- The `.spec.drivers[*].allocatable.count` field of a CSINode is
86+
mutable.
87+
- The `nodeAllocatableUpdatePeriodSeconds` field is available in the
88+
CSIDriver spec.
89+
90+
## Getting started
91+
92+
To take advantage of this feature in your Kubernetes v1.36 cluster:
93+
94+
1. Update your CSI driver configuration by setting
95+
`nodeAllocatableUpdatePeriodSeconds` to your desired update interval.
96+
2. Monitor and observe improvements in scheduling accuracy and pod placement reliability.
97+
98+
## References
99+
100+
- [KEP-4876: Mutable CSI Node Allocatable Count](https://kep.k8s.io/4876)
101+
- [Alpha Release Blog (v1.33)](/blog/2025/05/02/kubernetes-1-33-mutable-csi-node-allocatable-count/)
102+
- [Beta Release Blog (v1.34)](/blog/2025/09/11/kubernetes-v1-34-mutable-csi-node-allocatable-count/)
103+
104+
## Getting involved
105+
106+
This feature was driven by the [SIG
107+
Storage](https://github.com/kubernetes/community/tree/master/sig-storage)
108+
community. Please join us to connect with the community and share your ideas
109+
and feedback around the above feature and beyond. We look forward to hearing
110+
from you!

0 commit comments

Comments
 (0)