Skip to content

Commit bce3556

Browse files
committed
storage capacity: mutable CSIDriverSpec field
The field is meant to be mutable in 1.23 (kubernetes/kubernetes#101789). While at it, document the pending issue with cluster autoscaler as a gating item for GA graduation.
1 parent b01bca9 commit bce3556

File tree

1 file changed

+21
-1
lines changed
  • keps/sig-storage/1472-storage-capacity-tracking

1 file changed

+21
-1
lines changed

keps/sig-storage/1472-storage-capacity-tracking/README.md

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -479,6 +479,24 @@ involve volumes that need to be created by the driver.
479479
If not set or false, the scheduler makes such decisions without considering
480480
whether the driver really can create the volumes (the current situation).
481481

482+
This field was initially immutable for the sake of consistency with
483+
the other fields. Deployments of a CSI driver had to delete and
484+
recreate the object to switch from "feature disabled" to "feature
485+
enabled". This turned out to be problematic:
486+
- Seamless upgrades from a driver version without support of the feature
487+
to a version with support is harder (`kubectl apply` fails, operators
488+
need special cases to handle `CSIDriver`).
489+
- Rolling out a driver without delaying pod scheduling and later
490+
enabling the check when the driver had published
491+
`CSIStorageCapacity` objects had to be done such that the driver was
492+
temporarily active without a `CSIDriver` object, which may have
493+
affected other aspects like skipping attach.
494+
495+
Starting with Kubernetes 1.23, the field can be modified. Clients
496+
that assume that it is immutable work as before. The only consumer
497+
is the Kubernetes scheduler. It supports mutability because it always
498+
uses the current `CSIDriver` object from the informer cache.
499+
482500
### Updating capacity information with external-provisioner
483501

484502
Most (if not all) CSI drivers already get deployed on Kubernetes
@@ -788,6 +806,7 @@ checks for events that describe the problem.
788806
- 5 installs
789807
- More rigorous forms of testing e.g., downgrade tests and scalability tests
790808
- Allowing time for feedback
809+
- Integration with [Cluster Autoscaler](https://github.com/kubernetes/autoscaler)
791810

792811
### Upgrade / Downgrade Strategy
793812

@@ -1079,7 +1098,8 @@ to `CSIStorageCapacity` objects.
10791098
## Implementation History
10801099

10811100
- Kubernetes 1.19: alpha
1082-
1101+
- Kubernetes 1.21: beta
1102+
- Kubernetes 1.23: `CSIDriver.Spec.StorageCapacity` became mutable.
10831103

10841104
## Drawbacks
10851105

0 commit comments

Comments
 (0)