-
Notifications
You must be signed in to change notification settings - Fork 806
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
Implement wait for volume create/delete #65
Comments
I'm afraid that in large clusters this will increase the API usage considerably, possibly getting the rate-limited. Kubernetes waits on volume creation only when it's using encryption keys [1]. Apparently it only waits on tag creation, so this ends up as a side effect. As for deletion, it doesn't seem to wait at all. |
In this case, we could follow in-tree implementation then. And implement wait for creation only for encrypted volume #16. And I would like to punt this to 0.3-beta milestone and we will decide later if this is needed. How do you think?
Could you elaborate on this? |
The in-tree implementation works like this:
The CSI driver works a bit better: it creates the volume and sets its tags in a single request. Waiting for the volume to be available would mean performing more requests to AWS, increasing the chances of exceeding the quota of requests and getting rate-limited. This is something I was trying to avoid, as this seems to be a recurrent problem. Ideally this would be taken care on AWS side, i.g., CreateVolume would block until the volume is ready or we would get an event (without the need to perform more requests). If I remember correctly from our initial meetings, you guys were considering a solution for this problem. Do you know if there's any progress on this front? Or do you think we go ahead with a client-side workaround? |
I researched the So making |
/assign |
The behaviour has changed since kubernetes/kubernetes#67812 (merged about a month ago). Edit: With the change above, the in-tree implementation will try to attach the volume while it's state is "creating". Initially it'll fail, but after a few tries it'll succeed. In other words, the in-tree implementation matches the driver now:
|
@leakingtapan, I have been thinking about this and I'd like to propose this: Wait for the right volume state in |
To clarify, we are proposing this for only |
That's correct. I have a PoC working, but I might have to play with the interval times, as the |
As for the delete operation, I propose to simply call DeleteVolume without waiting for the state. This saves one or more requests, plus we'll get an error if something is wrong. |
Similar to #38
The text was updated successfully, but these errors were encountered: