¿Cuántos métodos existen para el almacenamiento persistente de K8? Conozca las ventajas y desventajas del disco local/almacenamiento externo CSI/almacenamiento nativo K8 en un artículo

En el entorno nativo de la nube actual, Kubernetes (K8) se ha convertido en una herramienta de orquestación de contenedores establecida. Con la popularidad de los K8, el almacenamiento también se ha convertido en un tema importante que preocupa a los usuarios de los K8: para satisfacer las necesidades de diferentes escenarios, los K8 pueden admitir una variedad de soluciones de almacenamiento basadas en diferentes arquitecturas. ¿Cuáles son las diferencias entre estos planes? ¿Cómo deben elegir los usuarios? Este artículo presentará en detalle tres soluciones de almacenamiento persistente de K8 desde una perspectiva arquitectónica: disco local, almacenamiento comercial externo CSI y almacenamiento nativo de K8. Al final del artículo, se compararán y analizarán las capacidades, ventajas y desventajas de cada solución. .

01_comparación-de-arquitectura-de-almacenamiento-k8s.png

Disco local

En primer lugar, K8 permite a los usuarios conectar directamente discos locales al servidor como dispositivos de almacenamiento. Dado que la ruta de E/S entre el disco y el sistema de aplicaciones es la más corta, los discos locales pueden proporcionar el mejor rendimiento. Al mismo tiempo, RAID proporciona un cierto grado de garantía de confiabilidad y puede evitar la pérdida de datos causada por una falla de un solo disco. Por lo tanto, una gran cantidad de usuarios utilizan actualmente este método para proporcionar servicios de almacenamiento para aplicaciones con estado.

Pero al mismo tiempo, la solución de disco local también tiene enormes deficiencias en términos de disponibilidad y expansión:

  • Los discos locales no pueden proporcionar alta disponibilidad a nivel de nodo. Cuando falla un nodo físico, las aplicaciones no se pueden restaurar en otros nodos. Si el sistema empresarial tiene requisitos de alta disponibilidad a nivel de nodo, el sistema empresarial debe implementar alta disponibilidad en el nivel de datos en sí, lo que aumenta en gran medida la complejidad del sistema empresarial.
  • Los discos locales no pueden cumplir con los requisitos de agilidad empresarial en el entorno K8: el espacio de almacenamiento utilizado por la empresa está limitado por el tamaño del disco local. Después de alcanzar el límite superior de espacio en disco, los pasos para agregar discos son complicados. Si lo desea Para utilizar el espacio en el disco duro recién agregado, la configuración en el Pod debe modificarse manualmente, lo que dificulta lograr una expansión ágil y fluida. Además, para lograr una alta disponibilidad de los discos duros en los nodos físicos, es necesario implementar RAID, que también es una solución que consume mucho tiempo, es laboriosa y costosa, y es difícil configurar una capacidad de almacenamiento suficiente para una gran cantidad de sistemas de aplicación en un corto período de tiempo.

Además, esta solución requiere mucha mano de obra tanto para la implementación como para la reparación posterior a una falla, lo que aumenta considerablemente los costos de operación y mantenimiento de la solución de almacenamiento local. Al mismo tiempo, dado que el espacio de almacenamiento no se puede compartir entre nodos, es fácil desperdiciar espacio de almacenamiento.

En general, la solución de disco local solo es adecuada para pruebas a pequeña escala en las primeras etapas de la contenedorización empresarial, o se usa como almacenamiento de datos de menor importancia, y es difícil de usar ampliamente en escenarios de producción a gran escala.

Almacenamiento comercial externo CSI

Otra forma de proporcionar almacenamiento persistente para los K8 es conectar la plataforma K8 con la infraestructura de almacenamiento subyacente a través de la interfaz de almacenamiento de contenedores (CSI), lo que permite a los K8 aprovisionar y configurar dinámicamente el almacenamiento y automatizar las operaciones de almacenamiento. La agencia de análisis internacional GigaOm divide además estas soluciones de almacenamiento externo en dos tipos: almacenamiento comercial (Enterprise Storage) y almacenamiento nativo K8s (Kuernetes-Native Storage).

