One year kured - your Kubernetes Reboot Daemon
Kured, the Kubernetes Reboot Deamon helps perform safe automatic node reboots, when indicated by the package management of the underlying OS. We often find kured running behind the scenes and over the recent months, the community stepped up and moved kured to a fully packed 1.7.0 release. Read up on the latest features and join the community.
If you are new to Kured
Kured is the Kubernetes Reboot Daemon - it helps perform safe automatic node reboots, when indicated by the package management of the underlying OS. It was first announced in November 2017 as a project to facilitate safe reboots across the cluster and thus bringing more OS security to the Kubernetes cluster this way. Automation makes everything better indeed.
All you need to do to install it in your cluster is to run:
latest=$(curl -s https://api.github.com/repos/weaveworks/kured/releases | jq -r ..tag_name) kubectl apply -f "https://github.com/weaveworks/kured/releases/download/$latest/kured -$latest-dockerhub.yaml"
Kured comes with many configuration options based on your needs (good times for reboots, alerts, notifications and more). Check out our README for the most common ones.
Adam Harrison created Kured and did a fantastic job creating a very targeted tool that is widely used and relied on for the job. Between 2019 and 2020 we had a bit of a break in development of kured, 1.2.0 was the release where we sort of left off. This had to do with Adam taking on more responsibilities within Weaveworks - he also felt like it largely did what it needed to do. It took a little time to reboot the project and we’re quite proud of where we took the project together. Many many folks helped out - let’s take a look at the numbers:
- 12 minor, 5 major releases (coinciding with Kubernetes releases)
- 377 commits, 29 folks committed changes
- We went from 38.36Mb image size down to 21.42Mb due to not shipping kubectl along with the binary any more.
In particular we would like to thank these folks who all committed to Kured since then: Carlos Garcia Lalicata, Ciaran Moran, Danny Kulchinsky, Maxime VISONNEAU, Nighthawk22, Praveen Adusumilli, Vicente Zepeda Mas, jack-education, leigh capili, Adrian Wyssmann, t3mi, Daniel Jimenez Garcia, Maximilian Zollneritsch, Stephan Müller, Peter Groenewegen, Alexei Tighineanu, Jack Francis, Steffen Pingel, Audun Solemdal, Bryan Boreham, Cameron McAvoy, Michal Schott, JJ Jordan, David Sauer, Adam Harrison, Christian Kotzbauer, Jean-Philippe Evrard, Daniel Holbach.
But there were way more people who contributed to Kured. Thanks to everyone who supported the project!
Features and improvements
As always we continue to support the most recent Kubernetes releases. Since 1.2.0 this was everything from 1.15 to 1.20. Along with updating all the other parts of the build, we added more documentation to make the project easier to navigate for users and contributors.
In terms of features we added:
- Messages are now more configurable and clearer by printing the nodeID
- More flexibility in the core features:
- reboot only within given time window
- Add support for time wrap
- Adding --lock-ttl for automatic unlock
- Allow pods grace period to terminate as part of drain
- Helm: as the helm/charts repository was decommissioned, we imported the chart from the stable repository and made lots and lots of improvements to it: security best practices for the manifests and introduced the easy configuration of cli-arguments with a configuration-object.
- Release automation:
- Smoke and basic functional tests as part of CI
- Various lints and checkers, manifest testing
- Release helpers
- Test scripts which can be used locally as well
- General Improvements
- Remove kubectl binary
- Add more information in logs
- Multiple refactorings
Hot off the press
Kured 1.7.0 is our latest and greatest and we are really proud to announce
- Support for Kubernetes 1.21
- Support for all kinds of notifications outside of Slack (Discord, Email, Gotify, Hangouts, IFTTT, Join, Mattermost, OpsGenie, Pushbullet, Pushover, Rocketchat, Slack, Teams, Telegram, Zulip) - thanks to moving to shoutrrr
- Enable node annotations when kured reboots nodes
- And more… check out the release notes for more details.
In our last development meeting we discussed plans for the next release and are looking at support for other architectures, some refactoring to make it easier to unit test more functionality, review use of privileges and more. If you would like to contribute to any of these efforts, take a look at the ways to get in touch at the end of this post.
We realized that Kured is a project that is used behind the scenes by many of you and started organizing ourselves as a small team of maintainers. In particular it’s now Christian Kotzbauer, Daniel Holbach Hidde Beydals, Jean-Philippe Evrard, who are maintainers of the project. We have a few more new regulars who might join the ranks of maintainers soon too. This makes it much easier for us to steer the project forward and make sure patches get reviewed in time. We also meet once a month, which has been suiting us well and gives us enough face time to also stay engaged as a group.
If you rely on Kured and want to influence the future direction of the project, please let us know and work with us (we are a very friendly bunch!). The code of Kured is very targeted and makes it easy to jump in and change things .We have maintainers that will help you onboard if you want. Your next idea might be the future of Kured, so don’t hesitate to advocate for it on our slack channel or in our community meetings.
You can find out us on Slack, just head to https://slack.weave.works to invite yourself, then head to the #kured channel. You will also find a link to the community meetings in slack, and in our repository https://github.com/weaveworks/kured.
We look forward to working with you!