Compartir a través de


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

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.

AKS detiene automáticamente las operaciones de actualización que constan de un cambio de versión secundaria con API en desuso y le envía un mensaje de error para avisarle sobre el problema.

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 la página de información general del clúster y seleccione Diagnóstico y resolución de problemas.

  2. Vaya a la categoría Create, Upgrade, Delete and Scale (Creación, actualización, eliminación y escalado) y seleccione Kubernetes API deprecations (API de Kubernetes en desuso).

    A screenshot of the Azure portal showing the 'Selected Kubernetes API deprecations' section.

  3. Espere 12 horas desde el momento en que se vio el último uso de API en desuso. Compruebe el verbo en el uso de la API en desuso para saber si es una inspección.

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

También puede comprobar el uso de API anterior mediante la habilitación de Información del contenedor y la exploración de los registros de auditoría de Kube. Compruebe el verbo en el uso de la API en desuso para comprender si es un caso de uso de inspección.

Omitir la validación para omitir los cambios de API

Nota:

Este método requiere que use la versión 2.53 o posterior de la CLI de Azure. Si tiene instalada la extensión de la CLI aks-preview, deberá actualizar a la versión 0.5.154 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.

  • Omita la validación para ignorar los cambios importantes de la API mediante el comando az aks update. 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 update --name myAKSCluster --resource-group myResourceGroup --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.

  • Una vez que el comando anterior se haya realizado correctamente, puede volver a intentar la operación de actualización.

    az aks upgrade --name myAKSCluster --resource-group myResourceGroup --kubernetes-version <KUBERNETES_VERSION>
    

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