Ubicación automática de zona en Azure Kubernetes Service (versión preliminar)

La colocación automática de zonas en Azure Kubernetes Service (AKS) selecciona dinámicamente el mejor conjunto de zonas de disponibilidad para un grupo de nodos. No es necesario especificar las zonas manualmente para cada región y combinación de SKU de máquina virtual. Al crear o actualizar un grupo de nodos con --zones auto, AKS coloca máquinas virtuales (VM) en zonas de disponibilidad que tienen capacidad para la SKU solicitada en la región de destino y aplica un porcentaje máximo de instancia de 50% por zona.

En este artículo se muestra cómo crear o actualizar grupos de nodos de AKS que usan la selección automática de ubicación de zona.

Cómo funciona la colocación automática de zonas

Cuando especifica --zones auto (o availabilityZones: ["auto"] en el perfil del grupo de agentes), AKS usa la política de colocación automática en zonas de Azure Compute para seleccionar zonas y distribuir los nodos. No es necesario especificar números de zona ni mantener configuraciones de zona diferentes para cada región y SKU de máquina virtual.

La colocación automática de zonas funciona de la siguiente manera:

  1. AKS evalúa qué zonas de disponibilidad de la región de destino pueden admitir la SKU de máquina virtual solicitada.
  2. AKS selecciona inicialmente hasta tres zonas disponibles y coloca nodos según la directiva de selección automática de zonas. De forma predeterminada, ninguna zona única puede contener más de 50% del grupo de nodos.
  3. Durante las operaciones de escalabilidad horizontal posteriores, AKS vuelve a evaluar la disponibilidad de la zona. Si Azure agrega una zona a la región o hace que la SKU de máquina virtual esté disponible en otra zona, AKS podría colocar nuevos nodos en esa zona cuando la directiva de selección de ubicación y la capacidad disponible lo permitan. No es necesario actualizar la configuración del grupo de nodos.

Importante

El límite de 50% es una concentración máxima por zona, no una garantía de que los nodos siempre se distribuyan de forma equitativa. La distribución real depende del número de nodos, de las zonas que admiten la SKU de máquina virtual seleccionada y de la capacidad disponible cuando se aprovisionan los nodos. Se puede producir un error en una operación de creación o escalado si Azure no puede asignar los nodos solicitados al tiempo que respeta el límite por zona.

Este enfoque aborda los puntos débiles comunes con la especificación manual de zonas:

  • Despliegues independientes de la región: utilice configuraciones coherentes entre regiones sin tener que preocuparse por las diferencias en la disponibilidad de las zonas.
  • Resistencia mejorada: lograr automáticamente redundancia de varias zonas para mejorar la disponibilidad de las aplicaciones.
  • Expansión automática de zonas: aproveche sin problemas nuevas zonas de disponibilidad cuando las regiones se expandan (por ejemplo, de tres a cuatro zonas).
  • Menos fallos en la implementación: reduzca los fallos de asignación durante la creación y el escalado causados por restricciones de capacidad en una zona específica, según la tolerancia de su carga de trabajo al equilibrio entre zonas.

Limitaciones y consideraciones

  • La colocación automática de zonas admite la creación y actualización de grupos de nodos basados en Virtual Machine Scale Sets y Virtual Machines.
  • El límite predeterminado por zona es 50% de nodos.
  • La ubicación automática en zonas está pensada para cargas de trabajo que abarcan varias zonas. En el caso de las cargas de trabajo alineadas con zona (donde cada grupo de nodos está anclado a una sola zona), siga especificando la zona explícitamente mediante --zones 1, --zones 2, etc.

Prerequisites

Importante

Las características en versión preliminar de AKS están disponibles en modalidad de autoservicio y previa suscripción. Las versiones preliminares se proporcionan "tal cual" y "como están disponibles", y están excluidas de los Acuerdos de nivel de servicio y la garantía limitada. Las versiones preliminares de AKS cuentan con soporte parcial por parte del servicio al cliente en la medida de lo posible. Por lo tanto, estas características no están diseñadas para su uso en producción. Para más información, consulte los siguientes artículos de soporte:

  • Versión 2026-01-02-preview o posterior de la API de AKS.

  • La versión más reciente de la extensión de CLI de Azure aks-preview.

  • Una región que admite zonas de disponibilidad. Para más información, consulte la lista de regiones de Azure.

  • El indicador de funcionalidad VmssAutomaticZonePlacement registrado en su suscripción. Registre el indicador de características con el comando az feature register:

    az feature register \
      --namespace Microsoft.Compute \
      --name VmssAutomaticZonePlacement
    

    Compruebe el estado del registro mediante el az feature show comando :

    az feature show \
      --namespace Microsoft.Compute \
      --name VmssAutomaticZonePlacement \
      --query properties.state \
      --output tsv
    

    Espere hasta que el comando vuelva Registered antes de continuar.

