-
Notifications
You must be signed in to change notification settings - Fork 100
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
Unable to provision volumes on all nodes with StorageClass with Custom Node Labels #356
Comments
Hi @khalMeg , Can you share the new storage class with which provisioning works for other node. Please also see the docs for custom label in storage class |
Hi @abhilashshetty04
The same issue occurs when I use a storage class without specifying any node; the volumes are always provisioned on worker-01!
Please note that I am using Thin Provisioning in my LVM setup. |
Hi @khalMeg , I hope you have vg named as What are the k8s nodename? You have mentioned you are using custom labels. Have you referred following docs Can you share output of following command
|
Hi @abhilashshetty04 , yes the
Here is the output of the command :
Note that I have created another vg named |
Hi @khalMeg ,
vgname should not matter at all. More importantly, i see |
Hi @abhilashshetty04 ,
The displayed
The
Volumes are scheduled on the first node on the list of nodes which is
That's because the space is being allocated for the thin pool rather than being available for new physical volumes, the used space can be shown with Here is the output for the
Please note that I am able to provision volumes normally with a storageclass for each node using the EDIT: |
Hi @khalMeg , I see. We take care of thinpool creation. We create thinpool when the first thin volume is created. Let me run some tests ill get back to you. Thanks. |
Hi @khalMeg , I was able to reproduce the issue. localpv-lvm scheduler has no visibility of scheduler creates node_candicates list which is empty at first as there is no vg matching storage requirement. Which is then passed to one more logic where topology is evaluated. Even though, localpv-lvm scheduler has not found a vg to with enough capacity if topology is used in sc it will select the first node on the list (worker-0) in your case to create the CR. If you have not used any topology it just picks the first node i.e worker-0. You dont have to create You might want to enable thinpool monitoring on all vgs. There is also a configuration in lvm.conf to extend a thinpool by a certain extend when Data% reached a certain threshold You can refer documentation We would like to change some of the scheduling logic. Please find the below issue |
Thank you @abhilashshetty04, I have deleted the created thinpool on my test disks in worker-05 and worker-06, now I am able to schedule the pv on node worker-06 rather than worker-05 (first on selected nodes list). I have enabled the thinpool Auto-Extending and it works! But, I'm getting a strange behavior in the scheduling process, where even I do a cordon on node worker-06, new PVs are still scheduled on it! for test reasons, I tried to deploy an HA postgres cluster with 2 replicas using Crunchy Postgres for Kubernetes but the two PVs were scheduled in the same node every time, even if PodAntiAffinity is enabled . I'm not sure if it is an issue with lvm-localpv or something else. Have you any idea about this? |
Hi @khalMeg ,
Thanks for confirming :)
I feel we dont check that. Probably we should. Can you create a ticket for it. We can take that up.
This we need to check. Not sure about crunchdata postgresql. Does this deploy statefulset? Can you also create new ticket for this with logs of |
Thank you again @abhilashshetty04 , A new issue has been created here: #366 |
I am using openEBS localpv LVM with a StorageClass with Custom Node Labels (for all my worker nodes). However, volumes are always provisioned on node worker-01, and if I cordon worker-01 volumes will never be scheduled on different nodes.
workaround : if I create a new storage class for a specific node (other than worker-01) the volume is provisioned without any problem.
here is my storage class:
kubectl logs -f openebs-lvm-localpv-controller-7b6d6b4665-fk78q -n openebs -c openebs-lvm-plugin
https://gist.github.com/khalMeg/ff579367b9ad5c0d5016841b3607aa8a
kubectl logs -f openebs-lvm-localpv-node-[xxxx] -n openebs -c openebs-lvm-plugin
https://gist.github.com/khalMeg/cd740b62d5102d61e99160bbb8212cac
Environment:
k8s cluster deployed using Kubespray
Debian GNU/Linux 12 (bookworm)
The text was updated successfully, but these errors were encountered: