k0s 0.11 Released

--

We are proud to announce k0s — the zero friction Kubernetes — version 0.11 is now released! Highlight of this release is the new zero-downtime cluster upgrades. In addition, you’ll find number of other enhancements and fixes. Learn more about new features and enhancements below or see the full change log. Get started today!

Terminology Harmonization

In the past, when talking about controller nodes, we’ve been using terms “server” and “controller”. Starting from k0s version 0.11, we have decided to harmonize the terminology and use “controller” term only. While we’ve tried to make the change backwards compatible (e.g. command k0s server still exists), there might be some changes needed by the users.

Zero-Downtime Cluster Upgrades

Around one month ago we introduced the first version of k0sctl, a tool for managing multi-node k0s clusters. The first version included automatic multi-node deployments with a single command. This made the creation of multi-node k0s clusters automatic and easily repeatable, important factors for running Kubernetes in production.

With the latest version of k0sctl, it is now possible to make a zero-downtime cluster upgrades. Zero-downtime can be achieved when running the cluster in HA setup with multiple worker nodes. The automated upgrade process:

  1. Controllers are upgraded one-by-one. If there are multiple controllers, there’s no downtime.
  2. Workers are upgraded in parallel, in batches. By default, the batch size is 10% which means 10% of worker nodes might be down for upgrade at any given time. For each batch, worker nodes are automatically “drained” allowing workloads to “move” to other nodes before the actual upgrade takes place. The process continues with the next batch after all nodes in the current batch are upgraded and are back in Ready state. Drain can be skipped with a --no-drain option.
  3. Once all batches are processed, the upgrade is completed.

Config File Validation

Misconfigurations and typos in config files are massive time sink. Most of us have experience trying to hunt down a bug, that was actually not a bug but a user error caused by simple typo in config files. We are addressing these issues with the new config file validation feature.

The k0s validate config command checks the configuration for semantical and format correctness. For example, Calico CNI should be configured in bird mode if you enable IPv4/IPv6 dual stack support. This kind of semantic validation is now performed automatically.

Support for Worker Node Labels

We already have a way to differentiate workloads by utilizing worker profiles but we are going further. With a new argument --labels for the k0s worker command, you can now mark freshly joined workers with a given set of labels from the very start. Learn more how to use this new argument from k0s documentation.

k0s Reset

Whether you’re experimenting actively with k0s development clusters or you are unhappy with k0s experience, it’s now made easy to clean up k0s and get your machine back to the pre-k0s state.

k0s reset drops all the data directories, cleans up any system integrations done by k0s install, and restores the machine to a state like there were no k0s installed. All the containers, mounts and network namespaces are cleaned up too. There are still a few bits (e.g. iptables) that cannot be easily cleaned up and thus a reboot after running k0s reset is highly recommended.

Embedded kubectl

k0s binary comes now with embedded kubectl functionality, which defaults to using the admin kubeconfig authentication (requires root). This helps immensely with debugging and working with the Kubernetes api as now the user does not have to separately install kubectl and play with kubeconfig.

Kubelet Certificate Rotation

k0s 0.11 now enables automated certificate rotation for kubelet. In practice this ensures kubelet will now always have a valid certificate both for client authentication (when it talks to the api server) and also for serving it’s own api endpoint. The serving certificate is signed by the main cluster CA (the one on api server) and thus now there’s a full mutual trust between the api server and kubelet. Kubelet no longer uses self signed certificates on it’s api endpoint and the api server is configured to only trust kubelets with a valid trust chain.

Kubelet Extra Args

k0s 0.11 allows passing any set of extra arguments for kubelet when starting a k0s worker. Users can customize how kubelet is actually started on the nodes. One of the main drivers for this feature is the need to customize the node IP address kubelet reports to api server, but instead of making a single purpose config flag we enabled a generic way to add any set of flags for kubelet.

Updated Components

As always, k0s 0.11 comes with all the latest “system” components. Here’s the list of components that got updated in this release:

  • Kubernetes 1.20.4
  • Runc 1.0.0-rc93
  • etcd 3.4.15

Community Updates

We have seen a lot of interest towards k0s and according to the GitHub statistics, k0s has been already downloaded 9.1k times and the project has got 3.3k stars. It’s nice to see the growing activity every day. Having an active community is a key factor of success for a project like k0s.

As a gentle reminder: if you are not yet following us on Twitter, please do it now! Also, please join the k0s Slack channel (hosted by our friends at Lens IDE community) to hear the latest news, discussions and provide your feedback.

About k0s

k0s is zero friction Kubernetes distribution. It provides a unique mix of simplicity, security and modularity. k0s is 100% open source and free of charge, for any purpose. The k0s open source project is backed by a number of Kubernetes, Docker and Linux ecosystem pioneers. It combines experience with all the best innovations and ideas in the ecosystem to create a pure kubernetes distribution that is slim, modern & fresh while maximizing the developer happiness. https://k0sproject.io

--

--

Miska Kaipiainen
k0s — The Kubernetes Distribution

Cloud native technologist and serial entrepreneur with passion to cool new technologies. Principal of https://k8slens.dev and https://k0sproject.io OSS projects