Each quarterly release of Kubernetes typically includes a mix of new alpha enhancements, as well as work to mature existing features. The last release of a given year generally coincides with KubeCon + CloudNativeCon and the holiday season, resulting in a somewhat compressed schedule. That release generally focuses on stability and defers new enhancements until the first release of the next year. Kubernetes 1.17 was the last release of 2019 and, as expected, focused on stability of existing features. While the release introduced a relatively small set of new capabilities, many were deferred until the 1.18 release.
Kubernetes 1.18 is the first release of 2020 and many of the new enhancements that could not be completed in time for the 1.17 have been delivered with Kubernetes 1.18. In Kubernetes 1.18, there are a total of 38 enhancements. Of the these, 12 are new enhancements, 11 are graduating to beta, and 15 are graduating to stable. This means that while the 1.18 release has a large focus on maturing existing capabilities, more than 30% of the enhancements represent new features. Below are a few of the enhancements delivered in the 1.18 release:
Immutable secrets and ConfigMaps
A common way to consume Kubernetes Secrets and ConfigMaps is to mount them as files within a pod. However, changes made to these Secrets and ConfigMaps are quickly reflected in the pod and an incorrect change can break a running application. In Kubernetes 1.18, a new field has been added to Secrets and ConfigMaps to mark them as immutable. When set, changes to existing Secrets and ConfigMaps will be rejected, preventing unintended updates to an application.
Kubectl debug
When debugging an application that is deployed on Kubernetes, it is sometimes useful to run arbitrary commands or otherwise inspect the state of a pod. Depending on the tools present in the container, this is can be difficult. Kubernetes 1.16 introduced a new alpha feature that allows an Ephemeral Container to be added to a pod to accomplish these tasks. Building on this, Kubernetes 1.18 includes a new kubectl command called debug.
This command will add a new container to the specified pod and attach to the console to support debugging activities. As this is a brand-new alpha feature, it is a wonderful opportunity to provide feedback to the Kubernetes project and help shape it.
Kubeadm for Windows
Kubernetes 1.14 added official support for Windows Containers. Although each subsequent release has added additional capabilities supporting Windows containers, there has not been a tool to support automating these clusters. The result is cumbersome solutions for those wishing to utilize Windows containers. Kubeadm is an important tool for automating creation of Kubernetes clusters, but support has primarily focused on Linux -based clusters.
In 1.18, Kubeadm includes beta support for adding Windows-based worker nodes to a cluster, bringing the same great automation capabilities to users of Windows containers.
Node topology manager
In high-performance computing environments, optimizations related to CPU isolation and memory and device locality are required in order to extract the best performance. However, in Kubernetes, these optimizations are handled by a disjoint set of components. Kubernetes 1.16 introduced a new alpha feature called the Topology Manager to better support workload placement decisions. In Kubernetes 1.18, this feature graduates to beta and is enabled by default.
Taint-based eviction
Kubernetes 1.17 saw the graduation (to stable) of the ability to add taints on nodes based on resource availability. In Kubernetes 1.18, the related ability to tolerate or evict pods from a node when there are problems graduates to stable. When used in combination, workload-specific requirements can be expressed, such as keeping an application with a large amount of local state bound to a node in the event of a network disruption.
CSI block storage
The ability to use a PersistentVolume as a raw block device when using CSI drivers graduates to stable in Kubernetes 1.18. This feature has been available since Kubernetes 1.13 as a beta feature, but its graduation to stable brings with it more bug fixes and enhanced stability.
Kubeadm CoreDNS replica count preservation in upgrade
In previous releases, during an upgrade using ‘kubeadm upgrade apply'
, the CoreDNS replica count was not persisted and reset to the kubeadm default. Now in 1.18, a change allows for CoreDNS replica-count persistence during kubeadm upgrades.
Wrapping up
Kubernetes 1.18 delivers new exciting alpha features, while at the same time stabilizing many existing alpha and beta features. We can expect a number of these new alpha features, along with the current beta features, to stabilize over the next few Kubernetes releases. To read about all the features in the 1.18 release, check out the Kubernetes Enhancement Tracking spreadsheet for 1.18. Get signed up for the CNCF 1.18 Webinar to learn about what’s new.
Getting involved in Kubernetes 1.19
VMware remains committed to being leaders in the upstream Kubernetes community and we want you to come contribute, too! Participating in the Kubernetes Release Team is a great way to contribute to the project, even if you are a new contributor. The team comprises multiple roles, many of which require no prior development experience. Subscribe to this GitHub issue to be one of the first to know when the application form opens.
Read more about how to participate in the Release Team and join us in the community.