Creación de un clúster de AKS con ubicación automática de zona (versión preliminar)

Cree un nuevo clúster de AKS con un grupo de nodos del sistema basado en Virtual Machine Scale Sets o en Virtual Machines que use la asignación automática de zonas mediante el comando az aks create con --zones auto:

az aks create \
  --resource-group example-rg \
  --name example-cluster \
  --node-vm-size Standard_D8s_v5 \
  --node-count 10 \
  --zones auto

AKS elige las zonas que tienen capacidad para Standard_D8s_v5 en la región de destino y distribuye los 10 nodos a través de ellas, sin una sola zona que contenga más de 50% de los nodos.

Adición de un grupo de nodos con ubicación automática de zona (versión preliminar)

Agregue un nuevo grupo de nodos basado en Virtual Machine Scale Sets o basado en Virtual Machines a un clúster existente mediante el az aks nodepool add comando con --zones auto:

az aks nodepool add \
  --resource-group example-rg \
  --cluster-name example-cluster \
  --name userpoolauto \
  --node-vm-size Standard_D8s_v5 \
  --node-count 6 \
  --zones auto

Actualización de un grupo de nodos existente para usar la ubicación automática de zona (versión preliminar)

Actualice un grupo de nodos existente basado en Virtual Machine Scale Sets o en Virtual Machines para usar la ubicación automática en zonas mediante el comando az aks nodepool update con --zones auto:

az aks nodepool update \
  --resource-group example-rg \
  --cluster-name example-cluster \
  --name nodepool1 \
  --zones auto

AKS actualiza el grupo de nodos existente mediante una operación gradual:

  1. AKS agrega nodos adicionales que usan la asignación automática de zonas.
  2. AkS acordona y purga los nodos existentes.
  3. AKS quita los nodos existentes después de que sus cargas de trabajo se muevan a los nodos de sobrecarga.

La operación respeta las siguientes opciones de actualización que se configuran en el grupo de nodos:

  • Sobrecarga máxima (--max-surge): controla el número de nodos adicionales que AKS agrega durante la actualización. Un valor más alto completa la actualización más rápido, pero requiere más cuota de proceso y capacidad ip de subred.
  • Tiempo de espera de drenado del nodo (--drain-timeout): Controla cuánto tiempo espera AKS a que se desalojen los pods de un nodo antes de que se produzca un error en la operación de drenado.
  • Tiempo de espera del nodo (--node-soak-duration): Controla cuánto tiempo espera AKS después de que un nodo nuevo esté listo antes de continuar con el siguiente lote.

Antes de iniciar la actualización, asegúrese de que dispone de suficiente cuota de procesamiento y capacidad de IP en la subred para los nodos adicionales, y de que los presupuestos de interrupción de pods permiten vaciar los nodos.

Comprobación de la ubicación de la zona

Después de crear o actualizar el clúster o el grupo de nodos, compruebe las zonas seleccionadas por AKS mediante el az aks show comando .

az aks show \
 --name example-cluster \
 --resource-group example-rg \
 --query agentPoolProfiles[].availabilityZones \
 --output tsv

También puede usar kubectl para confirmar la distribución de nodos entre zonas.

kubectl get nodes -o custom-columns='NAME:metadata.name, REGION:metadata.labels.topology\.kubernetes\.io/region, ZONE:metadata.labels.topology\.kubernetes\.io/zone'

Ejemplo de resultado:

NAME                                REGION   ZONE
aks-nodepool1-12345678-vmss000000   eastus   eastus-1
aks-nodepool1-12345678-vmss000001   eastus   eastus-2
aks-nodepool1-12345678-vmss000002   eastus   eastus-3
...