Supported operating systems
MetaKube creates Kubernetes Nodes on top of VMs with plain base images. We support and provide images for the following operating systems and versions:
- Ubuntu Noble 24.04
- Ubuntu Jammy 22.04
- Flatcar stable
Note
You can use your own images, but we do not support them.
For more information on supported images and how to upload your own, see the OpenStack Cloud documentation.
Configuration
Timezone
The timezone on all provided images is UTC. To set a different timezone, use your own image, though using UTC is generally recommended to avoid daylight saving time issues.
Updates
OpenStack provides new images with patches as they become available. MetaKube often tests the latest images with all supported Kubernetes versions.
MetaKube does not update Kubelet after provisioning a Node. To get a different Kubelet version, configure the Kubernetes version in the MachineDeployment.
Ubuntu
On Ubuntu, unattended-upgrades upgrades packages on a schedule.
Some updates (for example, Kernel) require a reboot to take effect.
You may use a tool such as Kured to automatically reboot Nodes in a controlled way when necessary.
Unexpected Kubelet restarts
We have observed on Ubuntu 24.04 that unattended-upgrades restarts Containerd (and Kubelet) after successful package updates.
While this does not impact the Node or Pods running on it, we consider this unintended behavior.
Use Ubuntu with systemd-sysext to avoid this problem.
Ubuntu with systemd-sysext
Starting with Ubuntu 24.04, systemd-sysext activates or deactivates system extension images.
This approach extends the operating system without persistent modifications to the filesystem.
MetaKube offers to create Ubuntu nodes with the systemd-sysext service activated. In this case, MetaKube does not install the
kubelet and containerd services via the standard package manager. Instead, the system uses pre-built images that
download at boot time and the sysext service then activates them.
This approach provides faster boot times because the packages do not build locally. It also avoids the problem of "Unexpected Kubelet restarts".
Because kubelet and containerd are not installed as apt packages, package upgrades no longer restart those services. Apt upgrades are not blocked on sysext nodes: MetaKube still applies host package updates (via unattended-upgrades) through the Ubuntu sysext update agent, after temporarily unmerging the system extensions.
To disable these apt upgrades on sysext nodes, set the following annotation on the MachineDeployment node template (or on the Node):
For a MachineDeployment:
This opts the node out of the update agent, so MetaKube no longer runs apt/unattended-upgrades on that node.Enable systemd-sysext

To enable systemd-sysext through the MetaKube UI:
- Configure a node deployment
- In the image configuration section, choose Ubuntu (at least version 24.04)
- Enable the "Use systemd-sysext" option
To enable systemd-sysext using the MetaKube Terraform provider (added in v6.0.0-alpha):
Flatcar
Flatcar mounts the root filesystem as read-only. The system applies package updates on a separate partition and promotes them at the next reboot.
An operator reboots Nodes that require updates.