Today, the Cloud Native Computing Foundation (CNCF) announced the latest release of Kubernetes, version 1.14, is now available. Many individuals and organizations, including SUSE engineers, contributed to this release, and many new features were introduced as alpha, managed to beta status, and graduated to stable. Let’s look at some of the most interesting stable features.
- Pod priority and preemption: When resources on a node or in the cluster are oversubscribed (that is, when pods need to use more CPU or memory than are available), the only tool to address that today is eviction, where the running pod asking for additional resources is killed (and might be able to be restarted on another node). The new capabilities take into account that some workloads are more important than others. Pods can be assigned priorities, and when a higher-priority pod needs resources, lower-priority pods will be evicted to free up the resources, rather than evicting the higher-priority pod. In addition, if a higher-priority pod needs to be started, lower-priority pods will be evicted to make resources available. This helps organizations to be sure that their most important services are available when needed.
- Pod ready++: Earlier versions signaled that pods were ready to deliver services once the pod itself was spun up; with this release, it is possible to add additional checks, such as properties of the applications within the pods, before readiness is signaled. This allows operations that are dependent on a service’s true readiness to be correctly informed, avoiding premature access attempts leading to either failure or resource waste.
- Integration of Kustomize into kubectl: YAML files can easily be derived from existing YAML files, leaving the original file untouched, without proactively creating templates. This simplfies management and customization.
- Durable (non-shared) storage management: Local storage volumes are fully supported as Persistent Volumes, rather than just as ephemeral storage as before. This makes local storage a first-class citizen in the Container Storage Interface (CSI) environment.
- Configurable pod resolv.conf: Each pod can use a different resolver configuration for its networking. This makes setting up specific network namespaces and paths much simpler, moving it from inside the containers to outside where operations and DevOps can set it. This especially simplifies cloned applications and multi-tenant environments.
- HugePages support: The x86_64 architecture supports “huge pages” – pages larger than the normal 4KB size. Kubernetes 1.14 allows pages of size 2MB or 1GB to be allocated. These are especially useful for in-memory databases and database caches.
Expect these features to be available in an upcoming release of SUSE CaaS Platform.
Kubernetes 1.14 also introduces support for Windows Server Containers, which are Docker containers running on Windows. While the feature is classed as stable, our plan is to follow its adoption while releasing features and updates for which there has been heavy demand in our user base. We are considering several approaches to managing Windows applications in a Suse CaaS Platform environment, including this one. If our users prioritize this support, we will accelerate it. (Part of being the Open Open Source Company is being open to the wishes of our customers and partners.)
Congratulations to the Kubernetes project and its contributors, both those on the SUSE team and those outside it, for this great achievement.