Compartir a través de


Opciones de actualización para clústeres de Azure Kubernetes Service (AKS)

En este artículo se describen las distintas opciones de actualización de los clústeres de AKS. Para realizar una actualización básica de la versión de Kubernetes, consulte Actualización de un clúster de AKS.

Para los clústeres de AKS que usan varios grupos de nodos o nodos de Windows Server, consulte Actualización de un grupo de nodos en AKS. Para actualizar un grupo de nodos específico sin realizar una actualización del clúster de Kubernetes, consulte Actualización de un grupo de nodos específico.

Realizar actualizaciones manuales

Puede realizar actualizaciones manuales para controlar cuándo se actualiza el clúster a una nueva versión de Kubernetes. Las actualizaciones manuales son útiles cuando desea probar una nueva versión de Kubernetes antes de actualizar el clúster de producción. También puede usar actualizaciones manuales para actualizar el clúster a una versión específica de Kubernetes que no sea la versión disponible más reciente.

Para realizar actualizaciones manuales, consulte los artículos siguientes:

Configuración de actualizaciones automáticas

Puede configurar las actualizaciones automáticas para actualizar automáticamente el clúster a la versión más reciente de Kubernetes disponible. Las actualizaciones automáticas son útiles cuando desea asegurarse de que el clúster siempre ejecute la versión más reciente de Kubernetes. También puede usar actualizaciones automáticas para asegurarse de que el clúster siempre ejecuta una versión de Kubernetes compatible.

Para configurar las actualizaciones automáticas, consulte los siguientes artículos:

Consideraciones especiales para los grupos de nodos que abarcan varias zonas de disponibilidad

AKS usa el equilibrio de zona de mejor esfuerzo en grupos de nodos. Durante una sobrecarga de actualización, las zonas de los nodos de sobrecarga en Virtual Machine Scale Sets son desconocidas con antelación, lo que puede provocar temporalmente una configuración de zona desequilibrada durante una actualización. Sin embargo, AKS elimina los nodos de sobrecarga una vez completada la actualización y conserva el equilibrio de zona original. Si quiere mantener equilibradas las zonas durante las actualizaciones, puede aumentar la sobrecarga en un múltiplo de tres nodos y Virtual Machine Scale Sets equilibra los nodos en las zonas de disponibilidad con equilibrio de zona de mejor esfuerzo. Con la mejor opción de equilibrio de zonas, el conjunto de escalado intenta aumentarse y reducirse horizontalmente, y conserva el equilibrio. Sin embargo, si por alguna razón no es posible (por ejemplo, que una zona deje de funcionar, y, como consecuencia, el conjunto de escala no pueda crear una máquina virtual en esa zona), el conjunto de escalado permite el desequilibrio temporal para realizar correctamente el aumento o la reducción horizontal.

Las notificaciones de volumen persistente (PVC) respaldadas por discos de almacenamiento con redundancia local (LRS) de Azure están enlazadas a una zona determinada y podrían no recuperarse inmediatamente si el nodo de sobrecarga no coincide con la zona del PVC. Si las zonas no coinciden, podría haber un tiempo de inactividad en la aplicación cuando la operación de actualización continúa purgando nodos, pero los PV están enlazados a una zona. Para controlar este caso y mantener la alta disponibilidad, configure un presupuesto de interrupciones de pods en la aplicación para permitir que Kubernetes respete los requisitos de disponibilidad durante la operación de purga.

Optimización para el comportamiento de nodo no purgable (versión preliminar)

Puede configurar el comportamiento del proceso de actualización para errores de purga. El comportamiento de actualización predeterminado es Schedule, que consta de un error de purga de nodo que provoca un error en la operación de actualización, dejando los nodos sin detectar en un estado programable. Como alternativa, puede seleccionar el comportamiento Cordon, que omite los nodos que no se pueden purgar si los coloca en un estado en cuarentena, los etiqueta como kubernetes.azure.com/upgrade-status:Quarantined y continúa con la actualización de los nodos restantes. Este comportamiento garantiza que todos los nodos se actualicen o se pongan en cuarentena. Este enfoque le permite solucionar errores de purga y administrar correctamente los nodos en cuarentena.

¿Cómo se establece el nuevo comportamiento de Cordon?

Use la versión preliminar de la CLI e instale la extensión aks-preview 9.0.0b3 o posterior.

Puede usar los siguientes comandos para actualizar o instalar la extensión aks-preview:

az extension update --name aks-preview
az extension add --name aks-preview

Actualice el comportamiento de nodo no purgable del grupo de nodos a Cordon:

az aks nodepool update --cluster-name $CLUSTER_NAME --name $NODE_POOL_NAME --resource-group $RESOURCE_GROUP --max-surge 1 --undrainable-node-behavior Cordon

En la salida de ejemplo siguiente se muestra el comportamiento de nodo no purgable actualizado:

"upgradeSettings": {
    "drainTimeoutInMinutes": null,
    "maxSurge": "1",
    "nodeSoakDurationInMinutes": null,
    "undrainableNodeBehavior": "Cordon"
  }

