Info

¿Qué son los contenedores, Kubernetes y las tecnologías nativas cloud?

¿Qué significa ser "nativo cloud"?

La definición de "nativo cloud" se ha vuelto ambigua, usándose el término en muy diferentes contextos según las empresas llevan a cabo grandes proyectos de transformación digital en busca de una mayor agilidad, escalabilidad y eficiencia de negocio.

Pero, ¿qué significa realmente? En resumen, "nativo cloud" implica un nuevo grado de abstracción de software, junto con un conjunto de tecnologías, herramientas y procesos dedicados que transforman la forma en la que se pueden construir, implementar y gestionar las aplicaciones.

Entre las características básicas de las aplicaciones nativas cloud se incluyen las siguientes:

  1. El código se empaqueta como contenedor
  2. Diseñado como colecciones de microservicios
  3. Los desarrolladores y las operaciones de TI trabajan juntos en un entorno ágil y estrechamente integrado
  4. Implementado y gestionado en una infraestructura elástica de cloud
  5. Asignación de recursos de infraestructura automatizada y basada en políticas

Ventajas para empresas de un sistema "nativo cloud"

Las empresas que se embarcan en un viaje hacia lo "nativo cloud" están adoptando contenedores y Kubernetes, junto con diferentes tecnologías comerciales y de código abierto de un amplio ecosistema nativo cloud.

Los contenedores y las tecnologías nativas cloud permiten a las empresas acelerar el desarrollo de aplicaciones, actualizar las aplicaciones sin interrupciones, escalarlas de manera eficiente y transferirlas fácilmente a diferentes entornos. En última instancia, estas funcionalidades se traducen en una mayor agilidad de negocio y aumenta la ventaja competitiva.

Los contenedores resuelven algunos problemas críticos para las empresas: libertad para la ejecución en cualquier lugar, un paquete de software sólido para desarrolladores, actualizaciones de servicios, escalabilidad, disponibilidad y eficiencia de recursos en un paquete independiente de proveedor.  Kubernetes proporciona una capa de infraestructura que el departamento de TI puede operar a escala de forma programática y repetible, en contraposición a la gestión práctica que es típica en la empresa.  Dado que Kubernetes se puede implementar on-premise y en la cloud pública, proporciona un modelo operativo común en todos los entornos.  Esto hace de Kubernetes una plataforma ideal para empresas que operan en ambos.

Arquitectura nativa cloud

La arquitectura nativa cloud utiliza contenedores y Kubernetes para construir aplicaciones como conjuntos de piezas más pequeñas combinables que se escalan de manera eficiente, se actualizan de manera ininterrumpida y migran sin problemas a otros entornos. Es una tecnología rentable, con una mejor seguridad y automatización flexible.

El stack de Kubernetes on-premise

Vamos a explorar las diferentes capas del stack de Kubernetes on-premise, desde la infraestructura sobre la que se ejecuta Kubernetes hasta los servicios que se ejecutan sobre Kubernetes y que los desarrolladores pueden aprovechar para acelerar la entrega de aplicaciones.  Tenga en cuenta que algunos componentes se pueden incluir en varias partes del stack.  Por ejemplo, una distribución de Kubernetes puede incluir un registro de contenedores como Harbor o Quay.  Como alternativa, se puede ofrecer un registro de contenedores como servicio alojado o administrado para su uso con cualquier distribución.

Plataforma de procesamiento

Kubernetes es muy flexible en cuanto a dónde se puede implementar, gracias a que la innovación está amoliando las opciones de cómo y dónde se puede operar.  Por lo general, Kubernetes requiere un mínimo de 3 nodos con conectividad de red completa entre ellos y almacenamiento conectado.  Hoy en día, Kubernetes se ejecuta más comúnmente sobre una infraestructura virtual como VMware.  Los equipos físicos y la HCI son otras dos opciones comunes.

