Remove regression for GP3 storage classes below 3000 IOPS #1879
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Is this a bug fix or adding new feature?
bug fix
What is this PR about? / Why do we need it?
This regression first appears in v1.12.0 of the driver, and blocks workloads (pods, deployments, stateful-sets) that dynamically provision GP3 volumes but explicitly specify an IOPS below the GP3 minimum of 3000.
In other words, the workload produced from the following manifests will run when driver v1.8 is deployed, but NOT when v1.25 is deployed.
If these K8s objects were created while v1.8.0 of the driver is deployed
If these K8s objects were created while v1.25.0 of the driver is deployed
FailedScheduling... pod has unbound immediate PersistentVolumeClaims
Warning ProvisioningFailed... ebs.csi.aws.com_ebs-csi-controller... failed to provision volume with StorageClass "ebs-sc": rpc error: code = Internal desc =
Could not create volume "pvc-5a995c47-4620-4615-b020-3d55cdbdedd0": invalid IOPS: 1500 is too low, it must be at least 3000
That error,
Could not create volume... invalid IOPS: 1500 is too low, it must be at least 3000
comes from the driver prematurely failing the CreateVolume rpc call, not from the EC2 API itself.V1.25.0 of the driver never tried calling EC2 CreateVolume (with
--volume-type gp3 --size 8 --iops 1500
)Had the driver called EC2 CreateVolume, a GP3 volume with the minimum 3000 IOPS would have been created* (This is what happens with v1.8.0)
EC2 CLI example: An EC2 CreateVolume API Call with size=8Gi, iops=1500 succeeds.
What testing is done?
make test
& manual testing (will post logs Dec 22)