Operating System Manager (OSM) is an open source project by Kubermatic, it is responsible for creating and managing the required configurations for worker nodes in a Kubernetes cluster. It decouples operating system configurations into dedicated and isolable resources for better modularity and maintainability.
These isolated and extensible resources allow a high degree of customization which allows users to modify the worker node configurations to suit their use cases. This is useful for hybrid, edge, and air-gapped environments.
Configurations for worker nodes comprise of set of scripts used to prepare the node, install packages, configure networking, storage etc. These configurations prepare the nodes for running kubelet
.
Machine-Controller is used to manage the worker nodes in KubeOne clusters. It depends on user-data plugins to generate the required configurations for worker nodes. Each operating system requires its own user-data plugin. These configs are then injected into the worker nodes using provisioning utilities such as cloud-init or ignition. Eventually the nodes are bootstrapped to become a part of a kubernetes cluster.
This has been the norm till machine-controller v1.54.0 and it works as expected. Although over time, it has been observed that this workflow has certain limitations.
ubuntu
.user-data
, machine won’t be created in case of non-compliance. For example, at the time of writing this, AWS has set a hard limit of 16KB.Operating System Manager was created to overcome these limitations.