Las capacidades adicionales pueden facilitar el aprovisionamiento y el funcionamiento de un clúster Kubernetes. Las infraestructuras controladas mediante API (por ejemplo, Cluster API, Terraform, etc.) facilitan el aprovisionamiento y la conexión de nuevos nodos.  Los hipervisores personalizados pueden ofrecer aislamiento de la carga de trabajo para conectar los agujeros de seguridad en los contenedores.  Un equilibrador de carga fuera del clúster de Kubernetes es útil para hacer que las cargas de trabajo estén disponibles y reubicarlas y escalarlas dinámicamente. Algunas cargas de trabajo pueden beneficiarse de hardware personalizado, como GPUs o TPUs.

Distribuciones de Kubernetes

Desde el crecimiento explosivo de Kubernetes tras su lanzamiento en 2015, existen más de 100 distribuciones de Kubernetes y plataformas alojadas de gigantes tecnológicos y startups por igual.  Estas empresas toman el código central de Kubernetes y lo combinan con otros proyectos como un stack de redes, herramientas de gestión de clústeres, registro, supervisión, etc., para generar una distribución.

Servicios de contenedores

Un entorno útil de Kubernetes requiere servicios de infraestructura adicionales más allá de Kubernetes. A veces se incluyen en las distribuciones o se añaden como servicios independientes, e incluyen algunos elementos básicos como un registro de contenedores, Ingress, equilibrador de carga, almacenes secretos o gestor de certificados, por nombrar algunos.

Según cada vez más empresas construyen e implementan aplicaciones en Kubernetes, hay muchos servicios centrales de los que dependen que también se ejecutan normalmente en Kubernetes.  Algunos ejemplos son las bases de datos (por ejemplo, Redis, Postgres), Pub Sub (Kafka), indexación (ElasticSearch), servicios de CI/CD (Gitlab, Jenkins) y almacenamiento (Portworx, MayaData, Minio, Red Hat).

Muchas empresas han desarrollado productos que gestionarán o darán soporte a estas aplicaciones que se ejecutan en la distribución de Kubernetes elegida por el cliente. Lo más notable es probablemente Azure Arc Data Services de Microsoft, que proporciona Postgres y MS SQL como servicios gestionados en entornos de clientes, pero hay muchos otros, como Confluent for Kafka, Crunchy Data for Postgres, Redis Enterprise for Redis, Percona, Elasticsearch, Minio, Mayadata, etc.

Contenedores

Los contenedores son la unidad atómica del software nativo cloud. Un contenedor comprende un fragmento de código empaquetado con todas sus dependencias (binarios, bibliotecas, etc.) y se ejecuta como proceso aislado. Esto se traduce en un nuevo nivel de abstracción. Al igual que una máquina virtual (VM) abstrae los recursos de procesamiento del hardware subyacente, un contenedor abstrae una aplicación del sistema operativo subyacente.

Los contenedores se diferencian de las máquinas virtuales en varios aspectos importantes. Son significativamente más pequeños en cuanto a recursos, más rápidos de poner en marcha y mucho más fáciles de transportar entre entornos cloud. A diferencia de las máquinas virtuales, son de naturaleza efímera.

Los contenedores allanan el camino para la arquitectura de software de microservicios. Aunque las aplicaciones tradicionales son de naturaleza monolítica, las aplicaciones basadas en microservicios se construyen como conjuntos de piezas (servicios) más pequeñas combinables que pueden escalarse independientemente y permitir actualizaciones sin interrupciones. Un servicio comprende uno o más contenedores que realizan una función común.

Las aplicaciones basadas en contenedores/microservicios permiten prácticas de desarrollo de software optimizadas y aceleradas que requieren una integración y coordinación más estrictas entre los desarrolladores y las operaciones de TI, conocidas como DevOps.

Virtual Machines (VMs) vs containers

Gráfico 1: Comparación de máquinas virtuales y contenedores

Kubernetes

Debido a que las aplicaciones contenerizadas se prestan a entornos distribuidos y utilizan recursos de procesamiento, de almacenamiento y de red de manera diferente a las aplicaciones tradicionales, requieren una capa de infraestructura dedicada a orquestar cargas de trabajo contenerizadas.

Kubernetes se ha erigido como el organizador de contenedores dominante, y a menudo se lo considera el sistema operativo de la cloud. Es una plataforma portátil, extensible y de código abierto para la gestión de cargas de trabajo y servicios en contenedores, que facilita tanto la configuración declarativa como la automatización.

