Skip to content

Commit 94c882e

Browse files
committed
storage capacity tracking: GA
1 parent f7583a7 commit 94c882e

File tree

3 files changed

+38
-29
lines changed

3 files changed

+38
-29
lines changed
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
11
kep-number: 1472
22
beta:
33
approver: "@wojtek-t"
4+
stable:
5+
approver: "@wojtek-t"

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

Lines changed: 27 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -77,10 +77,10 @@ Items marked with (R) are required *prior to targeting to a milestone / release*
7777
- [X] (R) Test plan is in place, giving consideration to SIG Architecture and SIG Testing input
7878
- [X] (R) Graduation criteria is in place
7979
- [X] (R) Production readiness review completed
80-
- [ ] Production readiness review approved
81-
- [ ] "Implementation History" section is up-to-date for milestone
82-
- [ ] User-facing documentation has been created in [kubernetes/website], for publication to [kubernetes.io]
83-
- [ ] Supporting documentation e.g., additional design documents, links to mailing list discussions/SIG meetings, relevant PRs/issues, release notes
80+
- [X] Production readiness review approved
81+
- [X] "Implementation History" section is up-to-date for milestone
82+
- [X] User-facing documentation has been created in [kubernetes/website], for publication to [kubernetes.io]
83+
- [X] Supporting documentation e.g., additional design documents, links to mailing list discussions/SIG meetings, relevant PRs/issues, release notes
8484

8585
<!--
8686
**Note:** This checklist is iterative and should be reviewed and updated every time this enhancement is being considered for a milestone.
@@ -806,7 +806,7 @@ checks for events that describe the problem.
806806
- 5 installs
807807
- More rigorous forms of testing e.g., downgrade tests and scalability tests
808808
- Allowing time for feedback
809-
- Integration with [Cluster Autoscaler](https://github.com/kubernetes/autoscaler)
809+
- Design for support in [Cluster Autoscaler](https://github.com/kubernetes/autoscaler)
810810

811811
### Upgrade / Downgrade Strategy
812812

@@ -842,15 +842,14 @@ enhancement:
842842
### Feature enablement and rollback
843843

844844
* **How can this feature be enabled / disabled in a live cluster?**
845-
- [X] Feature gate
846-
- Feature gate name: CSIStorageCapacity
847-
- Components depending on the feature gate:
848-
- apiserver
845+
- [X] CSIDriver.StorageCapacity field can be modified
846+
- Components depending on the field:
849847
- kube-scheduler
850848

851849
* **Does enabling the feature change any default behavior?**
852850

853-
Enabling it only in kube-scheduler and api-server and not any of the
851+
Enabling it only in kube-scheduler and api-server by updating
852+
to a Kubernetes version where it is enabled and not in any of the
854853
running CSI drivers causes no changes. Everything continues as
855854
before because no `CSIStorageCapacity` objects are created and
856855
kube-scheduler does not wait for any.
@@ -861,12 +860,19 @@ enhancement:
861860

862861
* **Can the feature be disabled once it has been enabled (i.e. can we rollback
863862
the enablement)?**
864-
Yes.
865863

866-
In Kubernetes 1.19 and 1.20, registration of the
867-
`CSIStorageCapacity` type was controlled by the feature gate. In
868-
1.21, the type will always be enabled in the v1beta1 API
869-
group. Depending on the combination of Kubernetes release and
864+
Yes, by disabling it in the CSI driver deployment:
865+
`CSIDriver.StorageCapacity=false` causes kube-scheduler to ignore storage
866+
capacity for the driver. In addition, external-provisioner can be deployed so
867+
that it does not publish capacity information (`--enable-capacity=false`).
868+
869+
Downgrading to a previous Kubernetes release may also disable the feature or
870+
allow disabling it via a feature gate: In Kubernetes 1.19 and 1.20,
871+
registration of the `CSIStorageCapacity` type was controlled by the feature
872+
gate. In 1.21, the type will always be enabled in the v1beta1 API group. In
873+
1.24, the type is always enabled in the v1 API unconditionally.
874+
875+
Depending on the combination of Kubernetes release and
870876
feature gate, the type will be disabled. However, any existing
871877
objects will still remain in the etcd database, they just won't be
872878
visible.
@@ -934,7 +940,7 @@ consumption, increased latency), specifically
934940

935941
* **Were upgrade and rollback tested? Was upgrade->downgrade->upgrade path tested?**
936942

937-
Not yet, but will be done manually before transition to beta.
943+
This was done manually before transition to beta.
938944

939945
* **Is the rollout accompanied by any deprecations and/or removals of features,
940946
APIs, fields of API types, flags, etc.?**
@@ -951,18 +957,16 @@ scheduling workloads onto nodes, but not while those run.
951957
That a CSI driver provides storage capacity information can seen in the
952958
following metric data that will be provided by external-provisioner instances:
953959
- total number of `CSIStorageCapacity` objects that the external-provisioner
954-
is currently meant to manage for the driver
960+
is currently meant to manage for the driver: `csistoragecapacities_desired_goal`
955961
- number of such objects that currently exist and can be kept because
956-
they have a topology/storage class pair that is still valid
962+
they have a topology/storage class pair that is still valid: `csistoragecapacities_desired_current`
957963
- number of such objects that currently exist and need to be deleted
958-
because they have an outdated topology/storage class pair
959-
- work queue length for creating, updating or deleting objects
964+
because they have an outdated topology/storage class pair: `csistoragecapacities_obsolete`
965+
- work queue length for creating, updating or deleting objects: `csistoragecapacity` work queue
960966

961967
The CSI driver name will be used as label. When using distributed
962968
provisioning, the node name will be used as additional label.
963969

964-
TODO: mention the exact metrics names once they are implemented.
965-
966970
* **What are the SLIs (Service Level Indicators) an operator can use to
967971
determine the health of the service?**
968972

@@ -1100,6 +1104,7 @@ to `CSIStorageCapacity` objects.
11001104
- Kubernetes 1.19: alpha
11011105
- Kubernetes 1.21: beta
11021106
- Kubernetes 1.23: `CSIDriver.Spec.StorageCapacity` became mutable.
1107+
- Kubernetes 1.24: GA
11031108

11041109
## Drawbacks
11051110

keps/sig-storage/1472-storage-capacity-tracking/kep.yaml

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -17,21 +17,23 @@ approvers:
1717
- "@msau42"
1818
prr-approvers:
1919
- "@wojtek-t"
20-
stage: beta
20+
stage: stable
2121
see-also:
2222
- "https://docs.google.com/document/d/1WtX2lRJjZ03RBdzQIZY3IOvmoYiF5JxDX35-SsCIAfg"
23-
latest-milestone: "v1.21"
23+
latest-milestone: "v1.24"
2424
milestone:
2525
alpha: "v1.19"
2626
beta: "v1.21"
27-
stable: "v1.23"
27+
stable: "v1.24"
2828
feature-gates:
2929
- name: CSIStorageCapacity
3030
components:
3131
- kube-apiserver
3232
- kube-scheduler
33-
disable-supported: true
33+
disable-supported: false
3434

35-
# The following PRR answers are required at beta release
36-
#metrics:
37-
# - my_feature_metric
35+
metrics:
36+
- csistoragecapacities_desired_goal
37+
- csistoragecapacities_desired_current
38+
- csistoragecapacities_obsolete
39+
- csistoragecapacity work queue

0 commit comments

Comments
 (0)