Facilitating the Spread of Knowledge and Innovation in Professional Software Development

Write for InfoQ


Choose your language

InfoQ Homepage News Kubernetes 1.14 Moves Windows Nodes to Production Support and Enhances Kubectl

Kubernetes 1.14 Moves Windows Nodes to Production Support and Enhances Kubectl

The latest release of Kubernetes, version 1.14, was released with production-level support for Windows nodes. The release also includes the addition of the configuration customization tool kustomize in kubectl, the kubectl plugin mechanism being moved to stable, and improved documentation for kubectl. This first release of 2019 has 10 features in total that have graduated to stable.

This release sees Windows support being moved out of beta into full support. This includes being able to add Windows nodes as worker nodes and scheduling Windows containers. These improvements include support for Windows Server 2019 and as well as out-of-tree networking with Azure-CNI, OVN-Kubernetes, and Flannel. This brings Windows support for pods, service types, workload containers, and metrics to be more on par with what is offered for Linux containers.

Included in this release is the addition of kustomize, a declarative Resource Config authoring tool, into kubectl. Kustomize can be triggered either via the -k flag or using the kustomize subcommand. Kustomize allows for authoring and reuse of Resource Config by creating variants of a configuration using overlays that modify a common base configuration. Kustomize will continue to be developed in its own, Kubernetes maintained, repo and will be updated in kubectl prior to each Kubernetes release.

The kubectl plugin mechanism has also moved to stable as of this release. The plugin mechanism allows for publishing of custom kubectl subcommands in standalone binaries. This release sees the mechanism simplified and now modeled after the git plugin system.

To extend kubectl with a custom plugin, a standalone executable file needs to be placed somewhere on the user's $PATH. The executable must have the kubectl- name prefix, with the name suffix serving as the command name. For example, a plugin named kubectl-foo would be triggered by running kubectl foo. Note that plugins cannot overwrite nor enhance existing kubectl commands. Plugins can be written in any language or script that allows for command-line commands. A Go utility library has been created to assist with common plugin related tasks.

According to Aaron Crickenberger, senior test engineer at Google,

The thing I'm most proud of is that this release has the most stable enhancements of any release of Kubernetes. You have heard people talk about Kubernetes focusing on stability and maturity, and I think you're starting to see the results of that play out with this release.

Other notable improvements in this release include:

  • The documentation for kubectl has been rewritten to focus more on managing Resources using declarative Resource Config
  • Locally attached storage is now available as a persistent volume source
  • Process ID (PID) limiting is moving to beta. It is now possible to provide pod-to-pod PID isolation by defaulting the number of PIDs per pod
  • Node-to-pod PID isolation by reserving the number of allocatable PIDs to user pods is now available as an alpha feature
  • Pod priority and preemption allows Kubernetes scheduler to schedule Pods based on importance and also removes less important pods when the cluster is out of resources
  • Pod Readiness Gates provide a point for external feedback on pod readiness
  • Discovery has been removed from the APIs which allows for unauthenticated access by default

Kubernetes 1.14 is available for download on GitHub or can be installed using kubeadm. Starting next week, the Kubernetes blog will have a five-part walkthrough of the major components of this release.

Rate this Article