Kubernetes 1.5 has officially come to Windows Server 2016, the first time Windows will feature container-management support through its server. Kubernetes is one of the most popular container-management services available today, first created by Google and now under the Linux Foundation’s Cloud Native Computing Foundation (CNCF).
What is Kubernetes?
Kubernetes is an open-source system for automating deployment, scaling and management of containerized applications. Initially, Kubernetes was supported only by Linux; it was also previously supported on the Microsoft Azure cloud, but without Windows Server support.
Now, though, it finally has container support on Windows Server 2016, thanks to Apprenda, which helped port Kubernetes to Windows with the collaboration of Microsoft, Google, and Red Hat.
The community surrounding Kubernetes is huge; it is in the top 0.01 percent in stars and No. 1 in terms of activity on GitHub. Additionally, Kubernetes has a large Slack and Stack Overflow community that makes up for its subpar documentation.
Why is it so popular? Kubernetes logically groups containers that make up an application for more simple management and discovery, building upon 15 years of experience of running production workloads at Google.
Some of its key features include:
- Originally designed by Google, which runs billions of containers a week, Kubernetes has advanced scalability.
- Open source
- Kubernetes’ open-source tag means you can move workloads to on-premise, hybrid, or public cloud infrastructures.
- Automatic binpacking
- Depending on resource requirements and other constraints, Kubernetes can automatically place containers. Users are advised to “mix critical and best-effort workloads in order to drive up utilization and save even more resources.”
- Failed containers are automatically restarted, and when nodes die, containers are replaced and rescheduled. Containers that don’t respond to your user-defined health check are killed.
- Horizontal scaling
- Gives users the ability to scale applications up and down with a command, with a UI, or based on CPU usage.
- Service discovery and load balancing
- Each container is given its own IP address, as well as a single DNS name for a set of containers. Kubernetes can then load-balance across them.
- Rollouts and rollbacks
- As stated by their site, “Kubernetes progressively rolls out changes to your application or its configuration, while monitoring application health to ensure it doesn’t kill all your instances at the same time.” Additionally, changes will be automatically rolled back if there’s a problem.
- Secret and configuration management
- There’s no need to rebuild your image or expose secrets in your stack configuration while deploying and updating secrets and application configuration.
- Storage orchestration
- Users are able to mount whichever storage system they prefer. This includes local storage, public cloud providers, or network storage systems. More details can be found on their site.
- Batch execution
- Users can allow Kubernetes to replace failed containers and manage their batch and CI workloads.
Kubernetes 1.5 on Windows Server 2016
Now that you understand Kubernetes and its features, why should you care about its partnership with Windows Server 2016?
Well, now that Windows Server 2016 provides full support to Docker containers, it makes sense that they would eventually add Kubernetes support as well, as the two services are often used together (even though Docker is trying to push its “Docker Swarm” instead).
Additionally for Windows users, though, Apprenda wished to add exclusive Windows features. For example, Kubernetes supports both types of Windows containers, including both the conventional Windows Containers as well as Hyper-V containers.
Hyper-V containers are a feature of Windows Server 2016 where each container instance runs inside of a special virtual machine, providing more isolation between each container and their host.
Other partners provided new, useful features as well. In an interview with eWeek, Clayton Coleman, lead engineer for OpenShift at Red Hat, said, “Red Hat has helped enable the Windows container support at several levels, including laying foundational groundwork to have Windows nodes connected to the cluster and assisting in the prototyping of how Kubernetes concepts can be mapped to Windows containers.”
Coleman has high hopes about “the potential to manage mixed application workloads on Kubernetes across both Windows and Linux.”
With this latest release of Kubernetes, it’s now possible to install a hybrid container host environment of Linux and Windows Server operating systems. This hybrid container then has the possibility to hold a Kubernetes cluster, deploying everything in local infrastructure or in Microsoft Azure, according to Rakesh Malhotra at Apprenda in another interview with eWeek.
While all applications using Kubernetes 1.5 are available to run on both Linux or Windows Server, with Windows Server and Hyper-V containers it is only possible to distribute the containers across Windows Server nodes in the cluster.
"Kubernetes nodes that are the container hosts can be deployed with both Windows Server or Linux," Malhotra says, but adds that it’s important to note that “all Kubernetes environments will continue having a requirement to deploy Linux nodes to host the Kubernetes master components.” This includes distributed storage, controller manager, scheduler, and the API server.
Another important feature of Kubernetes 1.5 is the StatefulSet capability, now in beta. This was previously called PetSet and provides users with guarantees about the ordering of deployment and scaling.
StatefulSet lets users run stateful applications, which are essentially applications that store data to use at a future time. It doesn’t, however, allow full scalability. Instead, it has constricted CPU or memory limits.
Overall, Kubernetes has shown that it is going to continue improving throughout 2017 and beyond. Microsoft will continue working alongside Apprenda, Red Hat, and other partners to continue the innovation and integration.
The goal is to “ensure that Kubernetes can be the core of a cluster operating system,” Red Hat’s Coleman said. “We’re just scratching the surface of how users can customize Kubernetes to meet their needs.”