Compruebe la etiqueta de los nodos bloqueados. Cuando se produce un error en el nodo de purga al actualizar mediante el comando siguiente:

kubectl get nodes --show-labels=true

Los nodos bloqueados no están programados para los pods y se marcan con la etiqueta "kubernetes.azure.com/upgrade-status: Quarantined". El número máximo de nodos que se pueden dejar bloqueados no puede ser mayor que el valor Max-Surge.

¿Cómo se quitan los nodos bloqueados?

En primer lugar, resuelva el problema que provoca el drenaje. En el ejemplo siguiente se quita el PDB responsable:

kubectl delete pdb nginx-pdb
poddisruptionbudget.policy "nginx-pdb" deleted.

A continuación, elimine el nodo bloqueado mediante el comando az aks nodepool delete-machines. Este comando es útil si piensa reducir la superficie del grupo de nodos quitando los nodos que están en versiones anteriores.

az aks nodepool delete-machines --cluster-name MyCluster --machine-names aks-nodepool1-test123-vmss000000 --name nodepool1 --resource-group TestRG

Después de completar este paso, puede conciliar el estado del clúster realizando cualquier operación de actualización sin los campos opcionales como se describe aquí.

Comando de ejemplo:

az aks update --resource-group TestRG --name MyCluster

Como alternativa, puede escalar el grupo de nodos al mismo número de nodos que el recuento de nodos actualizados. Esta acción garantiza que el grupo de nodos llegue a su tamaño original previsto. AKS prioriza la eliminación de los nodos bloqueados. Este comando también restaura el estado de aprovisionamiento del clúster en Succeeded. En el ejemplo especificado, 2 es el número total de nodos actualizados.

az aks nodepool scale --resource-group TestRG --cluster-name MyCluster --name nodepool1 --node-count 2 

Optimización de las actualizaciones para mejorar el rendimiento y minimizar las interrupciones

La combinación de la ventana de mantenimiento planeado, el aumento máximo, el presupuesto de interrupción de pods , el tiempo de espera de purga de nodosy el tiempo de inmersión de nodos puede aumentar significativamente la probabilidad de que las actualizaciones de nodos se completen con éxito al final de la ventana de mantenimiento, al tiempo que también minimizan las interrupciones.

  • La ventana de mantenimiento planeado permite a los equipos de servicio programar la actualización automática durante una ventana predefinida, normalmente un periodo de poco tráfico, para minimizar el impacto en la carga de trabajo. Se recomienda una duración de al menos cuatro horas.
  • El aumento máximo en el grupo de nodos permite solicitar una cuota adicional durante el proceso de actualización y limita el número de nodos seleccionados para la actualización simultáneamente. Un aumento máximo mayor da como resultado un proceso de actualización más rápido. No se recomienda establecerlo en el 100 %, ya que actualiza todos los nodos simultáneamente, lo que puede provocar interrupciones en las aplicaciones en ejecución. Se recomienda una cuota de aumento máxima del 33 % para los grupos de nodos de producción.
  • El presupuesto de interrupciones de pods se establece para las aplicaciones de servicio y limita el número de pods que se pueden reducir durante las interrupciones voluntarias, como las actualizaciones de nodo controladas por AKS. Puede configurarse como réplicas minAvailable, indicando el número mínimo de pods de aplicación que deben estar activos o réplicas maxUnavailable, indicando el número máximo de pods de aplicación que pueden darse de baja, garantizando una alta disponibilidad para la aplicación. Consulte la guía proporcionada para configurar los presupuestos de interrupción de pods (PDB). Los valores de PDB deben validarse para determinar la configuración que mejor funciona para su servicio específico.
  • El tiempo de espera de purga de nodos en el grupo de nodos permite configurar la duración de espera para la expulsión de pods y la terminación correcta por nodo durante una actualización. Esta opción es útil cuando se trabaja con cargas de trabajo de larga duración. Cuando se especifica el tiempo de espera de purga del nodo (en minutos), AKS respeta la espera de presupuestos de interrupciones del pod. Si no se especifica, el tiempo de espera predeterminado es de 30 minutos.
  • El tiempo de inmersión del nodo ayuda a escalonar las actualizaciones de nodos de forma controlada y puede minimizar el tiempo de inactividad de la aplicación durante una actualización. Puede especificar un tiempo de espera, preferiblemente lo más cercano posible a 0 minutos, para comprobar el estado de preparación de la aplicación entre actualizaciones de nodos. Si no se especifica, el valor predeterminado es 0 minutos. El tiempo de inmersión de nodos está asociado a las propiedades de sobrecarga máxima y tiempo de espera de purga de nodos disponibles en el grupo de nodos para ofrecer los resultados correctos en términos de velocidad de actualización y disponibilidad de la aplicación.

Pasos siguientes

En este artículo se listan diferentes opciones de actualización para clústeres de AKS. Para obtener una explicación detallada de los procedimientos recomendados de actualización y otras consideraciones, consulte Guía de actualización y revisión de AKS.