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.
Changed defaults
The following table describes changes for the default values of parameters that
you don't define if you are moving from apps/v1beta1
.
Object | Change | New behavior |
---|---|---|
DaemonSet | spec.updateStrategy.type : OnDelete changed to RollingUpdate |
With RollingUpdate, changing DaemonSet definitions automatically recreate Pods. |
Deployment | spec.progressDeadlineSeconds : 2147483647 decreased to 600 |
Lowers the time Deployments remain "in progress" before being declared as failed. |
spec.revisionHistoryLimit : 2147483647 decreased to 10 |
Limits the number of ReplicaSet objects that are left before being deleted by the Deployment controller. | |
spec.strategy.rollingUpdate.maxSurge : increased to 25% |
Defines the maximum number of Pods that a rolling update can create over the desired number of Pods specified in specs.replicas. | |
spec.strategy.rollingUpdate.maxUnavailable : increased to 25% |
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. | |
StatefulSet | spec.updateStrategy.type : OnDelete changed to RollingUpdate |
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.
Troubleshooting
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
The 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
Resources
More information is available in the OSS Kubernetes documentation: