Detención automática de las actualizaciones de clúster de Azure Kubernetes Service (AKS) en los cambios importantes de la API

En este artículo se muestra cómo detener automáticamente las actualizaciones del clúster de Azure Kubernetes Service (AKS) en caso de cambios importantes en la API.

Información general

Para mantenerse dentro de una versión de Kubernetes que sea admitida, debe actualizar el clúster al menos una vez al año y prepararse para todas las posibles interrupciones. Estas interrupciones incluyen las causadas por cambios importantes en la API, desusos y dependencias, como Helm y Container Storage Interface (CSI). Puede ser difícil prever estas interrupciones y migrar las cargas de trabajo críticas sin experimentar tiempo de inactividad.

Puede configurar el clúster de AKS para que detenga automáticamente las operaciones de actualización que constan de un cambio de versión secundaria con API en desuso y avisarle sobre el problema. Esta característica ayuda a evitar interrupciones inesperadas y proporciona tiempo para controlar las API en desuso antes de continuar con la actualización.

Antes de empezar

Antes de comenzar, asegúrese de cumplir los siguientes requisitos previos:

  • La operación de actualización es un cambio de versión menor de Kubernetes para el plano de control del clúster.
  • La versión de Kubernetes a la que va a actualizar es la 1.26 o posterior.
  • El último uso visto de las API en desuso para la versión de destino a la que va a actualizar debe producirse en un plazo de 12 horas antes de la operación de actualización. AKS registra el uso cada hora, por lo que no se garantiza que aparezca en la detección el uso de las API en desuso en el plazo de una hora.

Mitigación de las operaciones de actualización detenidas

Si cumple con los requisitos previos, intente realizar una actualización y recibirá un mensaje de error similar al siguiente mensaje de error de ejemplo:

Bad Request({
  "code": "ValidationError",
  "message": "Control Plane upgrade is blocked due to recent usage of a Kubernetes API deprecated in the specified version. Please refer to https://kubernetes.io/docs/reference/using-api/deprecation-guide to migrate the usage. To bypass this error, set enable-force-upgrade in upgradeSettings.overrideSettings. Bypassing this error without migrating usage will result in the deprecated Kubernetes API calls failing. Usage details: 1 error occurred:\n\t* usage has been detected on API flowcontrol.apiserver.k8s.io.prioritylevelconfigurations.v1beta1, and was recently seen at: 2023-03-23 20:57:18 +0000 UTC, which will be removed in 1.26\n\n",
  "subcode": "UpgradeBlockedOnDeprecatedAPIUsage"
})

Tiene dos opciones para mitigar el problema: puede quitar el uso de las API en desuso (opción recomendada) u omitir la validación para omitir los cambios de la API.

  1. En Azure Portal, vaya a su recurso de clúster y seleccione Diagnosticar y solucionar problemas

  2. Seleccione Crear, actualizar, eliminar y escalar>retiradas de API de Kubernetes.

    Captura de pantalla de Azure Portal que muestra la sección

  3. Espere 12 horas desde el momento en que se vio el último uso de API en desuso. Los verbos de solo lectura se excluyen del uso de la API en desuso, es decir, Get/List/Watch. (También puede comprobar el uso de la API anterior habilitando Container Insights y explorando los registros de auditoría de Kube).

  4. Vuelva a intentar la actualización del clúster.

Omitir la validación para omitir los cambios de API

Nota:

Este método requiere que use la versión 2.57 o posterior de la CLI de Azure. Si tiene instalada la extensión de la CLI de versión preliminar, debe actualizar a la versión 3.0.0b10 o posterior. Este método no se recomienda, ya que es posible que las API en desuso en la versión de Kubernetes de destino no funcionen a largo plazo. Se recomienda quitarlos lo antes posible una vez completada la actualización.

  1. Omita la validación para ignorar los cambios importantes de la API e invocar una actualización. Especifique la enable-force-upgrade marca y establezca la propiedad upgrade-override-until para definir el final de la ventana durante la cual se omite la validación. Si no se establece ningún valor, la ventana predeterminada será de tres días a partir de la hora actual. La fecha y hora que especifique debe ser en el futuro.

    az aks upgrade --name $CLUSTER_NAME --resource-group $RESOURCE_GROUP_NAME --kubernetes-version $KUBERNETES_VERSION --enable-force-upgrade --upgrade-override-until 2023-10-01T13:00:00Z
    

    Nota

    Z es el designador de zona para el desplazamiento UTC/GMT cero, también conocido como hora "zulú". En este ejemplo se establece el final de la ventana en 13:00:00 GMT. Para obtener información, consulte Representaciones de fecha y hora combinadas.

Pasos siguientes

En este artículo se muestra cómo detener las actualizaciones del clúster de AKS automáticamente en los cambios importantes de la API. Para obtener más información sobre más opciones de actualización para clústeres de AKS, consulte Opciones de actualización para clústeres de Azure Kubernetes Service (AKS).