Uso de las zonas de disponibilidad en Azure Kubernetes Service (AKS)

En este artículo se proporciona información general sobre el uso de zonas de disponibilidad en Azure Kubernetes Service (AKS) para aumentar la disponibilidad de las aplicaciones.

Un clúster de AKS distribuye recursos, como los nodos y el almacenamiento, en secciones lógicas de la infraestructura subyacente de Azure. El uso de zonas de disponibilidad separa físicamente los nodos de otros nodos implementados en zonas de disponibilidad diferentes. Los clústeres de AKS implementados con varias zonas de compatibilidad configuradas en un clúster proporcionan un alto nivel de disponibilidad para proteger frente a errores de hardware o eventos de mantenimiento planeados.

¿Qué son las zonas de disponibilidad?

Las zonas de disponibilidad ayudan a proteger sus aplicaciones y datos de los fallos del centro de datos. Las zonas son ubicaciones físicas exclusivas dentro de una región de Azure. Cada zona incluye uno o más centros de datos, equipados con redes, alimentación y refrigeración independientes. Para garantizar la resistencia, siempre hay más de una zona en todas las regiones habilitadas para zonas. La separación física de las zonas de disponibilidad dentro de una región protege las aplicaciones y los datos frente a los errores del centro de datos.

Los clústeres de AKS que se implementan mediante zonas de disponibilidad que pueden distribuir nodos en varias zonas dentro de una sola región. Por ejemplo, un clúster en la región Este de EE. UU. 2 puede crear nodos en las tres zonas de disponibilidad del Este de EE. UU. 2. Esta distribución de los recursos del clúster de AKS mejora la disponibilidad del clúster, ya que son resistentes a los errores de una zona específica.

Diagrama que muestra la distribución de nodos de AKS entre zonas de disponibilidad.

Si una sola zona deja de estar disponible, las aplicaciones siguen ejecutándose en los clústeres configurados para distribuirse entre varias zonas.

Para más información, consulte Zonas de disponibilidad de AKS y Azure.

Nota:

Al implementar zonas de disponibilidad con el cluster autoscaler, recomendamos utilizar un único pool de nodos para cada zona. Puede establecer el parámetro --balance-similar-node-groups en true para mantener una distribución equilibrada de nodos entre zonas para las cargas de trabajo durante las operaciones de escalado vertical. Cuando este enfoque no se implementa, las operaciones de reducción vertical pueden interrumpir el equilibrio de nodos entre zonas. Esta configuración no garantiza que los grupos de nodos similares tengan el mismo número de nodos:

  • Actualmente, el equilibrio solo se produce durante las operaciones de escalado vertical. El escalador automático del clúster reduce verticalmente los nodos infrautilizados independientemente de los tamaños relativos de los grupos de nodos.
  • El escalador automático del clúster solo agrega tantos nodos como sea necesario para ejecutar todos los pods existentes. Algunos grupos pueden tener más nodos que otros si tienen más pods programados.
  • El escalador automático del clúster solo equilibra entre grupos de nodos que pueden admitir el mismo conjunto de pods pendientes.

También puede usar discos de almacenamiento con redundancia de zona (ZRS) de Azure para replicar el almacenamiento en tres zonas de disponibilidad de la región que seleccione. Un disco ZRS le permite recuperarse de un error de zona de disponibilidad sin pérdida de datos. Para más información, consulte ZRS para discos administrados.

Limitaciones

Las siguientes limitaciones se aplican cuando crea un clúster de AKS mediante zonas de disponibilidad:

  • Las zonas de disponibilidad solo se pueden definir durante cuando la creación del grupo de clústeres o nodos.
  • No es posible actualizar un clúster de una zona de no disponibilidad existente para usar zonas de disponibilidad después de crear el clúster.
  • El tamaño de nodo (SKU de VM) seleccionado debe estar disponible en todas las zonas de disponibilidad seleccionadas.
  • Los clústeres con zonas de disponibilidad habilitadas requieren el uso de equilibradores de Azure Standard Load Balancer para la distribución entre zonas. Este tipo de equilibrador de carga solo se puede definir en el momento de la creación del clúster. Para obtener más información y las limitaciones del equilibrador de carga estándar, consulte las limitaciones de la SKU estándar del equilibrador de carga de Azure.

Compatibilidad con la zona de disponibilidad de disco de Azure

Los volúmenes que usan discos de almacenamiento con redundancia local administrados de Azure no son recursos con redundancia de zona; no se admiten la conexión entre zonas. Debe colocar los volúmenes en la misma zona que el nodo especificado que hospeda el pod de destino. Los volúmenes que usan discos ZRS administrados de Azure son recursos con redundancia de zona. Esos volúmenes se pueden programar en todos los nodos de agente de zona y que no son de zona. En el ejemplo siguiente se muestra cómo crear una clase de almacenamiento mediante el disco StandardSSD_ZRS:

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: managed-csi-zrs
provisioner: disk.csi.azure.com
parameters:
  skuName: StandardSSD_ZRS  # or Premium_ZRS
reclaimPolicy: Delete
volumeBindingMode: WaitForFirstConsumer
allowVolumeExpansion: true

Las versiones 1.12 y posteriores de Kubernetes son conscientes de las zonas de disponibilidad de Azure. Puede implementar un objeto PersistentVolumeClaim que haga referencia a un disco administrado de Azure en un clúster de AKS con varias zonas y Kubernetes se encargará de programar cualquier pod que reclame este PVC en la zona de disponibilidad correcta.

A partir de la versión 1.29 de Kubernetes, al implementar clústeres de Azure Kubernetes Service (AKS) en varias zonas de disponibilidad, AKS usa ahora almacenamiento con redundancia de zona (ZRS) para crear discos administrados en clases de almacenamiento integradas. ZRS garantiza la replicación sincrónica de los discos administrados de Azure en varias zonas de disponibilidad de Azure en la región elegida. Esta estrategia de redundancia mejora la resistencia de las aplicaciones y protege los datos frente a errores del centro de datos.

Sin embargo, es importante tener en cuenta que el almacenamiento con redundancia de zona (ZRS) tiene un costo mayor en comparación con el almacenamiento con redundancia local (LRS). Si la optimización de costos es una prioridad, puede crear una nueva clase de almacenamiento con el parámetro skuname establecido en LRS. A continuación, puede usar la nueva clase de almacenamiento en la notificación de volumen persistente (PVC).

Pasos siguientes