-
Notifications
You must be signed in to change notification settings - Fork 40.1k
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
Kubelet Volume Manager Wait For Attach Detach Controller and Backoff on Error #27567
Kubelet Volume Manager Wait For Attach Detach Controller and Backoff on Error #27567
Conversation
How is this coming? |
Should have the PR ready to review today. Code review will likely take at least til Monday. |
6338ccb
to
53ee9b0
Compare
40f4dcd
to
4507256
Compare
4507256
to
046db52
Compare
@caesarxuchao Could you please review the "Add patch status to Node internalclientset" commit. |
|
||
// PatchStatus modifies the status of an existing node. It returns the copy of | ||
// the node that the server returns, or an error. | ||
func (c *nodes) PatchStatus(nodeName string, data []byte) (*api.Node, error) { |
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.
FYI, #27293 is adding a Patch method to all clients, but it's not 1.3, and doesn't support subresource yet.
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 code LGTM for 1.3. I'll refactor it when #27293 is merged.
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.
Great, thanks @caesarxuchao!
existingOp.operationPending = false | ||
|
||
grm.operations[operationName] = existingOp | ||
if *err != nil { |
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.
err must be not nil here already, we can remove if
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.
Done.
Modify attach/detach controller to keep track of volumes to report attached in Node VolumeToAttach status. Modify kubelet volume manager to wait for volume to show up in Node VolumeToAttach status. Implement exponential backoff for errors in volume manager and attach detach controller
Thanks @jingxu97! Feedback addressed, PTAL |
046db52
to
e716ddc
Compare
GCE e2e build/test passed for commit e716ddc. |
LGTM |
@k8s-bot test this [submit-queue is verifying that this PR is safe to merge] |
GCE e2e build/test passed for commit e716ddc. |
Automatic merge from submit-queue |
…hController Automatic merge from submit-queue Kubelet Volume Manager Wait For Attach Detach Controller and Backoff on Error * Closes kubernetes#27483 * Modified Attach/Detach controller to report `Node.Status.AttachedVolumes` on successful attach (unique volume name along with device path). * Modified Kubelet Volume Manager wait for Attach/Detach controller to report success before proceeding with attach. * Closes kubernetes#27492 * Implemented an exponential backoff mechanism for for volume manager and attach/detach controller to prevent operations (attach/detach/mount/unmount/wait for controller attach/etc) from executing back to back unchecked. * Closes kubernetes#26679 * Modified volume `Attacher.WaitForAttach()` methods to uses the device path reported by the Attach/Detach controller in `Node.Status.AttachedVolumes` instead of calling out to cloud providers.
Node.Status.AttachedVolumes
on successful attach (unique volume name along with device path).Attacher.WaitForAttach()
methods to uses the device path reported by the Attach/Detach controller inNode.Status.AttachedVolumes
instead of calling out to cloud providers.