Explicación de la tecnología de almacenamiento: Kubernetes, contenedores y almacenamiento persistente

La contenedorización es sinónimo de desarrollo de aplicaciones nativas de la nube, y Kubernetes es clave entre las plataformas de orquestación de contenedores disponibles.

En este artículo, analizamos la contenerización, qué la define, cómo encaja Kubernetes con la contenerización, cómo se organiza Kubernetes y cómo maneja el almacenamiento persistente y la protección de datos.

También analizamos la interfaz de almacenamiento de contenedores (CSI), que proporciona un controlador de Kubernetes para vincularlo al hardware del fabricante de la matriz de almacenamiento.

Finalmente, analizamos las plataformas de administración de Kubernetes proporcionadas por los proveedores de almacenamiento clave.

¿Qué es la contenerización?

La contenedorización es una forma de virtualización, que quizás se comprenda mejor comparándola con la virtualización de servidores “tradicional”.

La virtualización de servidores (piense en VMware, Nutanix) crea una capa de hipervisor que enmascara los recursos físicos del servidor y es la ubicación en la que se ejecutan numerosos servidores lógicos conocidos como máquinas virtuales.

La contenedorización de aplicaciones elimina esa capa de hipervisor y funciona con el sistema operativo del servidor. Los contenedores encapsulan todo lo que se necesita para que se ejecute una aplicación y pueden crearse, activarse, clonarse, escalarse y extinguirse muy rápidamente.

Los contenedores son “más ligeros”, sin necesidad de hipervisor ni de múltiples iteraciones del sistema operativo de virtualización. Requieren menos recursos de servidor y son muy portátiles en entornos locales y en la nube. Eso hace que los contenedores sean muy adecuados para cargas de trabajo que experimentan picos masivos en la demanda, especialmente en la web.

Los contenedores también funcionan según el principio de microservicios, en el que la funcionalidad de aplicaciones discretas se integra en pequeñas instancias de código construidas alrededor de interfaces de programación de aplicaciones (API) que las vinculan; esto contrasta con las aplicaciones grandes y monolíticas del pasado.

Los contenedores y microservicios también son sinónimos de las metodologías iterativas de desarrollo de software de DevOps.

¿Qué es Kubernetes?

Kubernetes es un orquestador de contenedores. No es el único. También están Apache Mesos, Docker Swarm, Nomad, Red Hat OpenShift y otros. Hay AWS Elastic Container Services (ECS), Azure Kubernetes Service y Google Cloud Kubernetes en la nube. Y existen productos VMware Tanzu que gestionan Kubernetes en su entorno de virtualización.

Los orquestadores de contenedores manejan funciones como la creación, gestión, automatización, equilibrio de carga y relación con el hardware (incluido el almacenamiento) de contenedores. Están organizados, en lenguaje Kubernetes, en pods, que es una colección de uno o más contenedores.

En esta explicación, nos centraremos en Kubernetes. Como se mencionó, no es el único organizador de contenedores, pero según algunas investigaciones, es el líder abrumador del mercado con una participación de más del 97%.

¿Cómo está organizado Kubernetes?

El contenedor es la unidad básica que contiene el tiempo de ejecución y el código de la aplicación, además de dependencias, bibliotecas, etc. Los contenedores no tienen estado porque no almacenan ningún dato o información sobre estados anteriores. Son sumamente portátiles, clonables, escalables, etc. porque llevan consigo todo lo que necesitan. Esa apatridia es también un potencial talón de Aquiles, como veremos.

Los siguientes son los clústeres, que contienen pods y que alojan y administran contenedores. Estos contenedores pueden cumplir diferentes funciones (como una interfaz de usuario, una base de datos backend), pero se encuentran en el mismo nodo (es decir, un servidor) y están cerca uno del otro, por lo que se comunican rápidamente.

Más contenido para leer:  Horas de trabajo flexibles, la clave para una mayor productividad

Los nodos son máquinas físicas o VM dentro de ellos que ejecutan pods. Pueden ser nodos maestros o nodos trabajadores. Los nodos maestros son el plano de control que gestiona la implementación y el estado del clúster de Kubernetes.

Los nodos maestros componentes incluyen: el servidor API, a través del cual se lleva a cabo la interacción con el clúster; un programador que encuentra y determina los mejores nodos para ejecutar pods; el administrador del controlador, que ayuda a mantener el estado requerido del clúster, como la cantidad de réplicas que se deben mantener; y etcd, que es un almacén de valores clave que contiene el estado del clúster.

Los nodos trabajadores ejecutan contenedores con tareas delegadas por los nodos maestros. Los nodos trabajadores comprenden: Kubelets, que son la interfaz principal entre el nodo trabajador y el plano de control del nodo maestro; kube-proxy, que maneja las comunicaciones de red con los pods; y tiempo de ejecución de contenedores, que es el software que realmente ejecuta los contenedores.

¿Cuál es el desafío con el almacenamiento y Kubernetes?

