Latest in branch 1.14
1.14.10
Released 11 Dec 2019
(6 years ago)
SoftwareKubernetes
Version1.14
Status
End of life
Initial release1.14.0
21 Mar 2019
(7 years ago)
Latest release1.14.10
11 Dec 2019
(6 years ago)
End of supportUnavailable
End of security fixesUnavailable
Release noteshttps://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.14.md
Source codehttps://github.com/kubernetes/kubernetes/tree/v1.14.10
Documentationhttps://v1-14.docs.kubernetes.io/
Downloadhttps://kubernetes.io/releases/download/
Kubernetes 1.14 ReleasesView full list

What Is New in Kubernetes 1.14

Kubernetes 1.14 delivers a substantial update focused on production readiness for critical features and incremental improvements across the ecosystem. The release is dominated by the graduation of several features to stable, signaling their maturity for enterprise workloads.

Category Key Highlights
Stable Features Pod Priority and Preemption, Pod Readiness Gates, Windows Node Support
Significant Updates kubectl Updates, Persistent Local Volumes, PID Limiting
API Changes CustomResourceDefinition (CRD) Improvements, Extended Resources
Storage Raw Block Volume Support (beta), Volume Cloning (alpha)
Scheduling Multiple Scheduler Profiles (alpha), Node Resource Topology (alpha)

Which features reached stable in 1.14?

Three major features graduated to stable in this release, marking them as production-ready. Pod Priority and Preemption allows clusters to prioritize more critical pods and evict lower-priority ones to make room during resource contention. This is crucial for ensuring your core services stay online.

Pod Readiness Gates provide a way to signal pod readiness based on external conditions, beyond the standard liveness and readiness probes. We use this to integrate with external health checks from cloud providers or custom controllers.

Support for Windows nodes also hit stable, finally offering a fully-supported hybrid Linux/Windows cluster experience. This opens up Kubernetes for a whole class of .NET and legacy Windows applications.

What are the major kubectl improvements?

The kubectl command-line tool received a significant overhaul with a new kubectl kustomize subcommand for managing Kubernetes objects with kustomization.yaml files. This integrates the Kustomize tool directly into kubectl, streamlining the GitOps workflow without needing a separate binary.

Kubectl now also supports plugin discovery via the PATH, making it easier to install and manage extensions like kubectl-neat or kubectl-tree. In practice, this means you can just drop a binary named kubectl-foo into your PATH and run it as kubectl foo.

How did CustomResourceDefinitions get better?

CustomResourceDefinitions (CRDs) saw two key enhancements. The first is the promotion of the additionalPrinterColumns field to beta, letting you customize what columns are shown when you run kubectl get on your custom resource. This makes your CRDs feel more like native Kubernetes resources.

More importantly, CRD validation reached beta, allowing you to define an OpenAPI v3 schema for your custom resources. The API server will now enforce this schema, preventing malformed or invalid objects from being stored. This matters because it drastically improves the stability and reliability of operators and controllers that depend on your CRDs.

What's new for storage and volumes?

Raw Block Volume support moved to beta, enabling stateful workloads like databases to access storage devices directly without a filesystem layer, which is essential for performance-sensitive applications. You define it in your PodSpec with volumeDevices and a devicePath.

An alpha feature for Volume Cloning was introduced, allowing you to provision a new volume by specifying an existing PVC as a data source. This is a game-changer for quickly spinning up test environments from production data snapshots. Local Persistent Volumes also hit GA, solidifying support for using directly-attached disks.

Are there any changes to process management?

Process ID (PID) limiting graduated to beta, addressing a critical node stability concern. You can now set a limit (--pod-pids-limit) on the number of PIDs a pod can consume, preventing a single misbehaving pod from exhausting all available PIDs on a node and causing a kernel panic.

This is a straightforward but vital improvement for multi-tenant clusters. It finally gives us a way to contain fork bombs and similar resource exhaustion attacks at the pod level, making the entire node more resilient.

FAQ

Is Windows support now production-ready?
Yes. With the promotion to stable, support for scheduling Windows Server containers on Windows nodes is now considered production-ready. You can confidently run hybrid Linux/Windows clusters for supported workloads.

How does Pod Priority and Preemption work in practice?
You define PriorityClasses and assign a priority value to your pods. If the scheduler cannot place a high-priority pod due to resource limits, it can evict (preempt) lower-priority pods from a node to free up resources for the more critical workload.

Do I need to install Kustomize separately now?
No. The Kustomize functionality is now built directly into kubectl via the kubectl kustomize command. The standalone tool still exists, but the integrated version covers most common use cases.

Why is PID limiting such a big deal?
Before PID limiting, a single pod could theoretically consume all process IDs on a node, making it impossible for the kubelet or system daemons to fork new processes. This would effectively kill the node. PID limiting prevents this entire class of node failure.

What's the benefit of raw block volumes?
Raw block volumes bypass the filesystem overhead, offering direct access to the storage device. This is critical for high-performance applications like databases (MySQL, PostgreSQL) and message queues that manage their own data formatting and caching for maximum throughput.

Releases In Branch 1.14

VersionRelease date
1.14.1011 Dec 2019
(6 years ago)
1.14.909 Nov 2019
(6 years ago)
1.14.812 Oct 2019
(6 years ago)
1.14.714 Sep 2019
(6 years ago)
1.14.616 Aug 2019
(6 years ago)
1.14.501 Aug 2019
(6 years ago)
1.14.404 Jul 2019
(6 years ago)
1.14.304 Jun 2019
(7 years ago)
1.14.214 May 2019
(7 years ago)
1.14.105 Apr 2019
(7 years ago)
1.14.021 Mar 2019
(7 years ago)
1.14.0-rc.119 Mar 2019
(7 years ago)
1.14.0-beta.212 Mar 2019
(7 years ago)
1.14.0-beta.126 Feb 2019
(7 years ago)
1.14.0-alpha.312 Feb 2019
(7 years ago)
1.14.0-alpha.229 Jan 2019
(7 years ago)
1.14.0-alpha.115 Jan 2019
(7 years ago)