-
Notifications
You must be signed in to change notification settings - Fork 159
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
feat: controller only expansion #898
feat: controller only expansion #898
Conversation
f6478f7
to
56317be
Compare
03320a4
to
c32b5be
Compare
Since I've not concluded avoiding NodeExpandVolume yet, I'd like to separate this PR into making expansion faster and not using |
How would you be able to achieve that? I am combining these since you need a path in the Controller and I would have to migrate the entirety of /dev/topolvm device logic into the controller first otherwise |
IIUC, all logic on |
Understand what you mean now, will work on separating this out, might take a bit |
This pull request has been automatically marked as stale because it has not had any activity for 30 days. It will be closed in a week if no further activity occurs. Thank you for your contributions. |
Signed-off-by: Jakob Möller <jmoller@redhat.com>
Signed-off-by: Jakob Möller <jmoller@redhat.com>
Signed-off-by: Jakob Möller <jmoller@redhat.com>
Signed-off-by: Jakob Möller <jmoller@redhat.com>
Signed-off-by: Jakob Möller <jmoller@redhat.com>
Signed-off-by: Jakob Möller <jmoller@redhat.com>
c32b5be
to
4aa37b0
Compare
@jakobmoellerdev |
@jakobmoellerdev |
The slow expand is because the kubelets desired state of world populator, but my issue is that we should not need to wait for the node if we already interact with lvmd, hence my PR. So my desire is to speed up both. Real life expands take as much as testing |
Thanks. |
I think your concern is valid. Let me know if you need any input from me to proceed. |
@jakobmoellerdev |
I think this assumption is not quite correct. ControllerExpandVolume is abstracted from filesystem management. Thats why one can set NodeVolumeExpansionRequired to true. Nevertheless I think for code simplicity I agree, we can move forward with "nudging" the pod to do what we want, as it maintains our code paths better. I suggest we add some documentation to that pr and close this one out |
Closing in favor of #956 |
This change is prototyping how using the native LVM device paths reported by device mapper could work together with lvm controlled filesystem resizing in order to run controller-only online/offline volume expansion.
The main benefit of this is significantly faster resizing due to not having to wait for kubelet expansion. Additionally we no longer have to maintain our own devices in /dev/topolvm. (fix #902)
Note that the current design breaks with existing TopoLVM because it switches from using the TopoLVM device directory to using the lvm owned device paths (so TopoLVM no longer renames the devices).Unmounting via lvm2 provided device paths always works even if legacy paths exist.I want to drive a POC here so that I can further debug and showcase how much more efficient we could be regarding dealing with device paths, lvm compatibility and the CSI spec.I think this approach is feasible and I would like to open it for reviewsSummary of Changes: