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.
Kubernetes minor release · “Unlimited Breadsticks For All”
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 since 2 Sep 2020 (6.2 years ago). No more patches upstream.
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.
CRDs graduate under apiextensions.k8s.io/v1. Structural schemas, pruning of unknown fields and validation become required or default, and defaulting is turned on.
Resizing support in the CSI spec moves to beta, so any CSI volume plugin can offer volume expansion.
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.
Group Managed Service Account support for Windows containers moves to beta, letting them authenticate to external resources on the network.
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.
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.
| Kind | API version | Stops being served | Use 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 | — |
From the release announcement; our wording.
Still served in 1.16, but the API server answers with a deprecation warning and a removal is scheduled.
| Kind | API version | Stops being served | Use 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 |
MutatingWebhookConfiguration admissionregistration.k8s.io/v1ValidatingWebhookConfiguration admissionregistration.k8s.io/v1ConversionReview apiextensions.k8s.io/v1CustomResourceDefinition apiextensions.k8s.io/v1
From the official version skew policy as it stands today.
The API server must not skip minor versions.