Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

KEP-3751: Kubernetes VolumeAttributesClass ModifyVolume #3780

Merged
merged 3 commits into from Jun 15, 2023

Conversation

sunnylovestiramisu
Copy link
Contributor

  • One-line PR description: Add capabilities to the Kubernetes Persistent Volume API to allow users dynamically control volume options

/sig storage

@k8s-ci-robot k8s-ci-robot added sig/storage Categorizes an issue or PR as relevant to SIG Storage. cncf-cla: yes Indicates the PR's author has signed the CNCF CLA. labels Jan 25, 2023
@k8s-ci-robot k8s-ci-robot added kind/kep Categorizes KEP tracking issues and PRs modifying the KEP directory size/XL Denotes a PR that changes 500-999 lines, ignoring generated files. labels Jan 25, 2023
@sunnylovestiramisu
Copy link
Contributor Author

cc @gnufied @jingxu97

type: Container
```

QoS should have similar issues to resize (except that we have to solve reducing IO).
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

There should be some description about how current QoS setting in StorageClass parameters will affect namespace quota. Will it get copied (how?) from SCs to PVCs? Will this KEP disallow mixing QoS in StorageClass and in PVCs?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Reading the release note - admission_control_resource_quota.md, it is not so clear to me what is the existing behavior. But I think for the QoS feature, it is risky to trigger an update to force the params within the ResourceQuota etc. Maybe we should design it in a way that does not reduce and only increase Iops/throughput in this situation.

@gnufied
Copy link
Member

gnufied commented Jan 26, 2023

cc @derekwaynecarr

@xing-yang
Copy link
Contributor

keps/sig-storage/3751-volume-provisioned-io/README.md Outdated Show resolved Hide resolved
keps/sig-storage/3751-volume-provisioned-io/README.md Outdated Show resolved Hide resolved
keps/sig-storage/3751-volume-provisioned-io/README.md Outdated Show resolved Hide resolved
keps/sig-storage/3751-volume-provisioned-io/README.md Outdated Show resolved Hide resolved
keps/sig-storage/3751-volume-provisioned-io/README.md Outdated Show resolved Hide resolved
keps/sig-storage/3751-volume-provisioned-io/README.md Outdated Show resolved Hide resolved
keps/sig-storage/3751-volume-provisioned-io/README.md Outdated Show resolved Hide resolved
keps/sig-storage/3751-volume-provisioned-io/README.md Outdated Show resolved Hide resolved
keps/sig-storage/3751-volume-provisioned-io/kep.yaml Outdated Show resolved Hide resolved
keps/sig-storage/3751-volume-provisioned-io/kep.yaml Outdated Show resolved Hide resolved
@k8s-ci-robot k8s-ci-robot added needs-rebase Indicates a PR cannot be merged because it has merge conflicts with HEAD. sig/api-machinery Categorizes an issue or PR as relevant to SIG API Machinery. sig/apps Categorizes an issue or PR as relevant to SIG Apps. sig/auth Categorizes an issue or PR as relevant to SIG Auth. sig/cli Categorizes an issue or PR as relevant to SIG CLI. and removed size/XL Denotes a PR that changes 500-999 lines, ignoring generated files. labels Mar 15, 2023
@k8s-ci-robot k8s-ci-robot added the do-not-merge/hold Indicates that a PR should not merge because someone has issued a /hold command. label Jun 15, 2023
@msau42
Copy link
Member

msau42 commented Jun 15, 2023

Will let @xing-yang give final lgtm

@xing-yang
Copy link
Contributor

/lgtm

@k8s-ci-robot k8s-ci-robot added the lgtm "Looks good to me", indicates that a PR is ready to be merged. label Jun 15, 2023
@xing-yang
Copy link
Contributor

/hold cancel

@k8s-ci-robot k8s-ci-robot removed the do-not-merge/hold Indicates that a PR should not merge because someone has issued a /hold command. label Jun 15, 2023
@johnbelamaric
Copy link
Member

/approve

@k8s-ci-robot
Copy link
Contributor

[APPROVALNOTIFIER] This PR is APPROVED

This pull-request has been approved by: johnbelamaric, msau42, sunnylovestiramisu

The full list of commands accepted by this bot can be found here.

The pull request process is described here

Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@k8s-ci-robot k8s-ci-robot added the approved Indicates a PR has been approved by an approver from all required OWNERS files. label Jun 15, 2023
@k8s-ci-robot k8s-ci-robot merged commit 507de7b into kubernetes:master Jun 15, 2023
4 checks passed
SIG Node PR Triage automation moved this from Needs Reviewer to Done Jun 15, 2023
@k8s-ci-robot k8s-ci-robot added this to the v1.28 milestone Jun 15, 2023
@doubletao318
Copy link

@sunnylovestiramisu What is the difference of VolumeAttributesClass and StorageClass?

@carlory
Copy link
Member

carlory commented Jul 10, 2023

  1. A StorageClass provides a way for administrators to describe the "classes" of storage they offer. Different classes might represent different or same storage vendors. And the StorageClassName field in pvc and pv is immutable after creation once it is set.

  2. A VolumeAttributesClass is a way for administrators to describe the attributes class of volumes they offer. It's independent of storage vendors. Because the VolumeAttributesClass uses the opaque field to store the attributes, so in design, its cannot make sure that all the storage vendors can recognize and support the settings of volumes' attributes. There is no common standard for the attributes of volumes. It is up to the storage vendors to decide what attributes they support. And the VolumeAttributesClass field in pvc is mutable after creation.

  3. The main difference between them is that they are used for different purposes. The StorageClass is used to provision the persistent volumes, and the VolumeAttributesClass is used to set the mutable attributes of volumes. i.e. IOPS and Throughput of volumes.

  4. It's difficult to make the parameters field of the StorageClass mutable. And it's impossible to make the storageClassName field of the PersistentVolumeClaim mutable. So we need a new object to set the mutable attributes of volumes. And the VolumeAttributesClass is the best choice.

@carlory
Copy link
Member

carlory commented Jul 10, 2023

If I misunderstood your question and the KEP, please correct me. Thanks!

cc @doubletao318 @sunnylovestiramisu

@doubletao318
Copy link

@carlory
Thanks for your answer.

  1. Now, most storage vendor provider the volume attributes in StorageClass, such as qos. Now we support VolumeAttributesClass, I think it is a challange for them.
  2. For qos self, I also think there should one CR like StorageQoS, so the user can change QoS in PV level or in all PV level.

@carlory
Copy link
Member

carlory commented Jul 14, 2023

If you're interested in the implementation of the feature, you can find it in the github project. And we encourage some people to join us to implement the feature.

@PrasanaaV
Copy link

Hello, when I click on the link, I have a 404 error page. Sorry I am quite new to Kubernetes and opensource project.

@sunnylovestiramisu
Copy link
Contributor Author

@PrasanaaV Since you are not a member of kubernetes-csi, you cannot see the board, if you want to apply for membership you can go through the application process.

However you can still see the open issues in k/k issues page related to this kep by searching "KEP-3751". You should be able to see those unassigned tasks.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
approved Indicates a PR has been approved by an approver from all required OWNERS files. cncf-cla: yes Indicates the PR's author has signed the CNCF CLA. kind/kep Categorizes KEP tracking issues and PRs modifying the KEP directory lgtm "Looks good to me", indicates that a PR is ready to be merged. sig/api-machinery Categorizes an issue or PR as relevant to SIG API Machinery. sig/apps Categorizes an issue or PR as relevant to SIG Apps. sig/cli Categorizes an issue or PR as relevant to SIG CLI. sig/cluster-lifecycle Categorizes an issue or PR as relevant to SIG Cluster Lifecycle. sig/instrumentation Categorizes an issue or PR as relevant to SIG Instrumentation. sig/network Categorizes an issue or PR as relevant to SIG Network. sig/node Categorizes an issue or PR as relevant to SIG Node. sig/release Categorizes an issue or PR as relevant to SIG Release. sig/scheduling Categorizes an issue or PR as relevant to SIG Scheduling. sig/storage Categorizes an issue or PR as relevant to SIG Storage. size/XXL Denotes a PR that changes 1000+ lines, ignoring generated files.
Projects
Archived in project
Development

Successfully merging this pull request may close these issues.

None yet