Consideraciones sobre almacenamiento de Azure Kubernetes Service (AKS)
Para ejecutar cargas de trabajo de aplicaciones específicas, la organización o la empresa deben diseñar funcionalidades adecuadas de nivel de plataforma de Azure Kubernetes Service (AKS). Es probable que estas cargas de trabajo tengan requisitos de almacenamiento diferentes. Al elegir la solución de almacenamiento adecuada para la aplicación, tiene varias consideraciones, como el rendimiento, la disponibilidad, la capacidad de recuperación, la seguridad y el costo. El objetivo de este artículo es guiarle para elegir la opción o la combinación de opciones más adecuadas para la carga de trabajo.
Kubernetes puede ejecutar cargas de trabajo sin estado y con estado. Las cargas de trabajo con estado suelen requerir una solución de almacenamiento para almacenar el estado. AKS admite varias opciones integradas para el almacenamiento nativo, que incluyen bases de datos administradas, discos (o bloques) y almacenamiento de archivos y de blobs (u objetos). Cada una de estas opciones ofrece diferentes SKU, tamaños y características de rendimiento. La selección de la opción correcta debe considerarse con atención.
En este artículo se describen los factores y las opciones que debe tener en cuenta a la hora de Seleccionar el servicio de almacenamiento adecuado y las Consideraciones de diseño. Proporciona recomendaciones específicas en Recomendaciones de diseño.
Selección del servicio de almacenamiento correcto
La elección de las SKU y los tamaños adecuados para las implementaciones iniciales requiere algunas evaluaciones y, potencialmente, un entorno de prueba de concepto o de prueba. Estas son las directrices de alto nivel que le ayudarán a empezar a trabajar con el almacenamiento para AKS:
Datos estructurados. En el caso de los datos estructurados que la aplicación puede almacenar en una base de datos administrada que está disponible en la plataforma (por ejemplo, Azure SQL), se recomienda usar una base de datos administrada.
Datos no estructurados. En el caso de datos no estructurados (como fotos, vídeos y documentos de texto), use Blob Storage. La aplicación puede hacerlo mediante blobs montados como archivos mediante Network File System (NFS) o a los que se accede como sistema de archivos virtual mediante BlobFuse. Como alternativa, la aplicación puede leer y escribir directamente en Blob Storage.
Datos de aplicación compartidos. En el caso de los datos de aplicación compartidos que requieren un alto rendimiento, use Azure NetApp Files o el nivel Premium de Azure Files. En el caso de los datos de configuración compartidos que solo requieren un rendimiento limitado, use el nivel Estándar de Azure Files.
Ancho de banda para las solicitudes de la aplicación y de almacenamiento. Asegúrese de que los nodos tienen suficiente ancho de banda de red para controlar las solicitudes de aplicación y las solicitudes de almacenamiento. El tráfico de almacenamiento pasa por la pila de red, tanto si el protocolo para las transferencias es Bloque de mensajes del servidor (SMB) o NFS.
Baja latencia, E/S por segundo altas. Use discos para el almacenamiento si la aplicación necesita una latencia constantemente baja para las aplicaciones de mensajería y altas operaciones de E/S por segundo (IOPS) y alto rendimiento para ejecutar sus propias bases de datos en Kubernetes. Para obtener el mejor rendimiento, considere la posibilidad de usar SSD prémium de Azure, SSD prémium de Azure v2 o Almacenamiento en disco Ultra de Azure.
Consideraciones de diseño
Las consideraciones siguientes son para diseñar el almacenamiento para AKS. Tenga en cuenta dónde se necesita almacenamiento en el entorno de AKS y determine la mejor solución para cada requisito.
Discos del sistema operativo (SO)
En el caso de los discos del sistema operativo (SO), tenga en cuenta los siguientes factores:
Discos efímeros para el sistema operativo. Cada máquina virtual (VM) de Azure requiere un disco para su sistema operativo. Dado que los nodos de Kubernetes son efímeros, AKS usa de forma predeterminada discos de sistema operativo efímeros en los tamaños de máquina virtual admitidos. Para más información sobre los discos de SO efímeros, consulte Sistema operativo efímero.
Discos administrados para el sistema operativo. Si la carga de trabajo los requiere, puede usar discos administrados normales para los nodos del clúster de AKS. Esto admite cargas de trabajo que requieren datos persistentes en la unidad del sistema operativo. Para obtener más información sobre las opciones de almacenamiento persistente, consulte Opciones de almacenamiento de aplicaciones en Azure Kubernetes Service (AKS).
Ajuste del tamaño de los discos administrados. Si selecciona un disco administrado como disco del sistema operativo, asegúrese de que tiene el tamaño adecuado para admitir los requisitos del sistema operativo, el sistema Kubernetes y la carga de trabajo. Para obtener más información sobre las opciones y sus diferencias, consulte Tipos de discos administrados de Azure.
Datos de aplicación
Algunas cargas de trabajo necesitan un almacén de datos coherente para el almacenamiento de datos de la aplicación. Si la aplicación requiere una base de datos, considere la posibilidad de explorar las bases de datos administradas en Azure, que incluyen las siguientes opciones:
Soluciones de almacenamiento en AKS
Si una base de datos administrada no satisface las necesidades de la aplicación, considere la posibilidad de usar otra opción de almacenamiento disponible para AKS para almacenar datos coherentes. Las opciones incluyen soluciones basadas en disco, discos efímeros, soluciones basadas en archivos, almacenamiento de blobs y otras opciones que no se tratan en este artículo.
Soluciones basadas en disco
Los discos o el almacenamiento en bloques son ideales para almacenar datos directamente en un dispositivo sin procesar basado en bloques. El almacenamiento basado en disco es ideal para almacenar datos para las bases de datos que hospeda el clúster de Kubernetes. En Azure, los discos administrados son la solución ideal para obtener almacenamiento basado en bloques.
Almacenamiento en disco estático o dinámico. Considere si quiere usar un disco estático que se crea fuera de AKS o si quiere que AKS cree dinámicamente el almacenamiento en disco cuando un pod o pods lo requieran. El almacenamiento que se crea dinámicamente también se puede eliminar dinámicamente. Para obtener más información, consulte:
Redundancia y rendimiento. Tenga en cuenta la redundancia de almacenamiento y el rendimiento que requiere la carga de trabajo. Para obtener más información, consulte:
Disco compartido. Considere si necesita un disco compartido. Para obtener más información sobre las opciones, consulte Uso compartido de un disco administrado de Azure.
Tamaño del nodo para discos y rendimiento. Tenga en cuenta el tamaño del nodo de Kubernetes. Debe ser lo suficientemente grande como para admitir el número de discos y los requisitos de rendimiento agregados. Para obtener más información sobre los tamaños y las características, consulte Tamaños de las máquinas virtuales en Azure.
Tamaño de disco y rendimiento necesario. Sopese si el disco administrado tiene el tamaño adecuado para los requisitos de rendimiento de la carga de trabajo. El rendimiento aumenta a medida que aumenta el tamaño del disco para HDD estándar, SSD estándar y SSD prémium v1. Para obtener más información sobre discos administrados, consulte Tipos de discos administrados de Azure.
Soluciones de discos efímeros
Considere si la aplicación requiere almacenamiento temporal no persistente o dónde quiere usar las unidades de alto rendimiento en las máquinas virtuales optimizadas para almacenamiento. Para conectarse a un volumen efímero, puede usar la opción emptyDir en Kubernetes o el controlador para un volumen local efímero CSI. Se recomienda emptyDir para los datos efímeros, como el espacio de desecho. Para el almacenamiento en la serie de máquinas virtuales optimizadas para almacenamiento, se recomienda usar CSI con un volumen local efímero. Para obtener más información sobre los controladores CSI, consulte Controladores de Container Storage Interface (CSI) en Azure Kubernetes Service (AKS).
Soluciones basadas en archivos
Sopese si los pods deben compartir un sistema de archivos. Un sistema de archivos compartido es ideal para datos de aplicación y configuración que leen y comparten varios pods en el clúster de Kubernetes. El almacenamiento de archivos expone un sistema de archivos compartido mediante NFS o SMB/Sistema de archivos de Internet común (CIFS). Azure tiene dos soluciones para el almacenamiento basado en archivos: Azure Files y Azure NetApp Files.
Azure Files
Para Azure Files, tenga en cuenta las siguientes opciones:
Recurso compartido de archivos estático o creado dinámicamente. Sopese si quiere usar un recurso compartido de archivos estático que se crea fuera de AKS o si quiere que AKS cree el recurso compartido de archivos dinámicamente en su nombre. Para obtener más información, consulte:
Rendimiento Estándar o Premium. Considere si el rendimiento estándar es suficiente o si necesita un rendimiento premium de Azure Files.
SMB/CIFS o NFS. Para obtener acceso a Azure Files, sopese si la carga de trabajo debe usar la API para el protocolo predeterminado, SMB/CIFS o si la carga de trabajo requiere compatibilidad con NFS.
Modelo de red para el acceso. Considere el modelo de red que quiere usar para acceder a Azure Files: acceso a través de una dirección IP pública directa, un punto de conexión de servicio o un vínculo privado.
Azure NetApp Files
Para Azure NetApp Files, tenga en cuenta las siguientes opciones:
Recurso compartido de Azure NetApp Files creado de forma estática o dinámica. Sopese si quiere que la carga de trabajo use un recurso compartido de Azure NetApp Files estático creado fuera de AKS, o si quiere que AKS cree el recurso compartido dinámicamente mediante Astra Control. Para obtener más información, consulte:
Evalúe el rendimiento. Evalúe qué nivel de rendimiento es necesario para la carga de trabajo. Para más información, consulte Consideraciones sobre el rendimiento de Azure NetApp Files.
Planee la red. Explore las recomendaciones de redes para Azure NetApp Files. Para más información, vea Directrices para el planeamiento de red de Azure NetApp Files.
Blob Storage
Sopese la cantidad de datos no estructurados que la aplicación necesita almacenar. Se puede acceder a Azure Blob Storage mediante una API de HTTP o los SDK. El montaje del almacenamiento de blobs como un sistema de archivos en un contenedor o pod es ideal para cargas de trabajo de aplicaciones que tienen grandes cantidades de datos no estructurados, como archivos de registro, imágenes, documentos, contenido multimedia de streaming y datos de recuperación ante desastres.
Redundancia de datos. Considere qué redundancia de datos se adapta a la aplicación. Para más información, vea Redundancia de Azure Storage. La redundancia de datos se selecciona en el nivel de la cuenta de almacenamiento.
Nivel de rendimiento. Considere qué nivel de rendimiento de Blob Storage requiere la aplicación. Para más información, consulte Niveles de acceso frecuente, esporádico y de archivo de los datos de blob.
Método de autenticación para el acceso. Considere qué método de autenticación debe usar la aplicación para el acceso a Blob Storage: clave de almacenamiento, SAS o Microsoft Entra ID. Para más información, consulte Autorización del acceso a datos en Azure Storage.
API para abstraer Blob Storage. Considere qué API usar. Normalmente, las aplicaciones que acceden a Blob Storage usan la API de la aplicación a través de uno de los SDK, que abstrae la interacción con Blob Storage del clúster de Kubernetes. Para obtener más información sobre las bibliotecas de varios lenguajes de programación, consulte Introducción a Azure Blob Storage.
Blob Storage estático o creado dinámicamente. Sopese si quiere usar un contenedor de Blob Storage estático que se crea fuera de AKS o si quiere que AKS cree el contenedor de Blob Storage dinámicamente en su nombre. Para obtener más información, consulte:
Controlador para acceder al almacenamiento. Sopese cómo la aplicación debe acceder a Blob Storage. Para acceder a él como un sistema de archivos, puede usar el controlador CSI para blob en Kubernetes. Este controlador permite el acceso a Blob Storage mediante el protocolo NFSv3 o un controlador FUSE.
Otras soluciones de almacenamiento
Considere otros tipos de almacenamiento si la aplicación requiere algo que no se describe en este artículo. Hay varias soluciones de almacenamiento especializadas en Azure que se pueden integrar con Kubernetes. En este artículo no se tratan, pero en la lista siguiente se identifican las posibles soluciones:
Azure HPC cache. HPC Cache acelera el acceso a los datos para las tareas de informática de alto rendimiento (HPC). Mediante el almacenamiento en caché de archivos en Azure, Azure HPC Cache aporta la escalabilidad de la informática en la nube al flujo de trabajo existente. Para obtener más información, consulte Integración de Azure HPC Cache con Azure Kubernetes Service.
Azure Data Lake Storage Gen2. Data Lake Storage Gen2 es un tipo especial de almacenamiento de blobs optimizado para cargas de trabajo de macrodatos como Hadoop y Spark. Para más información, vea Introducción a Azure Data Lake Storage Gen2.
Recomendaciones de diseño
En esta sección se proporcionan recomendaciones basadas en aquello que ha demostrado ser eficaz para los clientes de Azure.
Use Azure Private Link. Por motivos de seguridad, se recomienda usar Azure Private Link para todas las soluciones de almacenamiento que lo admitan. Azure Private Link permite el acceso a los servicios de Azure, como Azure Storage y SQL Database, y los servicios hospedados en Azure a través de un punto de conexión privado de la red virtual. Para más información, consulte ¿Qué es Azure Private Link?
Use discos efímeros para el sistema operativo. En el caso de los discos del sistema operativo, se recomienda usar discos efímeros. Para beneficiarse de esta característica, seleccione un tamaño de máquina virtual que tenga un disco temporal de tamaño adecuado. Para más información, consulte Discos de SO efímeros para máquinas virtuales de Azure.
Use bases de datos administradas. En el caso de los datos de la aplicación, se recomienda usar bases de datos administradas. Para obtener una lista de las opciones de base de datos, consulte Tipos de bases de datos en Azure.
En las secciones siguientes se describen más recomendaciones para discos de Azure, Azure Files y Blob Storage.
Discos de Azure
En el caso de los discos de Azure, se recomiendan las siguientes opciones de diseño:
Use discos Premium o Ultra. En la mayoría de los casos, se recomiendan discos Premium o Ultra para garantizar un rendimiento adecuado. Para obtener más información, consulte Azure Disk Storage.
Ajuste el tamaño del nodo para los discos y el rendimiento. Se recomienda asegurarse de que el tamaño del nodo de Kubernetes sea lo suficientemente grande como para admitir el número de discos y la cantidad de rendimiento agregado. Para obtener más información sobre los tamaños y las características, consulte Tamaños de las máquinas virtuales en Azure.
Cree instantáneas de volúmenes persistentes. Se recomienda tomar instantáneas de los volúmenes persistentes, ya sea para aprovisionar nuevos volúmenes que se rellenan previamente con los datos de instantánea o para restaurar un volumen existente a un estado anterior mediante la funcionalidad de instantánea del controlador CSI de Azure Disks. Para obtener más información, consulte Instantáneas de volumen.
Evite el seccionamiento de discos entre discos. Se recomienda evitar el seccionamiento entre varios discos en Kubernetes.
Use PV/PVC. Se recomienda usar PV y PVC en Kubernetes para crear discos dinámicamente cuando sea necesario. Para obtener más información sobre el almacenamiento persistente, consulte Opciones de almacenamiento de aplicaciones en Azure Kubernetes Service (AKS).
Azure Files
En el caso de Azure Files, se recomiendan las siguientes opciones de diseño:
Elija Premium. Si el rendimiento es crítico, se recomienda usar el nivel Premium.
Cree una cuenta de almacenamiento dedicada. Se recomienda proporcionar cuentas de almacenamiento dedicadas para los recursos compartidos de archivos.
Elija recursos compartidos de archivos estáticos o creados dinámicamente. Se recomienda considerar detenidamente si quiere que AKS cree los recursos compartidos de archivos o si quiere crearlos estáticamente fuera de Kubernetes. El almacenamiento que se crea dinámicamente también se puede eliminar dinámicamente. Para obtener más información sobre cómo permitir que AKS cree recursos compartidos de archivos dinámicamente, consulte Creación dinámica y uso de un volumen persistente con Azure Files.
Azure NetApp Files
En el caso de Azure NetApp Files, se recomiendan las opciones de diseño siguientes:
Elija un nivel de rendimiento en función de los requisitos de la aplicación. Azure NetApp Files ofrece 3 niveles de rendimiento que ofrecen distintas clases de resultados. Para más información, consulte Consideraciones sobre el rendimiento de Azure NetApp Files.
Cree grupos de capacidad en la misma región de Azure que el clúster de AKS. A fin de obtener más información, consulte Creación de un grupo de capacidad para Azure NetApp Files.
Use el tipo de QoS automático para los grupos de capacidad.
Planee la red. Existen dos opciones para el diseño de red:
- Si usa la misma red virtual para AKS y Azure NetApp Files, cree una subred dedicada para Azure NetApp Files y deléguela a Microsoft.NetApp/Volumes.
- Si usa redes virtuales diferentes, establezca el emparejamiento de red virtual entre ellas.
Blob Storage
En el caso de Blob Storage, se recomiendan las siguientes opciones de diseño:
Use un SDK para interactuar con el almacenamiento. Se recomienda usar un SDK de nivel de aplicación para interactuar con Blob Storage.
Use CSI con NFS para interactuar con el almacenamiento. Si no puede usar un SDK de nivel de aplicación para interactuar con Blob Storage, se recomienda usar la opción NFS v3 en el controlador CSI de blobs. Para obtener más información, consulte Uso del controlador de Container Storage Interface (CSI) de Azure Blob Storage.
Use Microsoft Entra ID para acceder. Se recomienda usar Microsoft Entra ID para autorizar el acceso a Blob Storage. Evite usar una clave de cuenta de almacenamiento compartida. Para más información, vea Autorización del acceso a blobs mediante Microsoft Entra ID.
Ajuste los niveles de servicio. Se recomienda usar directivas de administración del ciclo de vida para mover datos a los que se accede con poca frecuencia a un nivel de acceso esporádico. Para más información, consulte Niveles de acceso frecuente, esporádico y de archivo de los datos de blob.
Pasos siguientes
Obtenga información sobre cómo limitar la asignación de costos a una implementación, un servicio, una etiqueta, un pod o un espacio de nombres en AKS mediante Kubecost.