Específicamente, Kubernetes:

  • asigna contenedores a equipos (programación)

  • arranca los contenedores especificados a través del tiempo de ejecución del contenedor

  • se ocupa de las actualizaciones, las reversiones y la naturaleza constantemente cambiante del sistema

  • responde a fallos (caídas del contenedor, etc.)

  • crea recursos de clúster como descubrimiento de servicios, redes inter-VM, entrada/salida de clústeres, etc.

Kubernetes está diseñado para ofrecer escalabilidad, disponibilidad, seguridad y portabilidad. Optimiza el coste de la infraestructura, distribuyendo las cargas de trabajo entre los recursos disponibles. Todos los componentes de un clúster Kubernetes también pueden configurarse para una alta disponibilidad.

La funcionalidad de Kubernetes evoluciona rápidamente como resultado de contribuciones continuas de su activa comunidad global, permitiendo ahora la existencia de una amplia variedad de distribuciones de Kubernetes disponibles para los usuarios. Al tiempo que los usuarios están mejor servidos por las distribuciones certificadas por CNCF (la conformidad permite la interoperabilidad), la automatización inteligente en torno a las características de gestión del ciclo de vida de Kubernetes, junto con la fácil integración de las capacidades de almacenamiento, redes, seguridad y supervisión, son fundamentales para los entornos nativos cloud de nivel de producción.

Desafíos de las tecnologías "nativas cloud"

Las tecnologías nativas cloud son la nueva moneda de cambio para la agilidad y la innovación empresarial, pero su configuración, despliegue y gestión suponen un desafío en cualquier tipo de empresa. En primer lugar, Kubernetes y su ecosistema de tecnologías nativas cloud se encuentran en la base y evolucionan rápidamente. Además, la infraestructura tradicional no está diseñada para la forma en que Kubernetes y los contenedores utilizan los recursos de TI. Este supone un impedimento importante para los desarrolladores de software, que a menudo requieren recursos bajo demanda, además de servicios fáciles de usar para sus aplicaciones nativas cloud. Por último, todas las empresas terminan empleando una mezcla de entornos Kubernetes locales y públicos basados en la cloud, pero beneficiarse de la flexibilidad de la multicloud depende de poder gestionar y supervisar eficazmente todas las implementaciones.

Buenas prácticas de un sistema "nativo cloud"

Construir un stack de Kubernetes empresarial en el centro de datos es una tarea importante para los equipos de operaciones de TI. Es esencial ejecutar Kubernetes y las aplicaciones contenerizadas en una infraestructura resiliente y capaz de escalar con capacidad de respuesta para permitir un sistema dinámico y distribuido.

La infraestructura hiperconvergente (HCI) de Nutanix es la base de infraestructura ideal para las cargas de trabajo nativas cloud que se ejecutan en Kubernetes a escala. Nutanix ofrece una mejor resiliencia tanto para los componentes de la plataforma Kubernetes como para los datos de las aplicaciones, y una escalabilidad superior a la infraestructura física. Nutanix también simplifica la gestión del ciclo de vida de la infraestructura y almacenamiento persistente para los contenedores con estado, eliminando algunos de los mayores desafíos a los que se enfrentan las empresas a la hora de desplegar y gestionar la infraestructura nativa cloud.

Soluciones y productos relacionados

Motor de Kubernetes de Nutanix

Acelere su camino hacia una Kubernetes lista para producción y haga más sencilla la gestión del ciclo de vida.

HCI para Kubernetes

Nutanix HCI es la base de infraestructura ideal para Kubernetes y aplicaciones nativas de la nube.

Almacenamiento persistente para aplicaciones nativas cloud

Los servicios de datos de Nutanix y CSI amplían su sencillez a la configuración y gestión del almacenamiento persistente en Kubernetes.

Explore nuestros principales recursos

Pruebe Nutanix

Pruebe el motor Nutanix Kubernetes

Construya un stack de multicloud híbrida de primera clase con Red Hat y Nutanix

Introdúzcase en la infraestructura hiperconvergente (HCI)

Comience hoy mismo con Nutanix