En su forma más básica, el almacenamiento en Kubernetes es efímero. Eso significa que no es persistente y no estará disponible después de que se elimine el contenedor. El almacenamiento nativo de Kubernetes se escribe en el contenedor y se crea a partir de un espacio temporal temporal en la máquina host que solo existe durante la vida útil del pod de Kubernetes.

Pero, por supuesto, las aplicaciones empresariales requieren almacenamiento persistente y Kubernetes tiene formas de lograrlo.

¿Cómo proporciona Kubernetes almacenamiento persistente?

Kubernetes admite almacenamiento persistente que se puede escribir en una amplia gama de formatos locales y en la nube, incluidos archivos, bloques y objetos, y en servicios de datos, como bases de datos.

Se puede hacer referencia al almacenamiento desde el interior del pod, pero esto no se recomienda porque viola el principio de portabilidad. En cambio, Kubernetes utiliza volúmenes persistentes (PV) y reclamaciones de volumen persistente (PVC) para definir los requisitos de almacenamiento y aplicaciones.

Los fotovoltaicos y los PVC desacoplan el almacenamiento y permiten que una cápsula lo consuma de forma portátil.

Un PV, que no es portátil entre clústeres de Kubernetes, define el almacenamiento en el clúster que ha sido perfilado según sus parámetros de rendimiento y capacidad. Define un volumen de almacenamiento persistente y contiene detalles como clase de costo/rendimiento, capacidad, complemento de volumen utilizado, rutas, direcciones IP, nombres de usuario y contraseñas, y qué hacer con el volumen después de su uso.

Mientras tanto, un PVC describe una solicitud de almacenamiento para la aplicación que se ejecutará en Kubernetes. Los PVC son portátiles y viajan con la aplicación en contenedores. Kubernetes determina qué almacenamiento está disponible a partir de PV definidos y le vincula el PVC.

Los PVC se definen en el archivo de configuración YAML del pod para que el reclamo viaje con él y pueda especificar la capacidad, el rendimiento del almacenamiento, etc.

StatefulSet duplica los PVC para el almacenamiento persistente entre pods, entre otras cosas.

Una colección de PV se puede agrupar en una clase de almacenamiento, que especifica el complemento de volumen de almacenamiento utilizado, el proveedor externo (como la nube) y el nombre del controlador CSI (ver más abajo).

Más contenido para leer:  La capacidad gigabit de Virgin Media O2 cubre más de la mitad del espacio de red del Reino Unido

A menudo, una clase de almacenamiento se marcará como “predeterminada”, por lo que no es necesario invocarla mediante el uso de un PVC, o para que se pueda invocar si un usuario no especifica una clase de almacenamiento en un PVC. También se puede crear una clase de almacenamiento para datos antiguos a los que es posible que sea necesario acceder mediante aplicaciones en contenedores.

¿Qué es el CSI?

CSI es una interfaz de almacenamiento de contenedores. CSI describe controladores para Kubernetes y otros orquestadores de contenedores proporcionados por proveedores de almacenamiento para exponer su capacidad a aplicaciones en contenedores como almacenamiento persistente.

Al momento de escribir este artículo, hay más de 130 controladores CSI disponibles para almacenamiento de archivos, bloques y objetos en formatos de hardware y nube.

CSI proporciona una interfaz que define la configuración del almacenamiento persistente externo al orquestador, su entrada/salida (E/S) y funciones avanzadas como instantáneas y clonación.

Se puede utilizar un volumen CSI para definir los PV. Por ejemplo, puede crear PV y clases de almacenamiento que apunten a almacenamiento externo definido por un complemento CSI, con el aprovisionamiento activado por un PVC que lo especifique.

¿Qué ofrecen los proveedores de almacenamiento para ayudar con el almacenamiento y la protección de datos del K8?

Los componentes de Kubernetes son numerosos y modulares. Quizás no sea sorprendente que los proveedores de matrices de almacenamiento hayan aprovechado la posibilidad de incluir una capa de gestión adicional sobre eso y simplificar la provisión de servicios de almacenamiento y datos para los administradores. Aquí, analizamos los productos de los proveedores de almacenamiento en ese espacio.

Los requisitos aquí varían desde la configuración de recursos según el perfil de almacenamiento requerido por las aplicaciones, así como el origen y el destino de las copias de seguridad y otras funciones de protección de datos, todo lo cual puede cambiar rápidamente.

Dell EMC, IBM, HPE, Hitachi, NetApp y Pure Storage tienen plataformas de administración de contenedores que permiten a los desarrolladores escribir los requisitos de almacenamiento y protección de datos en código más fácilmente y al mismo tiempo permiten que las funciones de TI tradicionales, como la protección de datos, se administren sin habilidades profundas.

Todos utilizan controladores CSI de alguna forma para ofrecer aprovisionamiento y administración de almacenamiento y respaldo en su propio entorno de almacenamiento y, en algunos casos, en cualquier entorno, incluidos los de la nube.

¿Qué hacen los módulos de almacenamiento de contenedores de Dell?

