Skip to content
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

add simple way to replace a nodegroup #443

Closed
errordeveloper opened this issue Jan 17, 2019 · 12 comments
Closed

add simple way to replace a nodegroup #443

errordeveloper opened this issue Jan 17, 2019 · 12 comments
Labels

Comments

@errordeveloper
Copy link
Contributor

We can create and delete nodegroups, but one needs to really script their upgrade and it can be tedious. If they are to use e.g. a custom AMI and want to test it first, they probably know how to do tests and will split the phases themeselves.

In many cases users probably want to create a new nodegroup based on an existing one. I think a good way to do this would be with eksctl create nodegroup --replaces=<oldNodeGroup>, which would take most configuration from oldNodeGroup and use it for the new nodegroup, and make sure to delete that old nodegroup once new nodes joined successfully. We can add a mode where latest AMI from the same family is applied, and a parameter to delayed the deletion by some number of minutes, and perhaps scale the old nodegroup down slowly instead of deleting it immediately (just an idea for those that prefer to play safe).

@mumoshu
Copy link
Contributor

mumoshu commented Jan 21, 2019

Ideally we should finish #396 beforehand and integrate it into this feature. So that the node draining ensures all the old nodes are safely drained (hence pods are migrated to the new nodes).

@errordeveloper
Copy link
Contributor Author

Yes, we certainly need draining before we can do this.

@errordeveloper
Copy link
Contributor Author

cc @tiffanyfay

@pawelprazak
Copy link

pawelprazak commented Apr 2, 2019

an interesting strategy, that could build on this work, would be to do a blue/green with two node pools, esp. with built in self-tests like:

  • create new node pool with two nodes, mark as non-schedulable
  • deploy some smoke test pods (with node selectors and taint tolerations)
  • mark as schedulable
  • drain one old node in the old node pool
  • continue the rolling update if all new pods are running and ready
  • (optionally) pause at 50/50 and 99/1 for a predetermined delay
  • delete old node pool

this would require an operator and a lot of effort, but would automate a lot of QA work

@errordeveloper
Copy link
Contributor Author

errordeveloper commented Apr 2, 2019 via email

@errordeveloper
Copy link
Contributor Author

This would depend on #642.

@polanfong
Copy link
Contributor

Any progress on this? I've been looking for the exact same thing. The closest I can find is the eksctl upgrade nodegroup ... command but I have a feeling this doesn't result in the same thing. Can anyone comment on the difference(s)?

@martina-if martina-if added the priority/backlog Not staffed at the moment. Help wanted. label Sep 11, 2020
@github-actions
Copy link
Contributor

This issue is stale because it has been open 30 days with no activity. Remove stale label or comment or this will be closed in 5 days.

@michaelbeaumont
Copy link
Contributor

Duplicate of #2774

@michaelbeaumont michaelbeaumont marked this as a duplicate of #2774 Jan 27, 2021
@github-actions
Copy link
Contributor

This issue is stale because it has been open 30 days with no activity. Remove stale label or comment or this will be closed in 5 days.

@github-actions github-actions bot added the stale label Feb 27, 2021
@github-actions
Copy link
Contributor

github-actions bot commented Mar 4, 2021

This issue was closed because it has been stalled for 5 days with no activity.

@github-actions github-actions bot closed this as completed Mar 4, 2021
@Dhruv-Garg79
Copy link

any plans to add this?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

7 participants