Opciones de almacenamiento para un clúster de Kubernetes
En este artículo se comparan las funcionalidades de almacenamiento de Amazon Elastic Kubernetes Service (Amazon EKS) y Azure Kubernetes Service (AKS) y se describen las opciones para almacenar datos de carga de trabajo en AKS.
Nota:
Este artículo forma parte de una serie de artículos que ayudan a los profesionales que están familiarizados con Amazon EKS a comprender Azure Kubernetes Service (AKS).
Opciones de almacenamiento de Amazon EKS
En Amazon EKS, después de la versión 1.11 de Kubernetes, el clúster tiene una clase StorageClass predeterminada denominada gp2
para las notificaciones de volumen persistente. Los administradores pueden agregar controladores para definir más clases de almacenamiento, como:
- Controlador CSI para Amazon EBS como complemento de Amazon EKS
- Complemento autoadministrado CSI para Amazon EBS
- Amazon EFS CSI driver
- Controlador CSI para Amazon FSx para Lustre
- Controlador CSI para Amazon FSx para NetApp ONTAP
Al agregar controladores y clases de almacenamiento, puede usar servicios de almacenamiento como:
Amazon Elastic Block Store (Amazon EBS), una solución de almacenamiento de nivel de bloque que se usa con instancias de Amazon Elastic Compute Cloud (EC2) para almacenar datos persistentes. Este servicio es similar a Azure Disk Storage, que tiene varias SKU, como SSD estándar, SSD prémium o Almacenamiento en disco Ultra, según el rendimiento necesario.
Amazon Elastic File System (Amazon EFS), que proporciona acceso del sistema de archivos de red a sistemas de archivos externos que se pueden compartir entre instancias. La solución de Azure equivalente es Azure Files y Azure Files Premium con el acceso de Bloque de mensajes del servidor (SMB) 3.0 y NFS.
Lustre, un sistema de archivos de código abierto que se usa normalmente en informática de alto rendimiento (HPC). En Azure, puede usar Almacenamiento en disco Ultra o Azure HPC Cache para cargas de trabajo en las que la velocidad es importante, como el aprendizaje automático y HPC.
NetApp ONTAP, almacenamiento compartido ONTAP totalmente administrado en Amazon Web Services (AWS). Azure NetApp Files es un servicio de almacenamiento de archivos en Azure similar basado en la tecnología NetApp.
Opciones de almacenamiento de AKS
De forma predeterminada, cada clúster de AKS incluye las siguientes clases de almacenamiento creadas previamente:
- La clase de almacenamiento predeterminada,
managed-csi
, usa SSD estándar de Disk Storage. SSD estándar es una opción de almacenamiento rentable optimizada para cargas de trabajo que necesitan un rendimiento consistente en operaciones de entrada-salida por segundo (IOPS) inferiores. - La clase
managed-csi-premium
usa discos administrados SSD prémium de Disk Storage. - La clase
azurefile-csi
usa Azure Files para proporcionar acceso compartido simultáneo al mismo volumen de almacenamiento, mediante SMB o NFS. - La clase
azurefile-csi-premium
usa Azure Files Premium para recursos compartidos de archivos con cargas de trabajo con uso intensivo de IOPS. Azure Files Premium proporciona baja latencia y alto rendimiento respaldado por el almacenamiento de SSD.
Puede ampliar estas opciones agregando otras clases de almacenamiento e integrando con otras soluciones de almacenamiento disponibles, como:
- Almacenamiento en disco Ultra
- Azure NetApp Files
- HPC Cache
- Servidor NFS
- Soluciones de almacenamiento de terceros
Azure Disk Storage
De forma predeterminada, un clúster de AKS incluye clases de almacenamiento managed-csi
y managed-csi-premium
creadas previamente que usan Disk Storage. De forma similar a Amazon EBS, estas clases crean un disco administrado o un dispositivo de bloque que está conectado al nodo para el acceso al pod.
Las clases de almacenamiento de Disk permiten el aprovisionamiento de volúmenes estáticos y dinámicos. La directiva de reclamación garantiza que el disco se elimine con el volumen persistente. Puede expandir el disco editando la notificación de volumen persistente.
Estas clases de almacenamiento usan discos administrados de Azure con almacenamiento con redundancia local (LRS). LRS significa que los datos tienen tres copias sincrónicas dentro de una sola ubicación física en una región primaria de Azure. LRS es la opción de replicación menos costosa, pero no ofrece protección contra un error del centro de datos. Para mitigar este riesgo, realice copias de seguridad o instantáneas periódicas de los datos de Disk Storage mediante soluciones como Velero o Azure Backup que pueden usar tecnologías de instantánea integradas.
Ambas clases de almacenamiento están respaldadas por discos administrados y usan unidades de disco de estado sólido (SSD). Es importante comprender las diferencias entre los discos estándar y prémium:
- Los discos estándar tienen un precio basado en el tamaño y las transacciones de almacenamiento.
- Los discos prémium solo se cobran por tamaño, lo que puede hacer que sean más baratos para las cargas de trabajo que requieren un gran número de transacciones.
- Los SSD prémium proporcionan un rendimiento e IOPS máximos más elevados, como se muestra en esta comparación.
- Para la mayoría de las cargas de trabajo de producción y desarrollo, se recomienda el almacenamiento Prémium.
Si usa discos administrados de Azure como clase de almacenamiento principal, tenga en cuenta la SKU de máquina virtual (VM) que elija para el clúster de Kubernetes. Las VM de Azure limitan el número de discos que se pueden conectar a ellas y el límite varía con el tamaño de VM. Asimismo, los discos de Azure se montan como ReadWriteOnce
, por lo que solo están disponibles para un único pod.
Discos v2 SSD de Azure Premium
Los discos SSD prémium v2 de Azure ofrecen cargas de trabajo empresariales intensas en E/S, una latencia de disco inferior a milisegundos coherente, y un alto rendimiento e IOPS. El rendimiento (capacidad, rendimiento e IOPS) de discos SSD prémium v2 se puede configurar de forma independiente en cualquier momento, lo que facilita que más escenarios sean rentables, a la vez que satisfacen las necesidades de rendimiento. Para obtener más información sobre cómo configurar un clúster de AKS nuevo o existente para usar discos v2 SSD de Azure Premium, consulte Uso de discos SSD v2 de Azure Premium en Azure Kubernetes Service.
Almacenamiento en disco Ultra
El Almacenamiento en disco Ultra es un nivel de disco administrado de Azure que ofrece un alto rendimiento, IOPS alto y almacenamiento en disco consistente de baja latencia para VM de Azure. El Almacenamiento en disco Ultra está diseñado para cargas de trabajo que requieren muchos datos y transacciones. Al igual que otras SKU de Disk Storage y Amazon EBS, el Almacenamiento en disco Ultra monta un pod a la vez y no proporciona acceso simultáneo.
Use la marca --enable-ultra-ssd
para habilitar el Almacenamiento en disco Ultra en el clúster de AKS.
Si elige Almacenamiento en disco Ultra, tenga en cuenta sus limitaciones y asegúrese de seleccionar un tamaño de VM compatible. El Almacenamiento en disco Ultra está disponible con replicación de almacenamiento con redundancia local (LRS).
Traer sus propias claves (BYOK)
Azure cifra todos los datos de un disco administrado en reposo. De manera predeterminada, los datos se cifran con claves administradas por Microsoft. Para tener más control sobre las claves de cifrado, puede proporcionar claves administradas por el cliente y utilizarlas para el cifrado en reposo del sistema operativo y los discos de datos de los clústeres de AKS. Para obtener más información, consulte Traer sus propias claves (BYOK) con discos administrados de Azure en Azure Kubernetes Service (AKS).
Azure Files
Disk Storage no puede proporcionar acceso simultáneo a un volumen, pero puede usar Azure Files para conectarse mediante el protocolo SMB y, a continuación, montar un volumen compartido respaldado por Azure Storage. Este proceso proporciona un almacenamiento conectado a la red similar a Amazon EFS. Al igual que con Disk Storage, hay dos opciones:
- El almacenamiento Estándar de Azure Files está respaldado por unidades de disco duro (HDD) normales.
- El almacenamiento Prémium de Azure Files respalda el recurso compartido de archivos con unidades SSD de alto rendimiento. El tamaño mínimo del recurso compartido de archivos para Prémium es de 100 GB.
Azure Files tiene las siguientes opciones de replicación de la cuenta de almacenamiento para proteger los datos en caso de error:
- Standard_LRS: almacenamiento estándar con redundancia local (LRS)
- Standard_GRS: almacenamiento estándar con redundancia geográfica (GRS)
- Standard_ZRS: almacenamiento estándar con redundancia de zona (ZRS)
- Standard_RAGRS: almacenamiento estándar con redundancia geográfica con acceso de lectura (RA-GRS)
- Standard_RAGZRS: almacenamiento estándar con redundancia de zona geográfica con acceso de lectura
- Premium_LRS: almacenamiento premium con redundancia local (LRS)
- Premium_ZRS: almacenamiento premium con redundancia de zona (ZRS)
Para optimizar los costos de Azure Files, compre reservas de capacidad de Azure Files.
Azure Container Storage
Azure Container Storage es un servicio de administración, implementación y orquestación de volúmenes basado en la nube creado de forma nativa para contenedores. Se integra con Kubernetes, lo que le permite aprovisionar volúmenes persistentes de forma dinámica y automática para almacenar datos para aplicaciones con estado que se ejecutan en clústeres de Kubernetes.
Azure Container Storage utiliza ofertas de Azure Storage existentes para el almacenamiento de datos real y ofrece una solución de orquestación y administración de volúmenes creada específicamente para contenedores. Entre las opciones de almacenamiento auxiliares admitidas se incluyen:
- Azure Disks: control exhaustivo de las SKU y las configuraciones de almacenamiento. Están previstos para bases de datos de uso general y de nivel 1.
- Discos efímeros: usa recursos de almacenamiento local en nodos de AKS (NVMe o SSD temporal). Se adapta mejor a las aplicaciones sin necesidad de que haya durabilidad en los datos ni compatibilidad integrada con la replicación de datos. AKS detecta el almacenamiento efímero disponible en los nodos de AKS y los adquiere para la implementación de volúmenes.
- Azure Elastic SAN: aprovisiona recursos totalmente administrados a petición. Sirve para bases de datos de uso general, servicios de streaming y mensajería, entornos de CD/CI y otras cargas de trabajo de nivel 1/2. Varios clústeres pueden acceder simultáneamente a una sola SAN, pero los volúmenes persistentes solo se pueden adjuntar por un consumidor a la vez.
Hasta ahora, proporcionar almacenamiento en la nube para contenedores requería utilizar controladores de Container Storage Interface (CSI) individuales para utilizar servicios de almacenamiento destinados a cargas de trabajo centradas en la infraestructura como servicio (Iaas) y hacer que funcionaran para contenedores. Esto genera sobrecarga operativa y aumenta el riesgo de problemas de disponibilidad, escalabilidad, rendimiento, facilidad de uso y coste de las aplicaciones.
Azure Container Storage se deriva de OpenEBS, una solución de código abierto que proporciona funcionalidades de almacenamiento de contenedores para Kubernetes. Al ofrecer una solución de orquestación de volúmenes administrada a través de controladores de almacenamiento basados en microservicios en un entorno de Kubernetes, Azure Container Storage habilita el almacenamiento nativo de contenedor verdadero.
Se puede usar Azure Container Storage en los siguientes escenarios:
Acelerar las iniciativas de VM a contenedores: Azure Container Storage pone a disposición de los contenedores toda la gama de ofertas de almacenamiento en bloque de Azure que antes solo estaban disponibles para máquinas virtuales. Esto incluye un disco efímero que proporciona una latencia extremadamente baja para cargas de trabajo como Cassandra, así como Azure Elastic SAN que proporciona destinos aprovisionados compartidos e iSCSI nativos.
Simplificar la administración de volúmenes con Kubernetes: Al proporcionar la orquestación de volúmenes a través del plano de control de Kubernetes, Azure Container Storage facilita la implementación y la administración de volúmenes dentro de Kubernetes, sin necesidad de moverse entre diferentes planos de control.
Reducir el costo total de propiedad (TCO): Mejore la rentabilidad aumentando la escala de volúmenes persistentes admitidos por pod o nodo. Reduzca los recursos de almacenamiento necesarios para el aprovisionamiento mediante el uso compartido dinámico de recursos de almacenamiento. Tenga en cuenta que no se admite la compatibilidad con el escalado vertical para el propio bloque de almacenamiento.
Azure Container Storage ofrece las siguientes ventajas principales:
Escalado horizontal rápido de pods con estado: Azure Container Storage monta los volúmenes persistentes a través de los protocolos de almacenamiento en bloques de red (NVMe-oF o iSCSI), lo que ofrece una asociación y desasociación rápida de volúmenes persistentes. Puede empezar poco a poco e ir implementando recursos a medida que los vaya necesitando, a la vez que se asegura de que sus aplicaciones no estén inactivas o interrumpidas, ya sea durante la inicialización o en producción. La resistencia de las aplicaciones se mejora con la regeneración (respawns) de pods en todo el clúster, lo que requiere un movimiento rápido de los volúmenes persistentes. Al usar los protocolos de red remotos, Azure Container Storage se acopla estrechamente con el ciclo de vida de los pods para admitir aplicaciones con estado de alta resiliencia y a gran escala en AKS.
Rendimiento mejorado para cargas de trabajo con estado: Azure Container Storage permite un rendimiento de lectura superior y proporciona un rendimiento de escritura parecido al de un disco utilizando NVMe-oF sobre RDMA. Esto permite a los clientes responder de forma rentable a los requisitos de rendimiento de las distintas cargas de trabajo de los contenedores, incluidas las de nivel 1, intensivas en E/S, de uso general, sensibles al rendimiento y de desarrollo/prueba. Acorte el tiempo de asociación o desasociación de volúmenes persistentes y reduzca el tiempo de conmutación por error de pods.
Orquestación de volúmenes nativa de Kubernetes: Cree grupos de almacenamiento y volúmenes persistentes, capture instantáneas y administre todo el ciclo de vida de los volúmenes mediante comandos
kubectl
sin cambiar entre conjuntos de herramientas para diferentes operaciones del plano de control.
Azure NetApp Files
Al igual que AWS NetApp ONTAP, Azure NetApp Files es un servicio de almacenamiento de archivos medido, de alto rendimiento y clase empresarial. Azure NetApp Files está totalmente administrado en Azure mediante soluciones de NetApp. Al igual que Azure Files, Azure NetApp Files permite que varios pods monten un volumen. Puede usar Astra Trident, un orquestador de almacenamiento dinámico de código abierto para Kubernetes, para configurar el clúster de AKS para usar Azure NetApp Files.
Consulte Límites de recursos para Azure NetApp Files. El tamaño mínimo de un grupo de capacidad para Azure NetApp Files es de 4 TiB. Azure NetApp Files cobra por tamaño aprovisionado y no por capacidad usada.
Azure HPC Cache
Azure HPC Cache acelera el acceso a los datos para las tareas de HPC, con toda la escalabilidad de las soluciones en la nube. Si elige esta solución de almacenamiento, asegúrese de implementar el clúster de AKS en una región que admita caché HPC de Azure.
Servidor NFS
La mejor opción para el acceso NFS compartido es usar Azure Files o Azure NetApp Files. También puede crear un servidor NFS en una VM de Azure que exporte volúmenes.
Tenga en cuenta que esta opción solo admite el aprovisionamiento estático. Debe aprovisionar los recursos compartidos NFS manualmente en el servidor y no puede hacerlo desde AKS automáticamente.
Esta solución se basa en la infraestructura como servicio (IaaS) en lugar de en la plataforma como servicio (PaaS). Usted es el responsable de administrar el servidor NFS, incluidas las actualizaciones del SO, la alta disponibilidad, las copias de seguridad, la recuperación ante desastres y la escalabilidad.
Disco de sistema operativo efímero
De manera predeterminada, Azure replica automáticamente el disco del sistema operativo de una máquina virtual en Azure Storage. De esta forma, puede evitarse la pérdida de datos si se reubica la máquina virtual en otro host. Sin embargo, como los contenedores no están diseñados para preservar el estado local, este comportamiento ofrece un valor limitado y además presenta algunos inconvenientes. Estos inconvenientes incluyen, entre otros, un aprovisionamiento de nodos más lento y una latencia de lectura y escritura más elevada.
En cambio, los discos de sistema operativo efímero solo se almacenan en el equipo host, al igual que los discos temporales. Con esta configuración, obtendrá una latencia de lectura y escritura más baja, junto con escalabilidad de nodos y actualizaciones de clúster más rápidas.
Nota:
Si no se solicitan explícitamente discos administrados de Azure para el sistema operativo, AKS toma como valor predeterminado un sistema operativo efímero, siempre que sea posible, para una configuración de grupo de nodos determinada.
Para más información, vea:
- Opciones de almacenamiento de aplicaciones en Azure Kubernetes Service (AKS)
- Discos de SO efímeros para máquinas virtuales de Azure.
Soluciones de terceros
Al igual que Amazon EKS, AKS es una implementación de Kubernetes y puede integrar soluciones de almacenamiento de Kubernetes de terceros. Estos son algunos ejemplos de soluciones de almacenamiento de terceros para Kubernetes:
- Rook convierte los sistemas de almacenamiento distribuidos en servicios de almacenamiento autoadministrados mediante la automatización de tareas de administrador de almacenamiento. Rook ofrece sus servicios a través de un operador de Kubernetes para cada proveedor de almacenamiento.
- GlusterFS es un sistema de archivos de red escalable de código abierto y gratuito que usa hardware comercial común para crear soluciones de almacenamiento grandes y distribuidas para tareas que consumen mucho ancho de banda y datos.
- Ceph proporciona un servicio de almacenamiento unificado confiable y escalable con interfaces de objetos, bloques y archivos de un único clúster creado a partir de componentes de hardware básicos.
- El almacenamiento de objetos multinube MinIO permite a las empresas crear una infraestructura de datos compatible con AWS S3 en cualquier nube, lo que proporciona una interfaz consistente y portátil para los datos y las aplicaciones.
- Portworx es una solución de administración de datos y almacenamiento de un extremo a otro para proyectos de Kubernetes e iniciativas basadas en contenedores. Portworx ofrece almacenamiento pormenorizado en contenedores, recuperación ante desastres, seguridad de datos y migraciones multinube.
- Quobyte proporciona almacenamiento de objetos y archivos de alto rendimiento que puede implementar en cualquier servidor o nube para escalar el rendimiento, administrar grandes cantidades de datos y simplificar la administración.
- Ondat ofrece una capa de almacenamiento consistente en cualquier plataforma. Puede ejecutar una base de datos o cualquier carga de trabajo persistente en un entorno de Kubernetes sin tener que administrar la capa de almacenamiento.
Consideraciones sobre el almacenamiento de Kubernetes
Tenga en cuenta los siguientes factores al elegir una solución de almacenamiento para Amazon EKS o AKS.
Modos de acceso de clase de almacenamiento
En la versión 1.21 de Kubernetes y versiones más recientes, las clases de almacenamiento de AKS y Amazon EKS usan controladores de Container Storage Interface (CSI) solamente y de forma predeterminada.
Los distintos servicios admiten clases de almacenamiento que tienen diferentes modos de acceso.
Servicio | ReadWriteOnce | ReadOnlyMany | ReadWriteMany |
---|---|---|---|
Azure Disks | X | ||
Azure Files | X | X | X |
Azure NetApp Files | x | X | X |
Servidor NFS | X | X | x |
Azure HPC Cache | X | X | X |
Aprovisionamiento dinámico frente a estático
Aprovisione volúmenes de forma dinámica para reducir la sobrecarga de administración de la creación estática de volúmenes persistentes. Establezca una directiva de reclamación correcta para evitar tener discos sin usar al eliminar pods.
Copia de seguridad
Elija una herramienta para realizar copias de seguridad de datos persistentes. La herramienta debe coincidir con el tipo de almacenamiento, como instantáneas, Azure Backup, Velero o Kasten.
Optimización de costos
Para optimizar los costos de Azure Storage, use las reservas de Azure. Asegúrese de comprobar qué servicios admiten Azure Reservations. Consulte también Administración de costos para un clúster de Kubernetes.
Colaboradores
Microsoft mantiene este artículo. Originalmente lo escribieron los siguientes colaboradores.
Creadores de entidad de seguridad:
- Paolo Salvatori | Ingeniero de sistemas principal
- Laura Nicolas | Arquitecta de soluciones en la nube
Otros colaboradores:
- Chad Kittel | Ingeniero principal de software
- Ed Price | Responsable sénior de programas de contenido
- Theano Petersen | Escritor técnico
Para ver los perfiles no públicos de LinkedIn, inicie sesión en LinkedIn.
Pasos siguientes
- AKS para profesionales de Amazon EKS
- Administración de identidades y acceso de Kubernetes
- Supervisión y registro de Kubernetes
- Protección del acceso de red a Kubernetes
- Administración de costos para Kubernetes
- Administración de nodos y grupos de nodos de Kubernetes
- Gobernanza de clústeres