-
Notifications
You must be signed in to change notification settings - Fork 1.5k
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-0661: StatefulSet volume resize #1848
Conversation
Welcome @kk-src! |
Hi @kk-src. Thanks for your PR. I'm waiting for a kubernetes member to verify that this patch is reasonable to test. If it is, they should reply with Once the patch is verified, the new status will be reflected by the I understand the commands that are listed here. Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. |
[APPROVALNOTIFIER] This PR is NOT APPROVED This pull-request has been approved by: kk-src The full list of commands accepted by this bot can be found here.
Needs approval from an approver in each of these files:
Approvers can indicate their approval by writing |
/sig apps |
/cc @SidakM-zz |
@kk-src: GitHub didn't allow me to request PR reviews from the following users: SidakM-zz. Note that only kubernetes members and repo collaborators can review this PR, and authors cannot review their own PRs. In response to this:
Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The remaining sections need to be filled out.
We need to think about remediating failure conditions and community user errors when the PVC update fails. We need to think more closely around concurrent and sequential mutations to other part's of the spec and how this interacts with reconciliation during a rollout (replicas, podTemplate). Also how would you deal with storage providers that implement online file system resizing (Imo we should just use an "immutable infra" approach and destroy and recreate the Pod when its volume is resized, but that is just my opinion).
The following changes are proposed to achieve the goal: | ||
1. Make the `volumeClaimTemplates` storage size editable by modification to the api server | ||
validation. | ||
2. Add reconciliation of the associated PVC's size and the individual `volumeClaimTemplates` |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Consider indicating that we will need to add general PVC syncing.
|
||
Currently, PVC resize does not support shrinking the volume. Also, some environments require Pod restarts inorder | ||
to get access to the resized volume. This proposal does not try to address these scenarios but relies on the | ||
underlying PVC resize logic to take the appropriate action or indicate error as needed. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Should call out that modifying the storage class of the volumeClaimsTemplate is a non-goal as well.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thank you, @kow3ns. Will add this.
|
||
### Risks and Mitigations | ||
|
||
Currently, shrinking the PVC size is not supported and the same will apply to StatefulSet changes. There |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Consider implementing the validation in the API Machinery. If shrinking the volume will not be supported then the validation for volumesClaimTemplate field should explicitly reject the mutation.
the corresponding PVC events. StatefulSet would only report any failures in the update operation | ||
performed to the PVC object. | ||
|
||
### Revision control |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
So this has some implications for rollback and failure detection. This needs more thought. If we modify the volume size and the controller wedges midway in the rollout due to a failure, what would the remediation strategy be? There is no roll back to a previous revision. If the user modifies the spec of the StatefulSet to have the smaller volume size to attempt a rollback, that will not be possible either (i.e. no shrinking).
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Not true shrinking but a mechanism to allow user to cancel a previously issued volume expansion is in works - #1790 . This requires users to reduce PVC size to previous capacity if they want to cancel the expansion.
/ok-to-test |
paging Jordan since he previously reviewed similar KEP. /assign @liggitt |
Issues go stale after 90d of inactivity. If this issue is safe to close now please do so with Send feedback to sig-testing, kubernetes/test-infra and/or fejta. |
Stale issues rot after 30d of inactivity. If this issue is safe to close now please do so with Send feedback to sig-testing, kubernetes/test-infra and/or fejta. |
/remove-lifecycle rotten |
Issues go stale after 90d of inactivity. If this issue is safe to close now please do so with Send feedback to sig-contributor-experience at kubernetes/community. |
/remove-lifecycle stale |
Issues go stale after 90d of inactivity. If this issue is safe to close now please do so with Send feedback to sig-contributor-experience at kubernetes/community. |
This is still relevant.
…On Sun, May 30, 2021, 22:37 fejta-bot ***@***.***> wrote:
Issues go stale after 90d of inactivity.
Mark the issue as fresh with /remove-lifecycle stale.
Stale issues rot after an additional 30d of inactivity and eventually
close.
If this issue is safe to close now please do so with /close.
Send feedback to sig-contributor-experience at kubernetes/community
<https://github.com/kubernetes/community>.
/lifecycle stale
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
<#1848 (comment)>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/AA3SSBXHAB3BA35PIXJ5F4DTQKHWVANCNFSM4NYZ6UNQ>
.
|
/remove-lifecycle stale |
For me, it was much needed. 👍 |
The Kubernetes project currently lacks enough contributors to adequately respond to all issues and PRs. This bot triages issues and PRs according to the following rules:
You can:
Please send feedback to sig-contributor-experience at kubernetes/community. /lifecycle stale |
/remove-lifecycle stale |
should we close this in favor of #2842 ? |
StatefulSet volume resize
This enhancement proposes to add the ability to resize volumes associated with StatefulSet via modifications to it's specification.
StatefulSet via modifications to it's specification.
Feature tracking issue: #661
Modified and updated version of #660