The last few months have been accompanied by a remarkable adoption of Kubernetes within the industry, and it’s not hard to see why. The technology has steadily matured and offers a steady stream of production ready features that are capable of meeting a diverse array of containerized workloads types. Kubernetes 1.9 continues that trend through the General Availability of the Workload API as well as by bringing Windows Server Container support and the Container Storage Interface (CSI) into beta and alpha stages respectively.
As you might have noticed from our integration with Kubernetes, we here at Nirmata are big fans of Kubernetes and are excited to dive into what’s new in the 1.9 update. In this article, we’ll cover some of the new features in Kubernetes 1.9 and explore what these updates indicate about the future of the Kubernetes platform.
The Workloads API is Production Ready (General Availability)
Perhaps the most exciting news to come out of the Kubernetes 1.9 announcement is that the Workload API now enjoys General Availability. The Workload API groups together the already battle-tested Deployments and ReplicaSets and the relatively new DaemonSet and StatefulSet objects.
As a type of workload API Object, The StatefulSet expanded upon Deployments by letting users guarantee the uniqueness and ordering of pods. Through utilizing a “sticky” network identity and stable storage, it ensured pods could obtain a unique identity that was maintained despite rescheduling across nodes.
DaemonSets ushered in even greater functionality by providing the mechanism to ensure that an instance of a pod runs on each node in the cluster. This addresses many use cases, such as running containers that perform log collection on each node or running a collective cluster storage daemon.
Having the Workload API elevate these resources to “General Availability” provides Kubernetes users the ability to schedule diversified workloads. We believe this enhanced feature set increases Kubernetes’ relevance in an industry that incorporates a variety of production requirements.
Windows Server Container Support (Beta)
During the rise of containerization technology, Linux containers seemed to predominantly dominate the conversation and use of the technology. As a result, many container orchestration platforms left out support for orchestration of Windows Server containers. For systems such as Kubernetes this enabled streamlined development of the platform; however, the move sacrificed flexibility in a world that requires orchestrating diverse types of workloads.
The move to support Windows Apps running on Windows Server Containers in Kubernetes as a Beta Feature comes on the heels of Kubernetes being embraced by the industry as production ready platform for container orchestration. Seeing that this feature is expected to eventually transition into General Availability, it fits the narrative that Kubernetes is now in the position to expand its offerings given that its core features are considered to be reliable.
Custom Resource Definition Improvements and Validation (Beta)
Custom Resources Definitions (CRDs), the sequel to Third Party Resources, are a feature in Kubernetes that enable you extend the Kubernetes API. The feature was graduated to Beta in Kubernetes 1.8, and in Kubernetes 1.9, it is now improved.
Among the improved features in Kubernetes 1.9 is Custom Resource Definition Validation, now in Beta, which provides a means by which those who create Custom Resource Definitions can respond more efficiently to invalid objects. In addition to this, Kubernetes 1.9 also includes better resources to augment the process of writing Custom Resource Definitions, including a sample Custom Resource Definition template and scaffolding tools to generate code.
Integration with the Container Storage Interface (Alpha)
As Kubernetes begins to come into its own, it can be argued that a necessary step to improve the platform is the increased ability of third party developers to offer their own plugins. One of the most promising initiatives in this space is the Container Storage Interface (CSI).
The Container Storage Interface is a joint venture between Cloud Foundry, DC/OS (Mesos), Docker, and Kubernetes to solve the problem of the mutual need for an API for third party developers to develop container storage solutions. Created by developers who recognized this demand, the Container Storage Interface’s goal is “is to have storage vendors write one plugin that works with all container orchestration platforms.” For a deeper dive into CSI, check out the following presentation by Steve Wong on CSI that was given at MesosCon.
With Kubernetes 1.9, CSI support is now in alpha. This means developers hoping to make storage solutions that would integrate with Kubernetes, or any other orchestration platform, would have to learn one API to ensure their solution could be integrated with Kubernetes and other platforms that support CSI.
IPV6 and CoreDNS Support (Alpha)
In a move that will likely be met with much applause, Kubernetes 1.9 now offers official alpha level support for IPV6. That being said, the support for this standard may be considered incomplete by some. As Nick Chase mentions in his post on Mirantis’ Open Source Digest, Kubernetes 1.9 does not offer an interface to simultaneously understand both IPV4 and IPV6 (dual-stack) as well as lacks support for Host Ports.
Another announcement that may peak the interest of many is the introduction of CoreDNS to Kubernetes. Ever since CoreDNS was introduced as an alternative to SkyDNS, it has begun to gain a reputation as a fast and flexible DNS offering. With Kubernetes 1.9, CoreDNS can now be installed as an alternative to Kubernetes DNS with alpha level support.
Hardware Accelerator (Alpha)
The utilization of GPU resources across a variety of workload types has become a trend that is too big ignore in the industry. The driving force behind this is the rapid of adoption of machine-learning and other technologies that require hardware capable of expensive computations. To help Kubernetes meet this demand, SIG Node has brought alpha level support for hardware accelerators into Kubernetes 1.9.
Admission Controller and Administrator Updates
A powerful feature within Kubernetes is Admission Controller Webhooks, which are used to modify admission controllers remotely. Admission Controllers are code that enable a set of restrictions on all requests sent to the Kubernetes API server and are based on a set of criteria (i.e. do all pods match a certain label selector). In Kubernetes 1.9, Admission Controller Webhooks have been enhanced to offer greater flexibility and more control for those implementing this method of modifying Admission Controllers. To check out an example of Admission Controller Webhook in use in Kubernetes 1.9, check out the Kubernetes 1.9 update coverage by GCP live.
Included in Kubernetes 1.9 is greater flexibility for network administrators. For example, RBAC API can now be aggregate ClusterRoles via aggregation rules.
What 1.9 Tells Us about the State of Kubernetes
After taking a step back from each of the individual features in Kubernetes 1.9, it becomes apparent that the platform is starting to expand its offerings to satisfy more production requirements. The General Availability of the Workloads API is perhaps the strongest argument to be made for this claim, as it introduces a much more rich feature set for orchestrating containerized workloads. However upon closer inspection, the new alpha level features in Kubernetes 1.9 are equally worthy of our attention.
With IPV6 support, better DNS alternatives, and greater support for specialized hardware in the works more companies are sure to find that Kubernetes is a viable – and reliable – solution for them. Beta support for Windows Server Containers only strengthens this claim.
As a software platform that helps DevOps teams deliver enterprise-grade and cloud-provider agnostic Kubernetes based container management solutions, we are excited for more companies to start using Kubernetes and test its expanded offerings in Kubernetes 1.9. We strongly believe that Nirmata is the most intuitive platform for deploying and managing applications across Kubernetes clusters and urge you to learn more about us and let us how we can help with your application strategy.
Title Image obtained and modified from Joana Poe