Almacenamiento de contenedores de Windows con AKS Hybrid

Completado

Las opciones de implementación híbrida de Azure Kubernetes Service (AKS) ("híbrido de AKS") son una implementación local del orquestador de Azure Kubernetes Service. El orquestador automatiza la ejecución de aplicaciones en contenedores a gran escala, al tiempo que permite operar aplicaciones nativas en la nube coherentes en cualquier lugar. Infraestructura local e integración con los servicios de Azure.

En función de la clase de hardware, la disponibilidad de proceso y el proceso de adopción de Kubernetes, están disponibles las siguientes opciones de implementación híbrida de AKS:

  • AKS en Windows Server
  • AKS en Azure Stack HCI (infraestructura hiperconvergida)
  • Aprovisionamiento de clústeres de AKS desde Azure (VERSIÓN PRELIMINAR)
  • AKS Edge Essentials

Almacenamiento en AKS híbrido

Dado que AKS híbrido es una implementación de AKS, la mayoría de los conceptos de almacenamiento son los mismos. Un clúster híbrido de AKS contiene un plano de control administrado por AKS que proporciona los servicios y la orquestación principales de Kubernetes, mientras administra los nodos que contienen pods con las cargas de trabajo de la aplicación. En el diagrama siguiente se muestra la arquitectura de un clúster híbrido de AKS que usa la opción de implementación híbrida de Azure Kubernetes Service en Azure Stack HCI:

Diagram showing the architecture of an AKS hybrid cluster that is using the AKS hybrid deployment option AKS on Azure Stack HCI.

Como en AKS, los volúmenes tradicionales son recursos de Kubernetes respaldados por Azure Storage. Puede crear manualmente volúmenes de datos para que se asignen directamente a los pods, o bien hacer que Kubernetes los cree automáticamente. Para asociar estos volúmenes con Azure Storage, AKS híbrido usa el Container Storage Interface (CSI). AKS Hybrid admite contenedores de Windows y almacenamiento persistente con los mismos controladores CSI que AKS.

Al crear almacenamiento persistente, AKS híbrido usa los mismos conceptos de Kubernetes que AKS, con algunas variaciones. Los volúmenes persistentes se crean estática o dinámicamente. Si los crea dinámicamente, defina su tipo y ciclo de vida con una clase de almacenamiento y esté enlazado al volumen persistente (PV) con una notificación de volumen persistente (PVC).

Donde el almacenamiento híbrido de AKS difiere de AKS, es su compatibilidad con el uso del almacenamiento local como almacenamiento persistente.

Volúmenes persistentes

Un volumen persistente es un recurso de almacenamiento creado y administrado por la API de Kubernetes que puede existir más allá de la duración de un pod individual. Por ejemplo, al usar la opción de implementación híbrida de AKS en Azure Stack HCI, puede usar volúmenes de disco respaldados por VHDX (tipo de archivo de disco duro virtual) que se montan como ReadWriteOnce y son accesibles para un solo nodo a la vez. O bien, puede usar volúmenes de archivos de AKS respaldados por recursos compartidos de archivos SMB (bloque de mensajes del servidor) o NFS (sistema de archivos de red). Estos se montan como ReadWriteMany y están disponibles para varios nodos simultáneamente.

Un administrador de clústeres puede crear estáticamente un volumen persistente, crearlo dinámicamente, puede crearlo el servidor de API de Kubernetes. Si un pod está programado y solicita almacenamiento que no está disponible actualmente, Kubernetes puede crear el almacenamiento subyacente de Azure Disks o Azure Files y conectarlo al pod. El aprovisionamiento dinámico usa un StorageClass para identificar qué tipo de almacenamiento se debe crear.

Clases de almacenamiento

Una clase de almacenamiento define el nivel de almacenamiento, la ubicación y reclaimPolicy del recurso de almacenamiento subyacente.

En AKS híbrido, la clase de almacenamiento predeterminada se crea automáticamente y usa archivos CSV para crear volúmenes respaldados por VHDX. La directiva de reclamación garantiza que el VHDX subyacente se elimine cuando se elimine el volumen persistente que usó. La clase de almacenamiento también configura los volúmenes persistentes para que se puedan expandir, por tanto, solo es necesario editar la notificación de volumen persistente con el nuevo tamaño.

Si no especifica unStorageClass para un volumen persistente, se usa el valor predeterminado StorageClass. Cuando solicite volúmenes persistentes, asegúrese de que usen el almacenamiento adecuado que necesita. Puede crear una clase de StorageClass para más necesidades.

Notificaciones de volúmenes persistentes

Un objeto PersistentVolumeClaim solicita ReadWriteOnce o ReadWriteMany el almacenamiento de un StorageClassy un tamaño determinados. El servidor de API de Kubernetes puede aprovisionar dinámicamente el recurso de almacenamiento subyacente en el entorno híbrido de AKS si no hay ningún recurso existente para cumplir la notificación en función del StorageClass definido. La definición del pod incluye el montaje del volumen una vez que se este se ha conectado al pod.

Un PersistentVolume se enlaza a un PersistentVolumeClaim una vez que se ha asignado un recurso de almacenamiento disponible al pod que lo solicita. Existe una asignación de 1:1 de volúmenes a notificaciones.

Uso de discos locales para el almacenamiento persistente

Una de las ventajas de usar AKS Hybrid es que puede usar discos locales como almacenamiento persistente para contenedores de Windows. Los discos locales son discos físicos que están conectados a los nodos locales. Los discos locales ofrecen un alto rendimiento y una latencia baja para las aplicaciones contenedorizadas.

Para usar discos locales con contenedores de Windows en AKS híbrido, debe usar el complemento local-volume-provisioner. Este complemento detecta y crea automáticamente volúmenes persistentes (PV) para discos locales en los nodos. A continuación, debe crear notificaciones de volumen persistentes (PVC) que coincidan con los PV en función de la afinidad de nodo y la clase de almacenamiento. Por último, debe montar los PVC en los pods o contenedores mediante definiciones de volumen.