-
Notifications
You must be signed in to change notification settings - Fork 1.4k
📖 Add implementation notes to the in-place update proposal #12880
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
Changes from 1 commit
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change | ||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| @@ -0,0 +1,88 @@ | ||||||||||||||||||||||||||
| # In-place updates in Cluster API - Implementations notes | ||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||
| This document is an collection of notes about implementation details for the in-place update proposal. | ||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||
| As soon as the implementation will be completed, some of the notes in this document will be moved back | ||||||||||||||||||||||||||
| into the proposal or moved to the user facing documentation about this feature. | ||||||||||||||||||||||||||
|
||||||||||||||||||||||||||
| into the proposal or moved to the user facing documentation about this feature. | |
| into the proposal or into the user-facing documentation for this feature. |
Outdated
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.
| - if maxUnavailable is zero, a new machine must be created, then as soon as there is “buffer” for in-place, in-place update is done | |
| - if maxUnavailable is zero, a new machine must be created first, then as soon as there is a “buffer” for in-place, the in-place update can proceed. |
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.
| - if maxUnavailable is zero, a new machine must be created, then as soon as there is “buffer” for in-place, in-place update is done | |
| - if maxUnavailable is zero, a new machine must be created, then as soon as there is “buffer” for in-place, in-place update can proceed |
Just to avoid interpretation of "done" as "finished".
Outdated
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 implementation respects the existing set of responsibilities of each controller | |
| - MD controller manages MS | |
| - MD controller enforces maxUnavailable, maxSurge | |
| - MD controller decides when to scale up newMS, when to scale down oldMS | |
| - When there is a decision to scale down, MD controller should check if this can be done via in-place vs delete/recreate. If in-place is possible: | |
| - Old MS will be informed to move machines to the newMS, and newMS will be informed it will receive machines from oldMS. | |
| - The implementation respects the existing set of responsibilities of each controller: | |
| - MD controller manages MS: | |
| - MD controller enforces maxUnavailable, maxSurge | |
| - MD controller decides when to scale up newMS, when to scale down oldMS | |
| - When scaling down, the MD controller checks whether the operation can be performed in-place instead of delete/recreate. If in-place is possible: | |
| - Old MS is instructed to move machines to the newMS, and newMS is informed to receive machines from oldMS. |
Outdated
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.
| - MS controller, when reconciling the newMS, will take over the moved machine and start the actual in-place upgrade operation | |
| - When reconciling the new MachineSet, the MS controller takes ownership of the moved machine and begins the actual in-place upgrade. |
Outdated
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.
| Following schemas provide a overview of how new annotation are used | |
| Following schemas provide an overview of how new annotations are used. |
Outdated
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.
| MD Controller-->>+RX: Can you update in-place from MS1 (OldMS) to MD2 (NewMS)? | |
| MD Controller-->>+RX: Can you update in-place from MS1 (OldMS) to MS2 (NewMS)? |
Outdated
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.
| participant M1 as M1<br/>controlled by<br/>MS1 (OldMS),<br/>selected to be moved to MS2 | |
| participant M1 as M1<br/>controlled by<br/>MS1 (OldMS),<br/>selected to be moved to MS2 (NewMS) |
Outdated
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.
| Workflow #3: MD controller recongnizes the newMS being moved to the newMS and it scales up newMS to acknowledge the operation | |
| Workflow #3: MD controller recognizes that a Machine has been moved to the new MachineSet and scales up the new MachineSet to acknowledge the operation. | |
Outdated
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.
| MD Controller->>MS2 (NewMS): Scale up to acknowledge M1<br/>Apply annotation ".../acknowledged-move": "M1" | |
| MD Controller->>MS2 (NewMS): Scale up to acknowledge receipt of M1<br/>Apply annotation ".../acknowledged-move": "M1" |
Outdated
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.
| Workflow #4: MS controller, when reconciling newMS, detects a machine has been acknoledged; it cleanups annotation on the machine and this unblocks the in-place upgrade to start | |
| Workflow #4: MS controller, when reconciling newMS, detects that a machine has been acknowledged; it cleans up annotations on the machine, allowing the in-place upgrade to begin. | |
Outdated
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.
| participant M1 as M1<br/>now controller by<br/>MS2 (NewMS) | |
| participant M1 as M1<br/>now controlled by<br/>MS2 (NewMS) |
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.