Los módulos de almacenamiento de contenedores (CSM) de Dell se basan en controladores CSI. Mientras que los controladores CSI básicos ayudan a aprovisionar, eliminar, asignar y desasignar volúmenes de datos, los CSM de Dell ayudan a la automatización, el control y la simplicidad.

Varios CSM permiten a los clientes acceder a funciones de la matriz de almacenamiento a las que normalmente no tendrían acceso. Estos complementos de CSM tienen como objetivo funcionalidades o servicios de datos específicos, incluida la replicación, la observabilidad, la resiliencia, la movilidad de aplicaciones (clonación), las instantáneas, la autorización (es decir, el acceso a recursos de almacenamiento) y el cifrado.

Los CSM de Dell permiten a los clientes preparar los contenedores de almacenamiento existentes al proporcionar acceso a los arreglos de almacenamiento de Dell en lugar de utilizar software adicional para acceder a esas funciones.

Más contenido para leer:  Nokia y Google Cloud colaboran para acelerar las aplicaciones 5G con API de telecomunicaciones

¿Qué hace Red Hat Openshift de IBM por los contenedores?

La adquisición de Red Hat por parte de IBM en 2018 le dio la cartera OpenShift, que es el sitio principal de sus esfuerzos de gestión de contenedores.

OpenShift utiliza notificaciones de volumen persistente (PVC) de Kubernetes a través de controladores CSI para permitir a los desarrolladores solicitar recursos de almacenamiento. Los PVC pueden acceder a volúmenes persistentes desde cualquier lugar de la plataforma OpenShift.

OpenShift Container Platform admite muchos complementos PV populares en el sitio y en la nube, incluidos Amazon EBS, Azure Files, Azure Managed Disks, Google Cloud Persistent Disk, Cinder, iSCSI, Local Volume, NFS y VMware vSphere.

Nutanix, proveedor de infraestructura hiperconvergente, también utiliza OpenShift como plataforma de implementación de contenedores.

¿Cómo ayuda Ezmeral Runtime Enterprise de HPE a gestionar los contenedores?

HPE ha desarrollado su propia plataforma de gestión de Kubernetes, HPE Ezmeral Runtime Enterprise, que se puede implementar a través del entorno Synergy de HPE.

Es una plataforma de software diseñada para implementar aplicaciones nativas y no nativas de la nube utilizando Kubernetes y puede ejecutarse en una infraestructura básica o virtualizada, en las instalaciones o en cualquier nube. Va más allá de la simple implementación de aplicaciones, con gestión de datos incluida hasta el borde.

Ezmeral ofrece almacenamiento persistente de contenedores y automatización de configuración para configurar HA, respaldo y restauración de contenedores, validación de seguridad y monitoreo para minimizar las tareas administrativas manuales.

¿Qué hace Hitachi Kubernetes Service para las implementaciones de contenedores?

En 2021, Hitachi se unió a la lucha por el almacenamiento de Kubernetes con Hitachi Kubernetes Service (HKS), que permite a los clientes gestionar el almacenamiento de contenedores en centros de datos locales y las tres principales nubes públicas.

HKS permite la implementación de Hitachi Unified Compute Platform como una nube privada administrada por Kubernetes en entornos de nube locales e híbridas.

HKS utiliza controladores CSI para gestionar volúmenes persistentes directamente en los nodos de Kubernetes, lo que lo distingue de las ofertas nativas de contenedores de otros proveedores.

¿Cómo ayuda NetApp Astra a implementar y gestionar contenedores?

Astra de NetApp es su plataforma de gestión de contenedores. Comprende una serie de componentes, incluido Astra Control, para la gestión del ciclo de vida de las aplicaciones Kubernetes; Astra Control Service, para la gestión de datos de cargas de trabajo de Kubernetes en nubes públicas; Astra Control Center para cargas de trabajo de Kubernetes locales; y Astra Trident para el aprovisionamiento y gestión de almacenamiento CSI. También está Astra Automation y sus API y SDK para flujos de trabajo de Astra.

¿Qué funcionalidad proporciona Pure Storage Portworx a las implementaciones de contenedores?

Portworx es la plataforma de contenedores de Pure Storage y le brinda configuración de rendimiento, conectividad y aprovisionamiento nativo de contenedores para clústeres de Kubernetes. Puede descubrir almacenamiento y proporcionar capacidad persistente para aplicaciones empresariales con acceso a bloques, archivos y objetos y almacenamiento en la nube.

Los clientes pueden utilizar Portworx para crear grupos de almacenamiento, gestionar el aprovisionamiento y proporcionar funcionalidades avanzadas como copia de seguridad, recuperación ante desastres, seguridad, escalado automático y migración de almacenamiento local o en la nube en los principales proveedores de nube.

Nuestro objetivo fué el mismo desde 2004, unir personas y ayudarlas en sus acciones online, siempre gratis, eficiente y sobre todo fácil!

¿Donde estamos?

Mendoza, Argentina

Nuestras Redes Sociales