¿Sabías que…?: Kubernetes y Docker- Entendiendo los contenedores y la orquestación

Con esta entrada vamos a intentar profundizar un poco más en cómo Docker y Kubernetes están cambiando el desarrollo de las aplicaciones y cómo estas tecnologías de contenedores trabajan conjuntamente.

Si os habéis mantenido al día con las últimas tendencias en el desarrollo de software, hay dos términos que sin duda se repiten una y otra vez: Docker y Kubernetes, que son abreviaturas de «contenedores y orquestación«.

¿Por qué son importantes Docker y Kubernetes? ¿Cómo están cambiando el desarrollo de software y qué papel juegan cada uno de ellos en el proceso?

Los contenedores Docker han ayudado a racionalizar el proceso de mover aplicaciones a través del desarrollo, las pruebas y la producción, mientras que Docker y Kubernetes han ayudado a reinventar la forma en que se construyen y despliegan las aplicaciones, como colecciones de microservicios en lugar de pilas monolíticas.

Docker y los contenedores

Los contenedores, compatibles con Linux, Windows y otros sistemas operativos modernos, permiten que el software se ejecute en mini-entornos autónomos que están aislados del resto del sistema. Los contenedores se han comparado con las máquinas virtuales, pero no lo son; son mucho más ágiles, más rápidos de iniciar y detener y mucho más flexibles y portátiles. Debido a que los contenedores se pueden girar hacia arriba o hacia abajo, ampliar o reducir en segundos, hacen que sea más fácil ejecutar aplicaciones en entornos elásticos como la nube.

Linux y otros sistemas operativos han soportado aplicaciones en contenedores durante muchos años, pero trabajar con contenedores no era fácil del todo. Docker, tanto en sus encarnaciones de código abierto como comerciales, es un software que hace que los contenedores sean un producto fácil de usar y amigable para el desarrollador. Docker proporciona un conjunto común de herramientas y metáforas para contenedores para que pueda empaquetar aplicaciones en imágenes de contenedores que se pueden implementar y reutilizar fácilmente en su propia organización o en otro lugar.

En resumidas cuentas, Docker hace que sea más fácil crear imágenes de contenedores, versionarlas, compartirlas, moverlas e implementarlas en hosts compatibles con Docker como contenedores en ejecución.

¿Cuándo usar Docker y los contenedores?

Docker y contenedores son los más adecuados para cuando se trata de cargas de trabajo que deben tener una o más de las siguientes cualidades:

  • Escalabilidad elástica: No sabe cuántas instancias de una aplicación necesitará ejecutar para satisfacer la demanda. Una aplicación o servicio en contenedores se puede escalar para satisfacer la demanda mediante la implementación de menos o más instancias de sus contenedores.
  • Aislamiento. No deseamos que la aplicación interfiera con otras. Tal vez estemos ejecutando varias versiones de una misma aplicación en paralelo para satisfacer las diferentes revisiones de una API. O tal vez deseamos mantener limpio el sistema subyacente que nunca está de más.
  • Portabilidad. Quizás lo que necesitamos es ejecutar esta aplicación en una variedad de entornos, y requiere que cada configuración sea reproducible. Los contenedores le permiten empaquetar todo el entorno de tiempo de ejecución de su aplicación, haciendo que esta sea fácil de implementar en cualquier lugar donde encuentre un host compatible con Docker: un escritorio de desarrollador, una máquina de prueba de control de calidad ya sea en la nube o local.

Kubernetes y la orquestación de contenedores

Los contenedores están diseñados, como acabamos de ver, principalmente para aislar procesos o aplicaciones entre sí y del sistema subyacente. Crear e implementar contenedores individuales es fácil. Pero ¿qué sucede si deseamos ensamblar múltiples contenedores (en una base de datos, un front-end web, un back-end computacional) en una aplicación grande que se puede administrar como una unidad, sin tener que preocuparse por implementar, conectar, administrar y escalar cada uno de esos contenedores por separado? Necesitamos sí o sí una forma de orquestar todas las partes en un todo funcional.

Este es precisamente el trabajo de Kubernetes. Si los contenedores son pasajeros en un crucero, Kubernetes es el capitán.

Kubernetes, basado en proyectos creados en Google, proporciona una forma de automatizar la implementación y administración de aplicaciones de contenedores múltiples en varios hosts, sin tener que administrar cada contenedor directamente. El desarrollador describe el diseño de la aplicación en varios contenedores, incluidos detalles como cómo cada contenedor utiliza redes y almacenamiento. Kubernetes se encarga del resto en tiempo de ejecución. También maneja de gestión de detalles complicados como secretos y configuraciones de aplicaciones.

Kubernetes requiere una cierta cantidad de experiencia para usar bien, aunque es mucho más una solución llave en mano de lo que solía ser. Parte del progreso en la facilidad de uso se debe a las recetas fácilmente disponibles para aplicaciones comunes (gráficos Helm(; algunos se deben a una gran cantidad de distribuciones de Kubernetes producidas por firmas de marca (Red Hat, Canonical, Docker) que trabajan de la mano con los conjuntos de aplicaciones y marcos de desarrollo más populares.

¿Cuándo debemos usar Kubernetes y la orquestación de contenedores?

Las aplicaciones en contenedores simples que sirven a un pequeño número de usuarios generalmente no requieren orquestación, y mucho menos Kubernetes. Pero si una aplicación tiene más de un nivel trivial de funcionalidad o un número trivial de usuarios, se hace difícil no reinventar la rueda proporcionada por los sistemas de orquestación. Aquí hay algunas reglas generales para determinar cuándo la orquestación debe estar presente:

  • Tus aplicaciones son complejas. Cualquier aplicación que involucre más de dos contenedores probablemente cumpla con los requisitos. Dicho esto, las aplicaciones modestas que sólo atienden a un pequeño número de usuarios podrían organizarse a través de otro tipo de solución menos potente que Kubernetes, como el modo enjambre que Docker proporciona.
  • Sus aplicaciones tienen altas demandas de escala y resistencia. Kubernetes y otros orquestadores le permiten equilibrar cargas y girar contenedores para satisfacer la demanda de manera declarativa, describiendo el estado deseado del sistema en lugar de codificar manualmente las reacciones a las condiciones cambiantes.
  • Desea aprovechar al máximo las técnicas modernas de CI/CD. Los sistemas de orquestación admiten patrones de implementación para aplicaciones que usan implementación blue/green o actualizaciones continuas.

Espero que con esta entrada os haya quedado algo más claro lo que significan estos términos y para qué sirven. Llegará un día en el que Docker y Kubernetes dejarán paso a soluciones más amigables, sin embargo hasta el momento es lo que hay y hay que saber qué son.

0 0 votes
Article Rating
Subscribe
Notify of
guest
0 Comments
Inline Feedbacks
View all comments

Relacionados

Tendencias

Más leídos

Se habla de..

0
Would love your thoughts, please comment.x
()
x