SimpleK8s Init v2
published at 2025-11-16, by José Luis Salvador Rufo.
TL;DR: We upgraded SimpleK8s Init. No changes are required on your side.
We decided to upgrade SimpleK8s Init because systemd changed the behavior of
systemd-generators. They are now asynchronous (which is cool!). However, this
change means we can no longer guarantee a successful boot process with the old
SimpleK8s Init code 😥.
That said, this turned out to be a great opportunity to modernize and improve
SimpleK8s Init!
The previous version of SimpleK8s Init had many steps and dependencies required
to boot from the initrd into the real system root. It relied on
systemd-generators to create transient units that mounted and populated the
mount points defined in simplek8s.yaml.
The new SimpleK8s Init (v2) removes many of those requirements and simplifies the entire flow from initrd to the real system. Here are some of the key improvements:
- The initrd stage now only executes SimpleK8s Init, instead of booting systemd twice (once for initrd, once for the real root).
systemd-generatorshave been replaced with our own mount logic, removing an extra step that previously ran after the second boot stage.- A large amount of code has been removed, including the dictionary-based password generator, systemd unit templates, and D-Bus communication.
- The step that initialized
systemd-tmpfilesin initrd has been removed. Since we no longer boot systemd in initrd, there is no need to run this stage anymore.
This update took a significant amount of my time. It is a full rewrite of SimpleK8s Init, but I believe the improvements are absolutely worth it. 🎉👏