@@ -77,10 +77,10 @@ Items marked with (R) are required *prior to targeting to a milestone / release*
77
77
- [X] (R) Test plan is in place, giving consideration to SIG Architecture and SIG Testing input
78
78
- [X] (R) Graduation criteria is in place
79
79
- [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
84
84
85
85
<!--
86
86
**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.
806
806
- 5 installs
807
807
- More rigorous forms of testing e.g., downgrade tests and scalability tests
808
808
- 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 )
810
810
811
811
### Upgrade / Downgrade Strategy
812
812
@@ -847,10 +847,14 @@ enhancement:
847
847
- Components depending on the feature gate:
848
848
- apiserver
849
849
- kube-scheduler
850
+ - [X] CSIDriver.StorageCapacity field can be modified
851
+ - Components depending on the field:
852
+ - kube-scheduler
850
853
851
854
* ** Does enabling the feature change any default behavior?**
852
855
853
- Enabling it only in kube-scheduler and api-server and not any of the
856
+ Enabling it only in kube-scheduler and api-server by updating
857
+ to a Kubernetes version where it is enabled and not in any of the
854
858
running CSI drivers causes no changes. Everything continues as
855
859
before because no ` CSIStorageCapacity ` objects are created and
856
860
kube-scheduler does not wait for any.
@@ -861,12 +865,19 @@ enhancement:
861
865
862
866
* ** Can the feature be disabled once it has been enabled (i.e. can we rollback
863
867
the enablement)?**
864
- Yes.
865
868
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
869
+ Yes, by disabling it in the CSI driver deployment:
870
+ ` CSIDriver.StorageCapacity=false ` causes kube-scheduler to ignore storage
871
+ capacity for the driver. In addition, external-provisioner can be deployed so
872
+ that it does not publish capacity information (` --enable-capacity=false ` ).
873
+
874
+ Downgrading to a previous Kubernetes release may also disable the feature or
875
+ allow disabling it via a feature gate: In Kubernetes 1.19 and 1.20,
876
+ registration of the ` CSIStorageCapacity ` type was controlled by the feature
877
+ gate. In 1.21, the type will always be enabled in the v1beta1 API group. In
878
+ 1.24, the type is always enabled in the v1 API unconditionally.
879
+
880
+ Depending on the combination of Kubernetes release and
870
881
feature gate, the type will be disabled. However, any existing
871
882
objects will still remain in the etcd database, they just won't be
872
883
visible.
@@ -893,8 +904,10 @@ enhancement:
893
904
* ** Are there any tests for feature enablement/disablement?**
894
905
The e2e framework does not currently support enabling and disabling feature
895
906
gates. However, unit tests in each component dealing with managing data created
896
- with and without the feature are necessary and will be added before
897
- before the transition to beta.
907
+ with and without the feature are necessary and were added before
908
+ before the transition to beta, for example
909
+ [ in the apiserver] ( https://github.com/kubernetes/kubernetes/blob/v1.21.0/pkg/apis/storage/validation/validation_test.go#L2091-L2131 )
910
+ and the [ volume binder] ( https://github.com/kubernetes/kubernetes/blob/v1.21.0/test/integration/volumescheduling/volume_binding_test.go#L706-L709 ) .
898
911
899
912
### Rollout, Upgrade and Rollback Planning
900
913
@@ -934,7 +947,9 @@ consumption, increased latency), specifically
934
947
935
948
* ** Were upgrade and rollback tested? Was upgrade->downgrade->upgrade path tested?**
936
949
937
- Not yet, but will be done manually before transition to beta.
950
+ This was done manually before transition to beta in a kubeadm-based cluster
951
+ running on VMs. The experiment confirmed that rollback and re-enabling works
952
+ as described above, with no unexpected behavior.
938
953
939
954
* ** Is the rollout accompanied by any deprecations and/or removals of features,
940
955
APIs, fields of API types, flags, etc.?**
@@ -951,18 +966,16 @@ scheduling workloads onto nodes, but not while those run.
951
966
That a CSI driver provides storage capacity information can seen in the
952
967
following metric data that will be provided by external-provisioner instances:
953
968
- total number of ` CSIStorageCapacity ` objects that the external-provisioner
954
- is currently meant to manage for the driver
969
+ is currently meant to manage for the driver: ` csistoragecapacities_desired_goal `
955
970
- number of such objects that currently exist and can be kept because
956
- they have a topology/storage class pair that is still valid
971
+ they have a topology/storage class pair that is still valid: ` csistoragecapacities_desired_current `
957
972
- 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
973
+ because they have an outdated topology/storage class pair: ` csistoragecapacities_obsolete `
974
+ - work queue length for creating, updating or deleting objects: ` csistoragecapacity ` work queue
960
975
961
976
The CSI driver name will be used as label. When using distributed
962
977
provisioning, the node name will be used as additional label.
963
978
964
- TODO: mention the exact metrics names once they are implemented.
965
-
966
979
* ** What are the SLIs (Service Level Indicators) an operator can use to
967
980
determine the health of the service?**
968
981
@@ -981,7 +994,9 @@ calls will be recorded with their non-OK status code as value.
981
994
The goal is to achieve the same provisioning rates with the feature
982
995
enabled as those that currently can be achieved without it.
983
996
984
- This will need further discussion before going to GA.
997
+ The SLOs depend on the CSI driver and how they are deployed. Therefore SLOs
998
+ cannot be specified in more detail here. Cloud providers will have to determine
999
+ what reasonable values are and document those.
985
1000
986
1001
* ** Are there any missing metrics that would be useful to have to improve
987
1002
observability if this feature?**
@@ -1100,6 +1115,7 @@ to `CSIStorageCapacity` objects.
1100
1115
- Kubernetes 1.19: alpha
1101
1116
- Kubernetes 1.21: beta
1102
1117
- Kubernetes 1.23: ` CSIDriver.Spec.StorageCapacity ` became mutable.
1118
+ - Kubernetes 1.24: GA
1103
1119
1104
1120
## Drawbacks
1105
1121
0 commit comments