El almacenamiento comercial incluye tanto el almacenamiento definido por software (como el almacenamiento distribuido) como el almacenamiento centralizado tradicional. A diferencia del almacenamiento nativo de K8 diseñado específicamente para entornos K8, el almacenamiento comercial generalmente sirve principalmente para entornos bare metal y virtualizados. Dado que se usa ampliamente en las empresas, es muy importante para el almacenamiento comercial obtener capacidades de soporte de almacenamiento de contenedores a través de complementos CSI. y elección económica.

Sin embargo, precisamente porque el almacenamiento comercial se centra esencialmente más en características funcionales en la era de la virtualización, las soluciones de almacenamiento lanzadas por algunos fabricantes todavía carecen de la capacidad de soportar entornos nativos de la nube. También vale la pena señalar que el "almacenamiento nativo en la nube" reconocido por CNCF no solo incluye el almacenamiento nativo de K8, sino también soluciones de almacenamiento comerciales basadas en diferentes arquitecturas. Las características y el rendimiento de los productos varían mucho, por lo que los usuarios deben tener más cuidado.

almacenamiento centralizado externo

El almacenamiento centralizado externo del clúster K8 proporciona la capacidad de acceder de forma remota al almacenamiento compartido. En comparación con las soluciones de disco local, el almacenamiento centralizado resuelve el problema de la alta disponibilidad de los sistemas de aplicaciones. Cuando falla el servidor donde se encuentra el Pod empresarial, la aplicación se puede recuperar en otros nodos a través del almacenamiento compartido. Muchas soluciones comerciales basadas en almacenamiento centralizado La solución de almacenamiento también proporciona funciones avanzadas como instantáneas, clonación y recuperación ante desastres. Además, debido al almacenamiento centralizado de datos, el problema del desperdicio de espacio en disco por parte del almacenamiento local también se resuelve en cierta medida.

Sin embargo, la arquitectura del almacenamiento centralizado tradicional (controlador de almacenamiento más gabinete de discos) determina que no puede cumplir bien con los requisitos de alta concurrencia y agilidad de la nube nativa:

  • Aunque el almacenamiento centralizado puede proporcionar una garantía de alto rendimiento para un único sistema empresarial, cuando se enfrenta a una gran cantidad de accesos empresariales simultáneos, el controlador de almacenamiento se convierte en un cuello de botella en el rendimiento. Si desea cumplir con los requisitos de rendimiento de una gran cantidad de empresas, debe utilizar múltiples sistemas de almacenamiento centralizados y el costo de administración del sistema de almacenamiento también aumentará considerablemente.
  • Debido a la forma del gabinete de discos, el almacenamiento centralizado tiene poca escalabilidad, una gran carga de trabajo de operación y mantenimiento, y dificultad para hacer frente a la creación y destrucción simultánea de una gran cantidad de volúmenes en un corto período de tiempo, y carece de agilidad nativa de la nube.

Almacenamiento distribuido externo

Al almacenar datos de forma descentralizada en múltiples dispositivos independientes en la red, el almacenamiento distribuido tiene una excelente escalabilidad y agilidad horizontal. Cuando se conecta a aplicaciones nativas de la nube basadas en una arquitectura informática distribuida, su rendimiento y alta disponibilidad también son muy superiores al almacenamiento centralizado. Gartner también enfatizó en su informe de análisis "Cómo seleccionar y practicar el almacenamiento en contenedores y entornos de Kubernetes" que el almacenamiento que deben utilizar los servicios de datos nativos de la nube debe "basarse en una arquitectura distribuida y poder implementarse a cualquier escala".

Sin embargo, hay una variedad de soluciones de almacenamiento distribuido disponibles para K8 en el mercado. Algunos productos están simplemente empaquetados en base a tecnología de código abierto y su rendimiento, estabilidad y soporte para el entorno K8 son difíciles de cumplir con los estándares de nivel de producción. Se recomienda que los usuarios presten atención a las soluciones de almacenamiento con tecnología de desarrollo propio y evalúen exhaustivamente el rendimiento, la disponibilidad, la confiabilidad, la seguridad y la mantenibilidad del producto de acuerdo con estándares de "grado de producción".

Almacenamiento nativo de K8

El almacenamiento nativo de K8 es una solución de almacenamiento creada específicamente para admitir contenedores. Este tipo de almacenamiento está más profundamente integrado con los K8 y tiene granularidad de servicios de datos a nivel de contenedor y capacidades de operación y mantenimiento automatizados de recursos de almacenamiento, por lo que puede proporcionar capacidades de expansión flexibles y capacidades de operación y mantenimiento automatizadas para aplicaciones de contenedores en K8.

