API obsoletas de Kubernetes 1.16

La versión 1.16 de Kubernetes ya no entrega versiones obsoletas desde hace bastante tiempo de las API específicas. Las versiones actuales de API están disponibles a partir de la versión 1.10 y se incluyen en todas las versiones compatibles de Google Kubernetes Engine (GKE).

Cambios de la versión 1.16

La mayoría de las API obsoletas son API que antes estaban en versión Beta y que ahora son estables. Las API estables proporcionan garantías de compatibilidad a largo plazo y deben usarse en lugar de las API Beta obsoletas.

Cambios predeterminados

En la siguiente tabla, se describen los cambios para los valores predeterminados de los parámetros que no especificas si los migrarás desde apps/v1beta1.

Objeto Cambio Comportamiento nuevo
DaemonSet spec.updateStrategy.type: OnDelete cambió a RollingUpdate Con RollingUpdate, cuando se cambian las definiciones de DaemonSet, se vuelven a crear los pods de forma automática.
Deployment spec.progressDeadlineSeconds: 2147483647 se redujo a 600 Reduce el tiempo que los objetos Deployment permanecen “en curso” antes de que se declaren como errores.
spec.revisionHistoryLimit: 2147483647 se redujo a 10 Limita la cantidad de objetos ReplicaSet que quedan antes de que el controlador de Deployment los borre.
spec.strategy.rollingUpdate.maxSurge: aumentó al 25% Define la cantidad máxima de pods que puede crear una actualización progresiva sobre la cantidad deseada de pods que se especifica en specs.replicas.
spec.strategy.rollingUpdate.maxUnavailable: aumentó al 25% La actualización progresiva solo continúa cuando la cantidad de pods no disponibles está por debajo de esta cantidad. Si es un porcentaje, se especifica en spec.replicas.
StatefulSet spec.updateStrategy.type: OnDelete cambió a RollingUpdate Con RollingUpdate, cuando se cambian las definiciones de StatefulSet, se vuelven a crear los pods de forma automática.

Prepárate para actualizar a 1.16

No es necesario que borres ni vuelvas a crear ningún objeto de API. Todos los objetos de API persistentes existentes ya se pueden leer y actualizar mediante las nuevas versiones de API.

Sin embargo, te recomendamos que migres a tus clientes y manifiestos antes de actualizar a Kubernetes 1.16. Todas las versiones de GKE tienen las nuevas versiones de API disponibles.

Soluciona problemas

Identifica los clientes de API que escriben en API obsoletas

Los clústeres que tienen Google Cloud's operations suite habilitado pueden usar la siguiente consulta para identificar clientes que escriben en las API obsoletas:

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")

Las versiones obsoletas aparecen luego de ejecutar kubectl get ... -o yaml

kubectl get ... prefiere la versión extensions/v1beta1 si está disponible en el clúster que se usa. Por ejemplo, el siguiente comando obtiene implementaciones extensions/v1beta1 en un clúster 1.15:

kubectl get deployments -o yaml

Después de actualizar los clústeres a Kubernetes 1.16, el mismo comando usará de forma automática la API nueva.

Puedes especificar de forma explícita un grupo o una versión de API. Por ejemplo, para recuperar implementaciones apps/v1, ejecuta lo siguiente:

kubectl get deployments.v1.apps -o yaml

Recursos

Puedes encontrar más información en la documentación de Kubernetes de OSS: