Kubernetes 1.11 is the second release of the container orchestration platform this year. This release continues to expand on the themes of maturity, flexibility, and scalability. It does look like the team has been hard at work after the last release with key features in the networking sphere graduating to stable (CoreDNS plugin + In-Cluster Load Balancing) along with some exciting features being released to beta from the API Machinery and Node SIGs. This release also continues to expand and enhance the storage side of Kubernetes and Kubernetes is becoming way more welcoming of stateful workloads and the storage automation they require to function in this new paradigm of deploying and running applications.
I’m excited about 2 features that have graduated to GA in this release IPVS-based In-Cluster Load Balancing and CoreDNS add-on. These features will bring large scalability and flexibility gains when you are running production applications.
Let’s have a closer look at a few of the highlights in the 1.11 release.
IPVS-Based In-Cluster Service Load Balancing
This is a big change from how load balancing is achieved in the Kubernetes platform. It’s a move away from iptables and into the IP Virtual Server in kernel load balancing. This is not the default model yet, but you can use this to load balance production traffic starting this release. The IPVS approach to load balancing provides higher performance and a simpler programming interface than iptables. This means that you will see better network throughput, latency and overall a higher scalability limit for the distributed cluster-wide load-balancing paradigm that underpins the Kubernetes Service Model.
CoreDNS is now a cluster DNS add-on. It will be the default DNS server if you are using Kubeadm. CoreDNS is directly integrated with the Kubernetes API and is both more flexible and extensible than the previous DNS server. It is a single executable and runs in a single process. Being written in Go makes it memory-safe.
You can learn more about CoreDNS here.
Dynamic Kubelet Configuration
Kubelets in past versions of the Kubernetes platform are configured via command line flags. This makes it hard to update kubelet configurations within a running cluster. The rollout of this feature to beta makes it possible to control the configuration of the Kubelet via the API server. This makes it easy to roll-out changes in a running cluster.
Custom Resource Definitions can now define multiple versions
The earlier releases of Kubernetes restricted CRDs to defining a single version of a custom resource. With the release of this feature, CRDs can now define multiple versions of custom resources. While this feature doesn’t yet support automatic conversions, for now, this feature allows authors to create migration paths and promote new versions of the custom resource.
CRDs now also support status and scale subresources that integrate with HA and monitoring frameworks. This makes it easier to run production-grade cloud-native applications using CRDs
Enhancements to CSI
The advances made in the storage sphere have been a major focus over the past few releases of Kubernetes. The 1.11 release adds early alpha support for raw block volumes to CSI, in addition to integration with the new kubelet plugin registration process making it easier to pass secrets down to CSI plugins.
New Storage Features
Continuing the focus on enhancing the storage automation present in Kubernetes online resizing support for Persistent Volumes (PV) has been introduced as an Alpha feature. This means that increasing the size of the PV doesn’t require a pod termination and unmount anymore. The update to increase the size will be posted to the PVC and the kubelet will automatically resize the filesystem for that PVC.
There is also alpha support for dynamic maximum volume count. This enables the in-tree volume plugins to specify the maximum number of volumes that can be attached to a node and allows that limit to be varied by the node. This makes it much more flexible than the previous hard-coded or environment variable controlled values.
Kubernetes 1.11 is available for download on GitHub.