Para obtener más información sobre las características y capacidades del almacenamiento nativo de K8, consulte este artículo: Comprenda las diferencias entre el almacenamiento persistente de K8, el almacenamiento nativo en la nube, el almacenamiento nativo de contenedores y el almacenamiento nativo de K8 en un artículo .

Actualmente, existen dos tipos principales de almacenamiento nativo K8 convencional: productos de código abierto (representados por Rook (basado en Ceph) y Longhorn) y productos comerciales de código cerrado (representados por Portworx e IOMesh). Ambas soluciones pueden proporcionar funciones de almacenamiento de datos nativas de K8, y cada una tiene sus propias ventajas y desventajas: los productos de código abierto no tienen costos de adquisición, los clientes con solidez técnica pueden desarrollarse por sí mismos y cuentan con soporte de la comunidad. Sin embargo, si ocurren fallas o vulnerabilidades graves, Es difícil operarlos como productos comerciales. Al igual que los fabricantes, brindamos una respuesta rápida y un servicio de soporte en profundidad para la resolución de problemas a través de equipos profesionales. Además, a través de pruebas de rendimiento, se puede ver que la solución de almacenamiento K8 actual basada en tecnología de código cerrado de desarrollo propio es superior a los productos de código abierto en términos de rendimiento y estabilidad. Para obtener detalles de la prueba, lea: Comparación de características y rendimiento de las principales soluciones de almacenamiento persistente K8 (Longhorn / Rook / OpenEBS / Portworx / IOMesh).

Resumen: Análisis de las ventajas y desventajas de las soluciones de almacenamiento persistente K8 con diferentes arquitecturas

Con base en el análisis anterior, combinado con los requisitos de almacenamiento de los K8 para admitir sistemas de aplicaciones centrales a nivel de producción (tomando servicios de datos comunes como escenarios comerciales), hemos utilizado la siguiente tabla para ordenar la arquitectura, el rendimiento y el uso compartido de recursos de almacenamiento*. escalabilidad y alto rendimiento de cada solución de almacenamiento. Disponibilidad, seguridad, dificultad de operación y mantenimiento, soporte nativo de K8** y otras capacidades se proporcionan para referencia de los lectores.

02_k8s-almacenamiento-arquitectura-comparación.png

* Se refiere a admitir una programación flexible de aplicaciones con estado entre nodos y lectura y escritura simultáneas de almacenamiento de múltiples Pods.
** Se refiere a una estrecha integración con los K8, que puede aprovechar al máximo las ventajas de los K8, como el peso ligero, la automatización, la estandarización y la agilidad.

Se puede ver que el almacenamiento nativo de K8 tiene una ventaja general al admitir aplicaciones con estado en el entorno de K8. En la actualidad, el primer almacenamiento distribuido a nivel empresarial nativo de K8 en China es IOMesh, lanzado por Zhilinghaina SmartX. IOMesh toma como núcleo el almacenamiento en bloque distribuido desarrollado independientemente por SmartX y verificado en el entorno de producción, y se basa en el modelo de implementación en contenedores. Puede integrarse perfectamente en el sistema de desarrollo, operación y mantenimiento nativo de K8 para integrar y administrar el almacenamiento. recursos en el clúster K8. Varias aplicaciones con estado que se ejecutan en el clúster K8 proporcionan recursos de almacenamiento persistentes estables y de alto rendimiento. Para obtener más información sobre la solución, puede leer el blog , ver el vídeo explicativo del producto o hacer clic para obtener la " Guía del usuario de IOMesh ".

Artículo de referencia:

1. Criterios clave para evaluar las soluciones de almacenamiento de datos de Kubernetes v4.0, GigaOm, 2023
https://research.gigaom.com/report/key-criteria-for-evaluating-kubernetes-data-storage-solutions/

2. ¿Cómo abordo la selección e implementación del almacenamiento para implementaciones de contenedores y Kubernetes?, Gartner, 2022
https://www.gartner.com/document/4013517

Supongo que te gusta

Origin blog.csdn.net/weixin_43696211/article/details/132603740
Recomendado
Clasificación