cluster.ninja

Kubernetes minor release · “Unlimited Breadsticks For All”

Kubernetes 1.16

The third release of 2019 made CustomResourceDefinitions generally available, reworked how metrics are registered, extended CSI volume handling, and was the first release to actually stop serving long-deprecated API versions.

End of life

End of life since 2 Sep 2020 (6.2 years ago). No more patches upstream.

Released18 Sep 2019
Maintenance mode—
End of life2 Sep 2020
Latest patch1.16.152 Sep 2020
Patch releases15
Support span11.5 months

What 1.16 brought

change

Deprecated API versions stop being served

Older API groups such as extensions/v1beta1 for Deployment are now rejected by the API server; manifests must use the current versions, for example apps/v1.

GA

CustomResourceDefinitions reach GA

CRDs graduate under apiextensions.k8s.io/v1. Structural schemas, pruning of unknown fields and validation become required or default, and defaulting is turned on.

beta

CSI volume resizing

Resizing support in the CSI spec moves to beta, so any CSI volume plugin can offer volume expansion.

alpha

EndpointSlice API introduced

A new, off-by-default API splits a Service's endpoints into smaller objects (100 endpoints each by default) to cut update traffic in large clusters; kube-proxy gains alpha support.

beta

Windows GMSA identity

Group Managed Service Account support for Windows containers moves to beta, letting them authenticate to external resources on the network.

alpha

kubeadm joins Windows nodes

kubeadm can now add and reset Windows worker nodes in an existing cluster in the same way it handles Linux nodes.

Summarised in our own words from the official “Kubernetes 1.16: Custom Resources, Overhauled Metrics, and Volume Extensions” announcement (31 tracked enhancements), © The Kubernetes Authors, CC BY 4.0.

APIs that stopped being served in 1.16

Upgrading to 1.16 breaks any manifest, Helm chart or client that still uses these API versions. Move them to the version in the last column before you upgrade the control plane.

KindAPI versionStops being servedUse instead
ControllerRevision apps/v1beta1 1.16 apps/v1
ControllerRevision apps/v1beta2 1.16 apps/v1
DaemonSet apps/v1beta2 1.16 apps/v1
Deployment apps/v1beta1 1.16 apps/v1
Deployment apps/v1beta2 1.16 apps/v1
DeploymentRollback apps/v1beta1 1.16 apps/v1
ReplicaSet apps/v1beta2 1.16 apps/v1
ReplicaSet apps/v1beta1 1.16 apps/v1
Scale apps/v1beta1 1.16 autoscaling/v1
Scale apps/v1beta2 1.16 autoscaling/v1
StatefulSet apps/v1beta1 1.16 apps/v1
StatefulSet apps/v1beta2 1.16 apps/v1
DaemonSet extensions/v1beta1 1.16 apps/v1
Deployment extensions/v1beta1 1.16 apps/v1
DeploymentRollback extensions/v1beta1 1.16 —
NetworkPolicy extensions/v1beta1 1.16 networking.k8s.io/v1
PodSecurityPolicy extensions/v1beta1 1.16 Pod Security Admission (no API replacement)
ReplicaSet extensions/v1beta1 1.16 apps/v1
Scale extensions/v1beta1 1.16 —

Other removals and deprecations

Removed

  • The API server no longer serves previously deprecated API versions; for example, a Deployment submitted as extensions/v1beta1 is rejected.

Deprecated

  • Some annotations introduced with the alpha Windows GMSA support are deprecated now that the feature is beta.

From the release announcement; our wording.

API versions deprecated in 1.16

Still served in 1.16, but the API server answers with a deprecation warning and a removal is scheduled.

KindAPI versionStops being servedUse instead
MutatingWebhookConfiguration admissionregistration.k8s.io/v1beta1 1.22 admissionregistration.k8s.io/v1
ValidatingWebhookConfiguration admissionregistration.k8s.io/v1beta1 1.22 admissionregistration.k8s.io/v1
CustomResourceDefinition apiextensions.k8s.io/v1beta1 1.22 apiextensions.k8s.io/v1

Stable (GA) API kinds new in 1.16

MutatingWebhookConfiguration admissionregistration.k8s.io/v1ValidatingWebhookConfiguration admissionregistration.k8s.io/v1ConversionReview apiextensions.k8s.io/v1CustomResourceDefinition apiextensions.k8s.io/v1

Upgrading

Version skew with a 1.16 API server

  • kubelet, kube-proxy: 1.14 to 1.16
  • kube-controller-manager, scheduler: 1.16 to 1.16
  • kubectl: 1.16 to 1.17

From the official version skew policy as it stands today.

One minor at a time

The API server must not skip minor versions.

Patch releases

16 releases, newest first
  1. 1.16.152 Sep 2020
  2. 1.16.1413 Aug 2020
  3. 1.16.1315 Jul 2020
  4. 1.16.1226 Jun 2020
  5. 1.16.1117 Jun 2020
  6. 1.16.1020 May 2020
  7. 1.16.916 Apr 2020
  8. 1.16.812 Mar 2020
  9. 1.16.711 Feb 2020
  10. 1.16.621 Jan 2020
  11. 1.16.516 Jan 2020
  12. 1.16.411 Dec 2019
  13. 1.16.313 Nov 2019
  14. 1.16.215 Oct 2019
  15. 1.16.12 Oct 2019
  16. 1.16.018 Sep 2019