The Kubernetes 1.16 release no longer serves long-deprecated versions of specific APIs. The current API versions have been available since v1.10 and are available on all supported versions of Google Kubernetes Engine (GKE).
What's changed in 1.16
Most of the deprecated APIs are former Beta APIs that have since graduated from Beta to Stable. The Stable APIs provide longer-term compatibility guarantees and should be used in place of the deprecated Beta APIs.
The following table describes changes for the default values of parameters that
you don't define if you are moving from
||With RollingUpdate, changing DaemonSet definitions automatically recreate Pods.|
||Lowers the time Deployments remain "in progress" before being declared as failed.|
||Limits the number of ReplicaSet objects that are left before being deleted by the Deployment controller.|
||Defines the maximum number of Pods that a rolling update can create over the desired number of Pods specified in specs.replicas.|
||The rolling update only continues when the number of unavailable Pods are below this number. If it's a percentage, it's specified in spec.replicas.|
||With RollingUpdate, changing StatefulSet definitions automatically recreate Pods.|
Preparing to upgrade to 1.16
You do not need to delete and recreate any of your API objects. All existing persisted API objects can already be read and updated using the new API versions.
However, we recommend that you migrate your clients and manifests before upgrading to Kubernetes 1.16. All GKE versions have the new APIs versions available.
Locating API clients writing to deprecated APIs
Clusters with Google Cloud's operations suite enabled can use the following query to identify clients that write to deprecated APIs:
resource.type="k8s_cluster" resource.labels.cluster_name="$CLUSTER_NAME" protoPayload.authenticationInfo.principalEmail:("system:serviceaccount" OR "@") protoPayload.request.apiVersion=("extensions/v1beta1" OR "apps/v1beta1" OR "apps/v1beta2") protoPayload.request.kind!="Ingress" NOT ("kube-system")
Deprecated versions appear after running
kubectl get ... -o yaml
kubectl get ... prefers the extensions/v1beta1 version if it is available
on the cluster being used. For example, the following command gets
extensions/v1beta1 deployments on a 1.15 cluster:
kubectl get deployments -o yaml
After upgrading the clusters to Kubernetes 1.16, the same command will automatically use the new API.
You can explicitly specify an API group or version. For example, to fetch apps/v1 deployments, run:
kubectl get deployments.v1.apps -o yaml
More information is available in the OSS Kubernetes documentation: